mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Update to onnv_147
This is the last official OpenSolaris tag before the public development tree was closed.
This commit is contained in:
+46
-37
@@ -1102,7 +1102,7 @@ ztest_bt_bonus(dmu_buf_t *db)
|
||||
#define lrz_bonustype lr_rdev
|
||||
#define lrz_bonuslen lr_crtime[1]
|
||||
|
||||
static uint64_t
|
||||
static void
|
||||
ztest_log_create(ztest_ds_t *zd, dmu_tx_t *tx, lr_create_t *lr)
|
||||
{
|
||||
char *name = (void *)(lr + 1); /* name follows lr */
|
||||
@@ -1110,40 +1110,41 @@ ztest_log_create(ztest_ds_t *zd, dmu_tx_t *tx, lr_create_t *lr)
|
||||
itx_t *itx;
|
||||
|
||||
if (zil_replaying(zd->zd_zilog, tx))
|
||||
return (0);
|
||||
return;
|
||||
|
||||
itx = zil_itx_create(TX_CREATE, sizeof (*lr) + namesize);
|
||||
bcopy(&lr->lr_common + 1, &itx->itx_lr + 1,
|
||||
sizeof (*lr) + namesize - sizeof (lr_t));
|
||||
|
||||
return (zil_itx_assign(zd->zd_zilog, itx, tx));
|
||||
zil_itx_assign(zd->zd_zilog, itx, tx);
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
ztest_log_remove(ztest_ds_t *zd, dmu_tx_t *tx, lr_remove_t *lr)
|
||||
static void
|
||||
ztest_log_remove(ztest_ds_t *zd, dmu_tx_t *tx, lr_remove_t *lr, uint64_t object)
|
||||
{
|
||||
char *name = (void *)(lr + 1); /* name follows lr */
|
||||
size_t namesize = strlen(name) + 1;
|
||||
itx_t *itx;
|
||||
|
||||
if (zil_replaying(zd->zd_zilog, tx))
|
||||
return (0);
|
||||
return;
|
||||
|
||||
itx = zil_itx_create(TX_REMOVE, sizeof (*lr) + namesize);
|
||||
bcopy(&lr->lr_common + 1, &itx->itx_lr + 1,
|
||||
sizeof (*lr) + namesize - sizeof (lr_t));
|
||||
|
||||
return (zil_itx_assign(zd->zd_zilog, itx, tx));
|
||||
itx->itx_oid = object;
|
||||
zil_itx_assign(zd->zd_zilog, itx, tx);
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
static void
|
||||
ztest_log_write(ztest_ds_t *zd, dmu_tx_t *tx, lr_write_t *lr)
|
||||
{
|
||||
itx_t *itx;
|
||||
itx_wr_state_t write_state = ztest_random(WR_NUM_STATES);
|
||||
|
||||
if (zil_replaying(zd->zd_zilog, tx))
|
||||
return (0);
|
||||
return;
|
||||
|
||||
if (lr->lr_length > ZIL_MAX_LOG_DATA)
|
||||
write_state = WR_INDIRECT;
|
||||
@@ -1166,37 +1167,39 @@ ztest_log_write(ztest_ds_t *zd, dmu_tx_t *tx, lr_write_t *lr)
|
||||
bcopy(&lr->lr_common + 1, &itx->itx_lr + 1,
|
||||
sizeof (*lr) - sizeof (lr_t));
|
||||
|
||||
return (zil_itx_assign(zd->zd_zilog, itx, tx));
|
||||
zil_itx_assign(zd->zd_zilog, itx, tx);
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
static void
|
||||
ztest_log_truncate(ztest_ds_t *zd, dmu_tx_t *tx, lr_truncate_t *lr)
|
||||
{
|
||||
itx_t *itx;
|
||||
|
||||
if (zil_replaying(zd->zd_zilog, tx))
|
||||
return (0);
|
||||
return;
|
||||
|
||||
itx = zil_itx_create(TX_TRUNCATE, sizeof (*lr));
|
||||
bcopy(&lr->lr_common + 1, &itx->itx_lr + 1,
|
||||
sizeof (*lr) - sizeof (lr_t));
|
||||
|
||||
return (zil_itx_assign(zd->zd_zilog, itx, tx));
|
||||
itx->itx_sync = B_FALSE;
|
||||
zil_itx_assign(zd->zd_zilog, itx, tx);
|
||||
}
|
||||
|
||||
static uint64_t
|
||||
static void
|
||||
ztest_log_setattr(ztest_ds_t *zd, dmu_tx_t *tx, lr_setattr_t *lr)
|
||||
{
|
||||
itx_t *itx;
|
||||
|
||||
if (zil_replaying(zd->zd_zilog, tx))
|
||||
return (0);
|
||||
return;
|
||||
|
||||
itx = zil_itx_create(TX_SETATTR, sizeof (*lr));
|
||||
bcopy(&lr->lr_common + 1, &itx->itx_lr + 1,
|
||||
sizeof (*lr) - sizeof (lr_t));
|
||||
|
||||
return (zil_itx_assign(zd->zd_zilog, itx, tx));
|
||||
itx->itx_sync = B_FALSE;
|
||||
zil_itx_assign(zd->zd_zilog, itx, tx);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1328,7 +1331,7 @@ ztest_replay_remove(ztest_ds_t *zd, lr_remove_t *lr, boolean_t byteswap)
|
||||
|
||||
VERIFY3U(0, ==, zap_remove(os, lr->lr_doid, name, tx));
|
||||
|
||||
(void) ztest_log_remove(zd, tx, lr);
|
||||
(void) ztest_log_remove(zd, tx, lr, object);
|
||||
|
||||
dmu_tx_commit(tx);
|
||||
|
||||
@@ -2045,7 +2048,7 @@ ztest_zil_commit(ztest_ds_t *zd, uint64_t id)
|
||||
{
|
||||
zilog_t *zilog = zd->zd_zilog;
|
||||
|
||||
zil_commit(zilog, UINT64_MAX, ztest_random(ZTEST_OBJECTS));
|
||||
zil_commit(zilog, ztest_random(ZTEST_OBJECTS));
|
||||
|
||||
/*
|
||||
* Remember the committed values in zd, which is in parent/child
|
||||
@@ -2875,7 +2878,7 @@ ztest_snapshot_create(char *osname, uint64_t id)
|
||||
(u_longlong_t)id);
|
||||
|
||||
error = dmu_objset_snapshot(osname, strchr(snapname, '@') + 1,
|
||||
NULL, B_FALSE);
|
||||
NULL, NULL, B_FALSE, B_FALSE, -1);
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc(FTAG);
|
||||
return (B_FALSE);
|
||||
@@ -3080,7 +3083,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_t *zd, uint64_t id)
|
||||
(void) snprintf(snap3name, MAXNAMELEN, "%s@s3_%llu", clone1name, id);
|
||||
|
||||
error = dmu_objset_snapshot(osname, strchr(snap1name, '@')+1,
|
||||
NULL, B_FALSE);
|
||||
NULL, NULL, B_FALSE, B_FALSE, -1);
|
||||
if (error && error != EEXIST) {
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc(FTAG);
|
||||
@@ -3104,7 +3107,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_t *zd, uint64_t id)
|
||||
}
|
||||
|
||||
error = dmu_objset_snapshot(clone1name, strchr(snap2name, '@')+1,
|
||||
NULL, B_FALSE);
|
||||
NULL, NULL, B_FALSE, B_FALSE, -1);
|
||||
if (error && error != EEXIST) {
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc(FTAG);
|
||||
@@ -3114,7 +3117,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_t *zd, uint64_t id)
|
||||
}
|
||||
|
||||
error = dmu_objset_snapshot(clone1name, strchr(snap3name, '@')+1,
|
||||
NULL, B_FALSE);
|
||||
NULL, NULL, B_FALSE, B_FALSE, -1);
|
||||
if (error && error != EEXIST) {
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc(FTAG);
|
||||
@@ -4304,7 +4307,8 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, uint64_t id)
|
||||
* Create snapshot, clone it, mark snap for deferred destroy,
|
||||
* destroy clone, verify snap was also destroyed.
|
||||
*/
|
||||
error = dmu_objset_snapshot(osname, snapname, NULL, FALSE);
|
||||
error = dmu_objset_snapshot(osname, snapname, NULL, NULL, FALSE,
|
||||
FALSE, -1);
|
||||
if (error) {
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc("dmu_objset_snapshot");
|
||||
@@ -4346,7 +4350,8 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, uint64_t id)
|
||||
* destroy a held snapshot, mark for deferred destroy,
|
||||
* release hold, verify snapshot was destroyed.
|
||||
*/
|
||||
error = dmu_objset_snapshot(osname, snapname, NULL, FALSE);
|
||||
error = dmu_objset_snapshot(osname, snapname, NULL, NULL, FALSE,
|
||||
FALSE, -1);
|
||||
if (error) {
|
||||
if (error == ENOSPC) {
|
||||
ztest_record_enospc("dmu_objset_snapshot");
|
||||
@@ -4355,7 +4360,8 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, uint64_t id)
|
||||
fatal(0, "dmu_objset_snapshot(%s) = %d", fullname, error);
|
||||
}
|
||||
|
||||
error = dsl_dataset_user_hold(osname, snapname, tag, B_FALSE, B_TRUE);
|
||||
error = dsl_dataset_user_hold(osname, snapname, tag, B_FALSE,
|
||||
B_TRUE, -1);
|
||||
if (error)
|
||||
fatal(0, "dsl_dataset_user_hold(%s)", fullname, tag);
|
||||
|
||||
@@ -4843,19 +4849,19 @@ ztest_spa_import_export(char *oldname, char *newname)
|
||||
/*
|
||||
* Import it under the new name.
|
||||
*/
|
||||
VERIFY3U(0, ==, spa_import(newname, config, NULL));
|
||||
VERIFY3U(0, ==, spa_import(newname, config, NULL, 0));
|
||||
|
||||
ztest_walk_pool_directory("pools after import");
|
||||
|
||||
/*
|
||||
* Try to import it again -- should fail with EEXIST.
|
||||
*/
|
||||
VERIFY3U(EEXIST, ==, spa_import(newname, config, NULL));
|
||||
VERIFY3U(EEXIST, ==, spa_import(newname, config, NULL, 0));
|
||||
|
||||
/*
|
||||
* Try to import it under a different name -- should fail with EEXIST.
|
||||
*/
|
||||
VERIFY3U(EEXIST, ==, spa_import(oldname, config, NULL));
|
||||
VERIFY3U(EEXIST, ==, spa_import(oldname, config, NULL, 0));
|
||||
|
||||
/*
|
||||
* Verify that the pool is no longer visible under the old name.
|
||||
@@ -5242,6 +5248,13 @@ ztest_run(ztest_shared_t *zs)
|
||||
}
|
||||
|
||||
kernel_fini();
|
||||
|
||||
list_destroy(&zcl.zcl_callbacks);
|
||||
|
||||
(void) _mutex_destroy(&zcl.zcl_callbacks_lock);
|
||||
|
||||
(void) rwlock_destroy(&zs->zs_name_lock);
|
||||
(void) _mutex_destroy(&zs->zs_vdev_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5265,7 +5278,7 @@ ztest_freeze(ztest_shared_t *zs)
|
||||
*/
|
||||
while (BP_IS_HOLE(&zd->zd_zilog->zl_header->zh_log)) {
|
||||
ztest_dmu_object_alloc_free(zd, 0);
|
||||
zil_commit(zd->zd_zilog, UINT64_MAX, 0);
|
||||
zil_commit(zd->zd_zilog, 0);
|
||||
}
|
||||
|
||||
txg_wait_synced(spa_get_dsl(spa), 0);
|
||||
@@ -5292,7 +5305,7 @@ ztest_freeze(ztest_shared_t *zs)
|
||||
/*
|
||||
* Commit all of the changes we just generated.
|
||||
*/
|
||||
zil_commit(zd->zd_zilog, UINT64_MAX, 0);
|
||||
zil_commit(zd->zd_zilog, 0);
|
||||
txg_wait_synced(spa_get_dsl(spa), 0);
|
||||
|
||||
/*
|
||||
@@ -5311,13 +5324,6 @@ ztest_freeze(ztest_shared_t *zs)
|
||||
ztest_dataset_close(zs, 0);
|
||||
spa_close(spa, FTAG);
|
||||
kernel_fini();
|
||||
|
||||
list_destroy(&zcl.zcl_callbacks);
|
||||
|
||||
(void) _mutex_destroy(&zcl.zcl_callbacks_lock);
|
||||
|
||||
(void) rwlock_destroy(&zs->zs_name_lock);
|
||||
(void) _mutex_destroy(&zs->zs_vdev_lock);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -5401,6 +5407,9 @@ ztest_init(ztest_shared_t *zs)
|
||||
ztest_freeze(zs);
|
||||
|
||||
ztest_run_zdb(zs->zs_pool);
|
||||
|
||||
(void) rwlock_destroy(&zs->zs_name_lock);
|
||||
(void) _mutex_destroy(&zs->zs_vdev_lock);
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
Reference in New Issue
Block a user