commit 7c5aef6eb2cc265bf634fbc9bcfb007874634449 from: int16h date: Thu Dec 4 01:29:40 2025 UTC Fixed filetest failures (though it mostly hangs at end); minor fixes for initrd->rootfs debug logging 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; } }