From 2008e9209f2ec37321ec06de4988c5c7f9a015b8 Mon Sep 17 00:00:00 2001 From: Tim Chase Date: Sat, 9 Nov 2013 19:22:06 -0600 Subject: [PATCH] Fix rollback of mounted filesystem regression The Illumos #3875 patch reverted a part of ZoL's 7b3e34b which added special-case error handling for zfs_rezget(). The error handling dealt with the case in which an all-ones object number ended up being passed to dnode_hold() and causing an EINVAL to be returned from zfs_rezget(). Signed-off-by: Brian Behlendorf Closes #1859 Closes #1861 --- module/zfs/zfs_vfsops.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c index 9097273e4..5c65b964a 100644 --- a/module/zfs/zfs_vfsops.c +++ b/module/zfs/zfs_vfsops.c @@ -1480,7 +1480,7 @@ EXPORT_SYMBOL(zfs_suspend_fs); int zfs_resume_fs(zfs_sb_t *zsb, const char *osname) { - int err; + int err, err2; znode_t *zp; uint64_t sa_obj = 0; @@ -1537,8 +1537,8 @@ zfs_resume_fs(zfs_sb_t *zsb, const char *osname) mutex_enter(&zsb->z_znodes_lock); for (zp = list_head(&zsb->z_all_znodes); zp; zp = list_next(&zsb->z_all_znodes, zp)) { - err = zfs_rezget(zp); - if (err) { + err2 = zfs_rezget(zp); + if (err2) { remove_inode_hash(ZTOI(zp)); zp->z_is_stale = B_TRUE; }