diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs index 61340a65a6..63bfe87508 100644 --- a/src/syscall/fs.rs +++ b/src/syscall/fs.rs @@ -855,6 +855,7 @@ pub fn sys_read(fd: FileHandle, buf: UserSliceWo, token: &mut CleanLockToken) -> Ok(bytes_read) } pub fn sys_write(fd: FileHandle, buf: UserSliceRo, token: &mut CleanLockToken) -> Result { + let result = (|| { let (bytes_written, desc_arc, desc) = file_op_generic_ext(fd, token, |scheme, desc_arc, desc, token| { let offset = if desc.internal_flags.contains(InternalFlags::POSITIONED) { @@ -879,4 +880,10 @@ pub fn sys_write(fd: FileHandle, buf: UserSliceRo, token: &mut CleanLockToken) - guard.io_syscw = guard.io_syscw.saturating_add(1); guard.io_write_bytes = guard.io_write_bytes.saturating_add(bytes_written as u64); Ok(bytes_written) + })(); + if result.is_err() && fd.get() <= 10 { + let name = context::current().read(token.token()).name; + info!("sys_write fd={} ctx='{}' err={:?}", fd.get(), name, result.as_ref().err()); + } + result }