Add dataset_kstats_update.. to mmap read/write paths
This allows reads/writes caused by accesses to mmap files to be accounted correctly in the per-dataset kstats for both Linux and FreeBSD. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ryan Moeller <freqlabs@FreeBSD.org> Signed-off-by: Matthias Blankertz <matthias@blankertz.org> Closes #12994 Closes #13044
This commit is contained in:
parent
5c19af07d4
commit
bc99c809d5
|
@ -4141,6 +4141,9 @@ zfs_getpages(struct vnode *vp, vm_page_t *ma, int count, int *rbehind,
|
||||||
if (lr != NULL)
|
if (lr != NULL)
|
||||||
zfs_rangelock_exit(lr);
|
zfs_rangelock_exit(lr);
|
||||||
ZFS_ACCESSTIME_STAMP(zfsvfs, zp);
|
ZFS_ACCESSTIME_STAMP(zfsvfs, zp);
|
||||||
|
|
||||||
|
dataset_kstats_update_read_kstats(&zfsvfs->z_kstat, count*PAGE_SIZE);
|
||||||
|
|
||||||
ZFS_EXIT(zfsvfs);
|
ZFS_EXIT(zfsvfs);
|
||||||
|
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
|
@ -4318,6 +4321,9 @@ out:
|
||||||
if ((flags & (zfs_vm_pagerput_sync | zfs_vm_pagerput_inval)) != 0 ||
|
if ((flags & (zfs_vm_pagerput_sync | zfs_vm_pagerput_inval)) != 0 ||
|
||||||
zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS)
|
zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS)
|
||||||
zil_commit(zfsvfs->z_log, zp->z_id);
|
zil_commit(zfsvfs->z_log, zp->z_id);
|
||||||
|
|
||||||
|
dataset_kstats_update_write_kstats(&zfsvfs->z_kstat, len);
|
||||||
|
|
||||||
ZFS_EXIT(zfsvfs);
|
ZFS_EXIT(zfsvfs);
|
||||||
return (rtvals[0]);
|
return (rtvals[0]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3635,6 +3635,8 @@ zfs_putpage(struct inode *ip, struct page *pp, struct writeback_control *wbc)
|
||||||
zil_commit(zfsvfs->z_log, zp->z_id);
|
zil_commit(zfsvfs->z_log, zp->z_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dataset_kstats_update_write_kstats(&zfsvfs->z_kstat, pglen);
|
||||||
|
|
||||||
ZFS_EXIT(zfsvfs);
|
ZFS_EXIT(zfsvfs);
|
||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
@ -3830,6 +3832,8 @@ zfs_getpage(struct inode *ip, struct page *pl[], int nr_pages)
|
||||||
|
|
||||||
err = zfs_fillpage(ip, pl, nr_pages);
|
err = zfs_fillpage(ip, pl, nr_pages);
|
||||||
|
|
||||||
|
dataset_kstats_update_read_kstats(&zfsvfs->z_kstat, nr_pages*PAGESIZE);
|
||||||
|
|
||||||
ZFS_EXIT(zfsvfs);
|
ZFS_EXIT(zfsvfs);
|
||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue