Mercurial > illumos > illumos-gate
diff usr/src/uts/common/fs/zfs/spa.c @ 6689:47572a2f5e73
6610506 Eliminate or improve retry logic from callers of dmu_objset_open()
6695465 divide by zero in txg_sync_thread() under heavy load
author | maybee |
---|---|
date | Thu, 22 May 2008 11:13:47 -0700 |
parents | be079d6124af |
children | ccf0a8c4b9a5 |
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/spa.c Thu May 22 11:05:03 2008 -0700 +++ b/usr/src/uts/common/fs/zfs/spa.c Thu May 22 11:13:47 2008 -0700 @@ -201,9 +201,8 @@ dp = spa_get_dsl(spa); rw_enter(&dp->dp_config_rwlock, RW_READER); - if (err = dsl_dataset_open_obj(dp, - za.za_first_integer, NULL, DS_MODE_NONE, - FTAG, &ds)) { + if (err = dsl_dataset_hold_obj(dp, + za.za_first_integer, FTAG, &ds)) { rw_exit(&dp->dp_config_rwlock); break; } @@ -212,7 +211,7 @@ MAXNAMELEN + strlen(MOS_DIR_NAME) + 1, KM_SLEEP); dsl_dataset_name(ds, strval); - dsl_dataset_close(ds, DS_MODE_NONE, FTAG); + dsl_dataset_rele(ds, FTAG); rw_exit(&dp->dp_config_rwlock); } else { strval = NULL; @@ -329,7 +328,7 @@ } if (error = dmu_objset_open(strval, DMU_OST_ZFS, - DS_MODE_STANDARD | DS_MODE_READONLY, &os)) + DS_MODE_USER | DS_MODE_READONLY, &os)) break; objnum = dmu_objset_id(os); dmu_objset_close(os);