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