Module Name:    src
Committed By:   hannken
Date:           Thu Dec 13 10:20:20 UTC 2018

Modified Files:
        src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c

Log Message:
Operation zfs_range_lock() needs range as (offset,length), not as (low,high).


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 \
    src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.37 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.38
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.37	Thu Dec  6 10:00:40 2018
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c	Thu Dec 13 10:20:20 2018
@@ -5968,6 +5968,7 @@ zfs_netbsd_putpages(void *v)
 	znode_t *zp = VTOZ(vp);
 	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
 	rl_t *rl = NULL;
+	uint64_t len;
 	int error;
 	bool cleaned = false;
 
@@ -5978,7 +5979,13 @@ zfs_netbsd_putpages(void *v)
 	ZFS_VERIFY_ZP(zp);
 
 	if (cleaning) {
-		rl = zfs_range_lock(zp, offlo, offhi, RL_WRITER);
+		ASSERT((offlo & PAGE_MASK) == 0 && (offhi & PAGE_MASK) == 0);
+		ASSERT(offlo < offhi || offhi == 0);
+		if (offhi == 0)
+			len = UINT64_MAX;
+		else
+			len = offhi - offlo;
+		rl = zfs_range_lock(zp, offlo, len, RL_WRITER);
 		tsd_set(zfs_putpage_key, &cleaned);
 	}
 	error = genfs_putpages(v);

Reply via email to