cifs: zero-range does not require the file is sparse
authorRonnie Sahlberg <lsahlber@redhat.com>
Thu, 11 Apr 2019 23:56:23 +0000 (09:56 +1000)
committerSteve French <stfrench@microsoft.com>
Wed, 8 May 2019 04:24:55 +0000 (23:24 -0500)
Remove the conditional to fail zero-range if the file is not flagged as sparse.
You can still zero out a range in SMB2 even for non-sparse files.

Tested with stock windows16 server.

Fixes 5 xfstests (033, 149, 155, 180, 349)

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2ops.c

index 78bca7d46eac4f4ab2f1697e46a9ade26b2c8ff4..9b7a2f44859151f16caf551df260a2a4e2f2ec6f 100644 (file)
@@ -2679,18 +2679,6 @@ static long smb3_zero_range(struct file *file, struct cifs_tcon *tcon,
                        return rc;
                }
 
-       /*
-        * Must check if file sparse since fallocate -z (zero range) assumes
-        * non-sparse allocation
-        */
-       if (!(cifsi->cifsAttrs & FILE_ATTRIBUTE_SPARSE_FILE)) {
-               rc = -EOPNOTSUPP;
-               trace_smb3_zero_err(xid, cfile->fid.persistent_fid, tcon->tid,
-                             ses->Suid, offset, len, rc);
-               free_xid(xid);
-               return rc;
-       }
-
        cifs_dbg(FYI, "offset %lld len %lld", offset, len);
 
        fsctl_buf.FileOffset = cpu_to_le64(offset);