aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Chase <[email protected]>2013-11-09 19:22:06 -0600
committerBrian Behlendorf <[email protected]>2013-11-14 10:44:03 -0800
commit2008e9209f2ec37321ec06de4988c5c7f9a015b8 (patch)
tree6b999fca38114909e17e5aa6f8bcde2a476a3a84
parent09d672d331377e5764bc94b3362c35481ae96a52 (diff)
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 <[email protected]> Closes #1859 Closes #1861
-rw-r--r--module/zfs/zfs_vfsops.c6
1 files 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;
}