summaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorPaulo Alcantara <pc@manguebit.org>2026-09-27 18:56:55 -0300
committerPaulo Alcantara <pc@manguebit.org>2026-09-30 14:24:16 -0300
commit75aa4b4d557114276bb72e19a9bce5cb27b5e4b8 (patch)
treec39b1d66d3dec34882dbcc02a073dbe4c786860b /samples
parentdd05add7b2b6004c5fa3a1f276f56d8668f86b65 (diff)
downloadlinux-stable-75aa4b4d557114276bb72e19a9bce5cb27b5e4b8.tar.gz
linux-stable-75aa4b4d557114276bb72e19a9bce5cb27b5e4b8.zip
smb: client: distinguish real EOF from a stale remote_i_size on read
smb2_readv_callback() sets NETFS_SREQ_HIT_EOF whenever a short read lines up with netfs_read_remote_i_size(inode), the server's EOF as the client currently believes it. That belief can be stale: after a lease downgrade and handle reopen, the tracked remote_i_size can sit below the client's own i_size while an extending write hasn't reached the server yet. A read in that gap comes back short for a reason that has nothing to do with the file's real size, but was still marked HIT_EOF, and netfs reports a short read for it as-is. Only treat it as real EOF when the position is also at or past the client's own i_size; otherwise mark it NETFS_SREQ_CLEAR_TAIL instead, which tells netfs the shortfall is safe to zero-fill rather than report as a short read. This is what fsx (generic/363) sees as "short read: 0x0 bytes instead of 0x<n>" against a Windows server. Fixes: 1da29f2c39b6 ("netfs, cifs: Fix handling of short DIO read") Reviewed-by: David Howells <dhowells@redhat.com> Reviewed-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Paulo Alcantara <pc@manguebit.org> Cc: Christian Brauner <brauner@kernel.org> Cc: Matthew Wilcox <willy@infradead.org> Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com> Cc: Shyam Prasad N <sprasad@microsoft.com> Cc: Tom Talpey <tom@talpey.com> Cc: Bharath SM <bharathsm@microsoft.com> Cc: stable@vger.kernel.org
Diffstat (limited to 'samples')
0 files changed, 0 insertions, 0 deletions