Module Name: src
Committed By: hannken
Date: Mon Jun 17 08:08:51 UTC 2019
Modified Files:
src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_znode.c
src/external/cddl/osnet/sys/sys: zfs_context.h
Log Message:
Unmap pages when zfs_rezget() re-establishes a znode with its dbufs.
To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 \
src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c
cvs rdiff -u -r1.21 -r1.22 src/external/cddl/osnet/sys/sys/zfs_context.h
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_znode.c
diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.28 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.29
--- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.28 Sun May 26 10:21:00 2019
+++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Mon Jun 17 08:08:50 2019
@@ -1560,10 +1560,14 @@ zfs_rezget(znode_t *zp)
zp->z_unlinked = (zp->z_links == 0);
zp->z_blksz = doi.doi_data_block_size;
+#ifdef __NetBSD__
+ mutex_enter(vp->v_interlock);
+ (void)VOP_PUTPAGES(vp, 0, 0, PGO_ALLPAGES|PGO_FREE|PGO_SYNCIO);
+#else
vn_pages_remove(vp, 0, 0);
+#endif
if (zp->z_size != size)
vnode_pager_setsize(vp, zp->z_size);
-
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num);
return (0);
Index: src/external/cddl/osnet/sys/sys/zfs_context.h
diff -u src/external/cddl/osnet/sys/sys/zfs_context.h:1.21 src/external/cddl/osnet/sys/sys/zfs_context.h:1.22
--- src/external/cddl/osnet/sys/sys/zfs_context.h:1.21 Tue May 7 08:49:59 2019
+++ src/external/cddl/osnet/sys/sys/zfs_context.h Mon Jun 17 08:08:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: zfs_context.h,v 1.21 2019/05/07 08:49:59 hannken Exp $ */
+/* $NetBSD: zfs_context.h,v 1.22 2019/06/17 08:08:51 hannken Exp $ */
/*
* CDDL HEADER START
@@ -777,7 +777,6 @@ vsprintf(char * __restrict buf, const ch
void zfs_netbsd_setsize(vnode_t *, off_t);
#define vnode_pager_setsize(vp, size) zfs_netbsd_setsize(vp, size)
-#define vn_pages_remove(a, b, c)
#define getf fd_getfile
#define releasef fd_putfile