mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	FreeBSD: Update dataset_kstats for zvols in dev mode
Previous commit added accounting for geom mode, but not for dev. In geom mode we actually have GEOM statistics, while in dev mode additional accounting actually makes more sense. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Closes #12097
This commit is contained in:
		
							parent
							
								
									ecebf770c1
								
							
						
					
					
						commit
						a7bb2dab4e
					
				| @ -767,6 +767,7 @@ zvol_cdev_read(struct cdev *dev, struct uio *uio_s, int ioflag) | ||||
| 	    (zfs_uio_offset(&uio) < 0 || zfs_uio_offset(&uio) > volsize)) | ||||
| 		return (SET_ERROR(EIO)); | ||||
| 
 | ||||
| 	ssize_t start_resid = zfs_uio_resid(&uio); | ||||
| 	lr = zfs_rangelock_enter(&zv->zv_rangelock, zfs_uio_offset(&uio), | ||||
| 	    zfs_uio_resid(&uio), RL_READER); | ||||
| 	while (zfs_uio_resid(&uio) > 0 && zfs_uio_offset(&uio) < volsize) { | ||||
| @ -785,6 +786,8 @@ zvol_cdev_read(struct cdev *dev, struct uio *uio_s, int ioflag) | ||||
| 		} | ||||
| 	} | ||||
| 	zfs_rangelock_exit(lr); | ||||
| 	int64_t nread = start_resid - zfs_uio_resid(&uio); | ||||
| 	dataset_kstats_update_read_kstats(&zv->zv_kstat, nread); | ||||
| 
 | ||||
| 	return (error); | ||||
| } | ||||
| @ -809,6 +812,7 @@ zvol_cdev_write(struct cdev *dev, struct uio *uio_s, int ioflag) | ||||
| 	    (zfs_uio_offset(&uio) < 0 || zfs_uio_offset(&uio) > volsize)) | ||||
| 		return (SET_ERROR(EIO)); | ||||
| 
 | ||||
| 	ssize_t start_resid = zfs_uio_resid(&uio); | ||||
| 	sync = (ioflag & IO_SYNC) || | ||||
| 	    (zv->zv_objset->os_sync == ZFS_SYNC_ALWAYS); | ||||
| 
 | ||||
| @ -840,6 +844,8 @@ zvol_cdev_write(struct cdev *dev, struct uio *uio_s, int ioflag) | ||||
| 			break; | ||||
| 	} | ||||
| 	zfs_rangelock_exit(lr); | ||||
| 	int64_t nwritten = start_resid - zfs_uio_resid(&uio); | ||||
| 	dataset_kstats_update_write_kstats(&zv->zv_kstat, nwritten); | ||||
| 	if (sync) | ||||
| 		zil_commit(zv->zv_zilog, ZVOL_OBJ); | ||||
| 	rw_exit(&zv->zv_suspend_lock); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alexander Motin
						Alexander Motin