diff options
author | Alex Wilson <alex@uq.edu.au> | 2020-09-10 16:28:52 +1000 |
---|---|---|
committer | Robert Mustacchi <rm@fingolfin.org> | 2020-10-27 16:23:48 -0700 |
commit | 94cc9d8febd5c99331fd191291b3b54435a1ef18 (patch) | |
tree | 24c1c530b487c6fec94e593d714076878933d756 | |
parent | 7cbbb9b50e91b71fbcb3cde98921fc7fbcbe83ea (diff) | |
download | illumos-joyent-94cc9d8febd5c99331fd191291b3b54435a1ef18.tar.gz |
13118 Very slow reaping, possible deadlock in zfs_delmap
Portions contributed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Joshua M. Clulow <josh@sysmgr.org>
Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r-- | usr/src/uts/common/fs/zfs/zfs_vnops.c | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/usr/src/uts/common/fs/zfs/zfs_vnops.c b/usr/src/uts/common/fs/zfs/zfs_vnops.c index a4b5a17f73..301956349e 100644 --- a/usr/src/uts/common/fs/zfs/zfs_vnops.c +++ b/usr/src/uts/common/fs/zfs/zfs_vnops.c @@ -5149,27 +5149,6 @@ zfs_addmap(vnode_t *vp, offset_t off, struct as *as, caddr_t addr, return (0); } -/* - * The reason we push dirty pages as part of zfs_delmap() is so that we get a - * more accurate mtime for the associated file. Since we don't have a way of - * detecting when the data was actually modified, we have to resort to - * heuristics. If an explicit msync() is done, then we mark the mtime when the - * last page is pushed. The problem occurs when the msync() call is omitted, - * which by far the most common case: - * - * open() - * mmap() - * <modify memory> - * munmap() - * close() - * <time lapse> - * putpage() via fsflush - * - * If we wait until fsflush to come along, we can have a modification time that - * is some arbitrary point in the future. In order to prevent this in the - * common case, we flush pages whenever a (MAP_SHARED, PROT_WRITE) mapping is - * torn down. - */ /* ARGSUSED */ static int zfs_delmap(vnode_t *vp, offset_t off, struct as *as, caddr_t addr, @@ -5181,10 +5160,6 @@ zfs_delmap(vnode_t *vp, offset_t off, struct as *as, caddr_t addr, ASSERT3U(VTOZ(vp)->z_mapcnt, >=, pages); atomic_add_64(&VTOZ(vp)->z_mapcnt, -pages); - if ((flags & MAP_SHARED) && (prot & PROT_WRITE) && - vn_has_cached_data(vp)) - (void) VOP_PUTPAGE(vp, off, len, B_ASYNC, cr, ct); - return (0); } |