NFS: Fix byte accounting for generic NFS reads
Currently, the NFS I/O counters count the number of bytes requested by applications, rather than the number of bytes actually read by the system calls. The number of bytes requested for reads is actually not that useful, because the value is usually a buffer size for reads. That is, that requested number is usually a maximum, and frequently doesn't reflect the actual number of bytes read. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
c2459dc462
commit
4184dcf2db
|
@ -262,9 +262,11 @@ nfs_file_read(struct kiocb *iocb, const struct iovec *iov,
|
||||||
(unsigned long) count, (unsigned long) pos);
|
(unsigned long) count, (unsigned long) pos);
|
||||||
|
|
||||||
result = nfs_revalidate_mapping(inode, iocb->ki_filp->f_mapping);
|
result = nfs_revalidate_mapping(inode, iocb->ki_filp->f_mapping);
|
||||||
nfs_add_stats(inode, NFSIOS_NORMALREADBYTES, count);
|
if (!result) {
|
||||||
if (!result)
|
|
||||||
result = generic_file_aio_read(iocb, iov, nr_segs, pos);
|
result = generic_file_aio_read(iocb, iov, nr_segs, pos);
|
||||||
|
if (result > 0)
|
||||||
|
nfs_add_stats(inode, NFSIOS_NORMALREADBYTES, result);
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue