CIFS: Do not consider -ENODATA as stat failure for reads
authorPavel Shilovsky <pshilov@microsoft.com>
Fri, 18 Jan 2019 23:54:34 +0000 (15:54 -0800)
committerSteve French <stfrench@microsoft.com>
Tue, 29 Jan 2019 23:27:16 +0000 (17:27 -0600)
When doing reads beyound the end of a file the server returns
error STATUS_END_OF_FILE error which is mapped to -ENODATA.
Currently we report it as a failure which confuses read stats.
Change it to not consider -ENODATA as failure for stat purposes.

Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
CC: Stable <stable@vger.kernel.org>
fs/cifs/smb2pdu.c

index d858dc04fdc37fe2157d89579d3e5e879e3012e4..ef52d66424314f85ea5de5689bd31202937b6709 100644 (file)
@@ -3241,7 +3241,7 @@ smb2_readv_callback(struct mid_q_entry *mid)
                rdata->mr = NULL;
        }
 #endif
-       if (rdata->result) {
+       if (rdata->result && rdata->result != -ENODATA) {
                cifs_stats_fail_inc(tcon, SMB2_READ_HE);
                trace_smb3_read_err(0 /* xid */,
                                    rdata->cfile->fid.persistent_fid,