summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorMark J Musante <Mark.Musante@Sun.COM>2009-02-17 15:05:25 -0500
committerMark J Musante <Mark.Musante@Sun.COM>2009-02-17 15:05:25 -0500
commit05312e2ca4a1e68606ae0db2c449aee7e7009323 (patch)
tree7d085e67fa76cbe2722d49e373f597b3a47edee8 /usr/src
parent08d2fdc210e92c7a249e69a795663019da6f23ca (diff)
downloadillumos-joyent-05312e2ca4a1e68606ae0db2c449aee7e7009323.tar.gz
6805079 ztest fails immediately
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/ztest/ztest.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/usr/src/cmd/ztest/ztest.c b/usr/src/cmd/ztest/ztest.c
index 87d48be2d9..18952a2cfe 100644
--- a/usr/src/cmd/ztest/ztest.c
+++ b/usr/src/cmd/ztest/ztest.c
@@ -1452,19 +1452,34 @@ ztest_dsl_dataset_promote_busy(ztest_args_t *za)
char clone2name[100];
char snap3name[100];
char osname[MAXNAMELEN];
- static uint64_t uniq = 0;
uint64_t curval;
- curval = atomic_add_64_nv(&uniq, 5) - 5;
+ curval = za->za_instance;
(void) rw_rdlock(&ztest_shared->zs_name_lock);
dmu_objset_name(os, osname);
- (void) snprintf(snap1name, 100, "%s@s1_%llu", osname, curval++);
- (void) snprintf(clone1name, 100, "%s/c1_%llu", osname, curval++);
- (void) snprintf(snap2name, 100, "%s@s2_%llu", clone1name, curval++);
- (void) snprintf(clone2name, 100, "%s/c2_%llu", osname, curval++);
- (void) snprintf(snap3name, 100, "%s@s3_%llu", clone1name, curval++);
+ (void) snprintf(snap1name, 100, "%s@s1_%llu", osname, curval);
+ (void) snprintf(clone1name, 100, "%s/c1_%llu", osname, curval);
+ (void) snprintf(snap2name, 100, "%s@s2_%llu", clone1name, curval);
+ (void) snprintf(clone2name, 100, "%s/c2_%llu", osname, curval);
+ (void) snprintf(snap3name, 100, "%s@s3_%llu", clone1name, curval);
+
+ error = dmu_objset_destroy(clone2name);
+ if (error != 0 && error != ENOENT)
+ fatal(0, "dmu_objset_destroy() = %d", error);
+ error = dmu_objset_destroy(snap3name);
+ if (error != 0 && error != ENOENT)
+ fatal(0, "dmu_objset_destroy() = %d", error);
+ error = dmu_objset_destroy(snap2name);
+ if (error != 0 && error != ENOENT)
+ fatal(0, "dmu_objset_destroy() = %d", error);
+ error = dmu_objset_destroy(clone1name);
+ if (error != 0 && error != ENOENT)
+ fatal(0, "dmu_objset_destroy() = %d", error);
+ error = dmu_objset_destroy(snap1name);
+ if (error != 0 && error != ENOENT)
+ fatal(0, "dmu_objset_destroy() = %d", error);
error = dmu_objset_snapshot(osname, strchr(snap1name, '@')+1, FALSE);
if (error == ENOSPC)
@@ -1508,7 +1523,7 @@ ztest_dsl_dataset_promote_busy(ztest_args_t *za)
fatal(0, "dmu_objset_create(%s) = %d", clone2name, error);
dmu_objset_close(clone);
- error = dsl_dataset_own(snap1name, 0, FTAG, &ds);
+ error = dsl_dataset_own(snap1name, DS_MODE_READONLY, FTAG, &ds);
if (error)
fatal(0, "dsl_dataset_own(%s) = %d", snap1name, error);
error = dsl_dataset_promote(clone2name);
@@ -1523,7 +1538,7 @@ ztest_dsl_dataset_promote_busy(ztest_args_t *za)
error = dmu_objset_destroy(snap3name);
if (error)
- fatal(0, "dmu_objset_destroy(%s) = %d", snap2name, error);
+ fatal(0, "dmu_objset_destroy(%s) = %d", snap3name, error);
error = dmu_objset_destroy(snap2name);
if (error)