Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
Show First 20 Lines • Show All 1,020 Lines • ▼ Show 20 Lines | os = dmu_objset_create_impl(pdd->dd_pool->dp_spa, | ||||
ds, bp, doca->doca_type, tx); | ds, bp, doca->doca_type, tx); | ||||
rrw_exit(&ds->ds_bp_rwlock, FTAG); | rrw_exit(&ds->ds_bp_rwlock, FTAG); | ||||
if (doca->doca_userfunc != NULL) { | if (doca->doca_userfunc != NULL) { | ||||
doca->doca_userfunc(os, doca->doca_userarg, | doca->doca_userfunc(os, doca->doca_userarg, | ||||
doca->doca_cred, tx); | doca->doca_cred, tx); | ||||
} | } | ||||
#if defined(__FreeBSD__) && defined(_KERNEL) | |||||
zvol_create_minors(dp->dp_spa, doca->doca_name); | |||||
#endif | |||||
spa_history_log_internal_ds(ds, "create", tx, ""); | spa_history_log_internal_ds(ds, "create", tx, ""); | ||||
dsl_dataset_rele(ds, FTAG); | dsl_dataset_rele(ds, FTAG); | ||||
dsl_dir_rele(pdd, FTAG); | dsl_dir_rele(pdd, FTAG); | ||||
} | } | ||||
int | int | ||||
dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags, | dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags, | ||||
void (*func)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx), void *arg) | void (*func)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx), void *arg) | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | dmu_objset_clone_sync(void *arg, dmu_tx_t *tx) | ||||
VERIFY0(dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail)); | VERIFY0(dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail)); | ||||
VERIFY0(dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin)); | VERIFY0(dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin)); | ||||
obj = dsl_dataset_create_sync(pdd, tail, origin, 0, | obj = dsl_dataset_create_sync(pdd, tail, origin, 0, | ||||
doca->doca_cred, tx); | doca->doca_cred, tx); | ||||
VERIFY0(dsl_dataset_hold_obj(pdd->dd_pool, obj, FTAG, &ds)); | VERIFY0(dsl_dataset_hold_obj(pdd->dd_pool, obj, FTAG, &ds)); | ||||
dsl_dataset_name(origin, namebuf); | dsl_dataset_name(origin, namebuf); | ||||
#if defined(__FreeBSD__) && defined(_KERNEL) | |||||
zvol_create_minors(dp->dp_spa, doca->doca_clone); | |||||
#endif | |||||
spa_history_log_internal_ds(ds, "clone", tx, | spa_history_log_internal_ds(ds, "clone", tx, | ||||
"origin=%s (%llu)", namebuf, origin->ds_object); | "origin=%s (%llu)", namebuf, origin->ds_object); | ||||
dsl_dataset_rele(ds, FTAG); | dsl_dataset_rele(ds, FTAG); | ||||
dsl_dataset_rele(origin, FTAG); | dsl_dataset_rele(origin, FTAG); | ||||
dsl_dir_rele(pdd, FTAG); | dsl_dir_rele(pdd, FTAG); | ||||
} | } | ||||
int | int | ||||
▲ Show 20 Lines • Show All 1,320 Lines • Show Last 20 Lines |