Hi Steve, Should cifs fallocate be flushing writes before doing the falloc? If I do the following: mount //carina/test /xfstest.test -o user=shares,pass=foobar,noperm,vers=3.0,mfsymlinks,actimeo=0 /usr/sbin/xfs_io -f -t \ -c "pwrite -S 0x41 0 4096" -c "pwrite -S 0x42 4096 4096" -c "fzero 0 4096" \ -c "pread 0 8192" \ /xfstest.test/008.7067 The packet trace shows: 25 0.289099336 192.168.6.2 -> 192.168.6.1 SMB2 414 Create Request File: ;GetInfo Request FS_INFO/FileFsFullSizeInformation;Close Request 26 0.292164924 192.168.6.1 -> 192.168.6.2 SMB2 510 Create Response File: ;GetInfo Response;Close Response 27 0.292444124 192.168.6.2 -> 192.168.6.1 SMB2 174 GetInfo Request FILE_INFO/SMB2_FILE_ALL_INFO File: 008.7067 28 0.292716736 192.168.6.1 -> 192.168.6.2 SMB2 260 GetInfo Response 29 0.293018017 192.168.6.2 -> 192.168.6.1 SMB2 414 Create Request File: ;GetInfo Request FS_INFO/FileFsFullSizeInformation;Close Request 30 0.295730538 192.168.6.1 -> 192.168.6.2 SMB2 510 Create Response File: ;GetInfo Response;Close Response 31 0.321638749 192.168.6.2 -> 192.168.6.1 SMB2 206 Ioctl Request FSCTL_SET_ZERO_DATA File: 008.7067 32 0.321862497 192.168.6.1 -> 192.168.6.2 SMB2 182 Ioctl Response FSCTL_SET_ZERO_DATA File: 008.7067 33 0.334313914 192.168.6.2 -> 192.168.6.1 SMB2 183 Read Request Len:4096 Off:0 File: 008.7067 34 0.334772295 192.168.6.1 -> 192.168.6.2 SMB2 143 Read Response, Error: STATUS_END_OF_FILE 35 0.357622873 192.168.6.2 -> 192.168.6.1 SMB2 183 Read Request Len:4096 Off:0 File: 008.7067 36 0.358040997 192.168.6.1 -> 192.168.6.2 SMB2 143 Read Response, Error: STATUS_END_OF_FILE 38 0.373614076 192.168.6.2 -> 192.168.6.1 SMB2 1382 Write Request Len:4096 Off:4096 File: 008.7067 40 0.374142468 192.168.6.1 -> 192.168.6.2 SMB2 150 Write Response 41 0.374485805 192.168.6.2 -> 192.168.6.1 SMB2 158 Close Request File: 008.7067 42 0.375222020 192.168.6.1 -> 192.168.6.2 SMB2 194 Close Response The first page read (which overlaps with the writes and fzero) returns an EOF error. Shouldn't the FSCTL_SET_ZERO_DATA have extended the file to 4096? Also, I wonder what happened to the pagecache: the second read shouldn't have happened because fallocate() shouldn't have touched that page. Also, the writeback happens last - I wonder if fallocate should flush. Not that it should be necessary if it's just modifying pages already in the pagecache. David