Commit Diff


commit - 2257f59c3fcad7f544c256ad2c936495981a99cd
commit + 7c5aef6eb2cc265bf634fbc9bcfb007874634449
blob - de0f26dbb2bb2212631b353aaacf781ef3e337a2
blob + ae6b92d5baf6e9b1d82833ce41806fbcfc8b5a55
--- kernel/user/netd_server.c
+++ kernel/user/netd_server.c
@@ -29,6 +29,7 @@ user_netd_server_prepare(void)
 {
 	struct elf_program prog;
 	struct elf_image img;
+	bool from_initrd = false;
 
 	if (netd_ready)
 		return 0;
@@ -40,6 +41,8 @@ user_netd_server_prepare(void)
 #endif
 		return -1;
 	}
+	from_initrd = true;
+	(void)from_initrd; /* silence unused in non-debug builds */
 	if (elf_load_program(&img, &prog) != 0) {
 #ifdef LENIX_DEBUG
 		printk("* user-netd: ELF load failed\n");
blob - 42db49d70dbb0c0689de3419e9d3a647f8413dfa
blob + 11e82fd434dc1869dbd79fba712a494e7f637107
--- kernel/user/pci_server.c
+++ kernel/user/pci_server.c
@@ -29,6 +29,7 @@ user_pci_server_prepare(void)
 {
 	struct elf_program prog;
 	struct elf_image img;
+	bool from_initrd = false;
 
 	if (pci_ready)
 		return 0;
@@ -40,6 +41,8 @@ user_pci_server_prepare(void)
 #endif
 		return -1;
 	}
+	from_initrd = true;
+	(void)from_initrd; /* silence unused in non-debug builds */
 	if (elf_load_program(&img, &prog) != 0) {
 #ifdef LENIX_DEBUG
 		printk("* pci-daemon: ELF load failed\n");
blob - 4eb2231861efe2f0ce202e732d959d1463bc3771
blob + e78341ae506b0b9835aa5c14dec777cca5b4786a
--- kernel/user/pty_supervisor.c
+++ kernel/user/pty_supervisor.c
@@ -30,6 +30,7 @@ user_pty_supervisor_prepare(void)
 {
 	struct elf_program prog;
 	struct elf_image img;
+	bool from_initrd = false;
 
 	if (pty_ready)
 		return 0;
@@ -41,6 +42,8 @@ user_pty_supervisor_prepare(void)
 #endif
 		return -1;
 	}
+	from_initrd = true;
+	(void)from_initrd; /* suppress unused in non-debug builds */
 	if (elf_load_program(&img, &prog) != 0) {
 #ifdef LENIX_DEBUG
 		printk("* ptyctl: ELF load failed\n");
blob - ae0079299e09c8ef2bf76cc3f7eb5c71fe508419
blob + 6317879ae6b719d91dda616a695627e31ee70225
--- kernel/user/sock_tcp_server.c
+++ kernel/user/sock_tcp_server.c
@@ -29,6 +29,7 @@ user_sock_tcp_server_prepare(void)
 {
 	struct elf_program prog;
 	struct elf_image img;
+	bool from_initrd = false;
 
 	if (sock_tcp_ready)
 		return 0;
@@ -40,6 +41,8 @@ user_sock_tcp_server_prepare(void)
 #endif
 		return -1;
 	}
+	from_initrd = true;
+	(void)from_initrd; /* silence unused in non-debug builds */
 	if (elf_load_program(&img, &prog) != 0) {
 #ifdef LENIX_DEBUG
 		printk("* user-sock.tcp: ELF load failed\n");
blob - 68d954181b0f0d87e1ad6669edb160465c5993df
blob + af341b07ed902896242ddf3b2f9581a03a3ee57a
--- kernel/user/sock_udp_server.c
+++ kernel/user/sock_udp_server.c
@@ -29,6 +29,7 @@ user_sock_udp_server_prepare(void)
 {
 	struct elf_program prog;
 	struct elf_image img;
+	bool from_initrd = false;
 
 	if (sock_udp_ready)
 		return 0;
@@ -40,6 +41,8 @@ user_sock_udp_server_prepare(void)
 #endif
 		return -1;
 	}
+	from_initrd = true;
+	(void)from_initrd; /* silence unused in non-debug builds */
 	if (elf_load_program(&img, &prog) != 0) {
 #ifdef LENIX_DEBUG
 		printk("* user-sock.udp: ELF load failed\n");
blob - d6bbf7f2a026bd7663b9c37cfb2458759c21c19f
blob + 768c4f6a04501c3621e0023a3e78238a919658dd
--- servers/block/virtio-blk/main.c
+++ servers/block/virtio-blk/main.c
@@ -731,8 +731,14 @@ virtio_blk_transfer(struct virtio_blk_driver *drv, boo
 				spins = 0;
 				continue;
 			}
-			if (spins > SPIN_LIMIT) {
+			if (spins > SPIN_LIMIT * 10) {
 				log_line(LOG_PREFIX "transfer timeout waiting for used ring");
+				log_hex16(LOG_PREFIX "last_used_idx ", drv->last_used_idx);
+				log_hex16(LOG_PREFIX "used->idx ", drv->used->idx);
+				log_hex8(LOG_PREFIX "status_ptr ", *drv->status_ptr);
+				/* Do NOT touch last_used_idx - that would allow next transfer to
+				 * overwrite descriptors while device is still using them.
+				 * Just return error and let caller handle it. */
 				goto out;
 			}
 		}
blob - ec91acac94649ed82ad80d533dc0f1783ab5ad12
blob + bf708e59d4666464ef48da1ba5655b227d6c3686
--- servers/fs/ext2/main.c
+++ servers/fs/ext2/main.c
@@ -609,8 +609,10 @@ ext2_allocate_block(uint32_t *allocated_block_no)
 	/* Data blocks start after the inode table */
 	first_data_block_in_group = inode_table_end;
 
+	#ifdef LENIX_DEBUG
 	printf("[ext2] allocate_block: bg_inode_table=%u, inode_table_blocks=%u, first_data_block=%u\n",
 	       inode_table_block, inode_table_blocks, first_data_block_in_group);
+	#endif
 
 	/* Scan bitmap for first free block (bit = 0) */
 	for (uint32_t i = first_data_block_in_group; i < ext2_ctx.blocks_per_group; i++) {
blob - c88e6e01ae3903be30f9f7c06931c9a778629705
blob + 5c38d771a413454cf400a92417da45e642ddfd73
--- servers/fs/vfs/main.c
+++ servers/fs/vfs/main.c
@@ -389,10 +389,12 @@ vfs_backend_close_fd(portal_handle_t portal, int32_t f
 	/*
 	 * Best-effort close: cap wait to avoid stalling VFS if the backend
 	 * never responds (e.g., first boot races). Ignore the result.
+	 * Increased timeout from 1000ms to 30000ms to handle mailbox backlog
+	 * during heavy I/O (e.g., debug logging floods console mailbox).
 	 */
 	(void)ipc_service_request_issue_timeout(&client, &fs_request_buffer,
 	    sizeof(fs_request_buffer), &fs_response_buffer,
-	    sizeof(fs_response_buffer), 1000); /* very short budget; fail fast */
+	    sizeof(fs_response_buffer), 30000); /* generous timeout for backlog */
 }
 
 static void
@@ -1289,7 +1291,11 @@ vfs_process_request(const struct ipc_vfs_request *req)
 		vfs_respond_mkfifo(req);
 		break;
 	default:
-		puts("[vfs] unknown opcode");
+		puts("[vfs] unknown opcode=");
+		vfs_write_u64(req->opcode);
+		puts(" token=");
+		vfs_write_u64(req->token);
+		puts("\n");
 		break;
 	}
 }