changeset 5475:e140313199cc

6626338 assertion failed: 0 == dsl_prop_get_ds_locked(ds->ds_dir, "refreservation", sizeof (uint64_t), 1, &d
author ck153898
date Tue, 13 Nov 2007 15:14:11 -0800
parents d1f8ad75584a
children 07e134b58b71
files usr/src/uts/common/fs/zfs/dsl_dataset.c
diffstat 1 files changed, 22 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/dsl_dataset.c	Tue Nov 13 13:37:43 2007 -0800
+++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c	Tue Nov 13 15:14:11 2007 -0800
@@ -374,6 +374,28 @@
 			}
 		}
 
+		if (!dsl_dataset_is_snapshot(ds)) {
+			boolean_t need_lock =
+			    !RW_LOCK_HELD(&dp->dp_config_rwlock);
+
+			if (need_lock)
+				rw_enter(&dp->dp_config_rwlock, RW_READER);
+
+			err = dsl_prop_get_ds_locked(ds->ds_dir,
+			    "refreservation", sizeof (uint64_t), 1,
+			    &ds->ds_reserved, NULL);
+			if (err == 0) {
+				err = dsl_prop_get_ds_locked(ds->ds_dir,
+				    "refquota", sizeof (uint64_t), 1,
+				    &ds->ds_quota, NULL);
+			}
+
+			if (need_lock)
+				rw_exit(&dp->dp_config_rwlock);
+		} else {
+			ds->ds_reserved = ds->ds_quota = 0;
+		}
+
 		if (err == 0) {
 			winner = dmu_buf_set_user_ie(dbuf, ds, &ds->ds_phys,
 			    dsl_dataset_evict);
@@ -398,24 +420,6 @@
 			ds->ds_fsid_guid =
 			    unique_insert(ds->ds_phys->ds_fsid_guid);
 		}
-
-		if (!dsl_dataset_is_snapshot(ds)) {
-			boolean_t need_lock =
-			    !RW_LOCK_HELD(&dp->dp_config_rwlock);
-
-			if (need_lock)
-				rw_enter(&dp->dp_config_rwlock, RW_READER);
-			VERIFY(0 == dsl_prop_get_ds_locked(ds->ds_dir,
-			    "refreservation", sizeof (uint64_t), 1,
-			    &ds->ds_reserved, NULL));
-			VERIFY(0 == dsl_prop_get_ds_locked(ds->ds_dir,
-			    "refquota", sizeof (uint64_t), 1, &ds->ds_quota,
-			    NULL));
-			if (need_lock)
-				rw_exit(&dp->dp_config_rwlock);
-		} else {
-			ds->ds_reserved = ds->ds_quota = 0;
-		}
 	}
 	ASSERT3P(ds->ds_dbuf, ==, dbuf);
 	ASSERT3P(ds->ds_phys, ==, dbuf->db_data);