152
171
int dsl_dataset_hold(const char *name, void *tag, dsl_dataset_t **dsp);
153
172
int dsl_dataset_hold_obj(struct dsl_pool *dp, uint64_t dsobj,
154
173
void *tag, dsl_dataset_t **);
155
int dsl_dataset_own(const char *name, int flags, void *owner,
156
dsl_dataset_t **dsp);
174
int dsl_dataset_own(const char *name, boolean_t inconsistentok,
175
void *tag, dsl_dataset_t **dsp);
157
176
int dsl_dataset_own_obj(struct dsl_pool *dp, uint64_t dsobj,
158
int flags, void *owner, dsl_dataset_t **);
177
boolean_t inconsistentok, void *tag, dsl_dataset_t **dsp);
159
178
void dsl_dataset_name(dsl_dataset_t *ds, char *name);
160
179
void dsl_dataset_rele(dsl_dataset_t *ds, void *tag);
161
void dsl_dataset_disown(dsl_dataset_t *ds, void *owner);
180
void dsl_dataset_disown(dsl_dataset_t *ds, void *tag);
162
181
void dsl_dataset_drop_ref(dsl_dataset_t *ds, void *tag);
163
182
boolean_t dsl_dataset_tryown(dsl_dataset_t *ds, boolean_t inconsistentok,
165
void dsl_dataset_make_exclusive(dsl_dataset_t *ds, void *owner);
184
void dsl_dataset_make_exclusive(dsl_dataset_t *ds, void *tag);
166
185
uint64_t dsl_dataset_create_sync(dsl_dir_t *pds, const char *lastname,
167
186
dsl_dataset_t *origin, uint64_t flags, cred_t *, dmu_tx_t *);
168
187
uint64_t dsl_dataset_create_sync_dd(dsl_dir_t *dd, dsl_dataset_t *origin,
169
188
uint64_t flags, dmu_tx_t *tx);
170
int dsl_dataset_destroy(dsl_dataset_t *ds, void *tag);
171
int dsl_snapshots_destroy(char *fsname, char *snapname);
189
int dsl_dataset_destroy(dsl_dataset_t *ds, void *tag, boolean_t defer);
190
int dsl_snapshots_destroy(char *fsname, char *snapname, boolean_t defer);
172
191
dsl_checkfunc_t dsl_dataset_destroy_check;
173
192
dsl_syncfunc_t dsl_dataset_destroy_sync;
174
193
dsl_checkfunc_t dsl_dataset_snapshot_check;
175
194
dsl_syncfunc_t dsl_dataset_snapshot_sync;
176
int dsl_dataset_rollback(dsl_dataset_t *ds, dmu_objset_type_t ost);
177
195
int dsl_dataset_rename(char *name, const char *newname, boolean_t recursive);
178
int dsl_dataset_promote(const char *name);
196
int dsl_dataset_promote(const char *name, char *conflsnap);
179
197
int dsl_dataset_clone_swap(dsl_dataset_t *clone, dsl_dataset_t *origin_head,
180
198
boolean_t force);
182
void *dsl_dataset_set_user_ptr(dsl_dataset_t *ds,
183
void *p, dsl_dataset_evict_func_t func);
184
void *dsl_dataset_get_user_ptr(dsl_dataset_t *ds);
199
int dsl_dataset_user_hold(char *dsname, char *snapname, char *htag,
200
boolean_t recursive, boolean_t temphold);
201
int dsl_dataset_user_release(char *dsname, char *snapname, char *htag,
202
boolean_t recursive);
203
int dsl_dataset_user_release_tmp(struct dsl_pool *dp, uint64_t dsobj,
205
int dsl_dataset_get_holds(const char *dsname, nvlist_t **nvp);
186
207
blkptr_t *dsl_dataset_get_blkptr(dsl_dataset_t *ds);
187
208
void dsl_dataset_set_blkptr(dsl_dataset_t *ds, blkptr_t *bp, dmu_tx_t *tx);
193
214
void dsl_dataset_sync(dsl_dataset_t *os, zio_t *zio, dmu_tx_t *tx);
195
void dsl_dataset_block_born(dsl_dataset_t *ds, blkptr_t *bp, dmu_tx_t *tx);
196
int dsl_dataset_block_kill(dsl_dataset_t *ds, blkptr_t *bp, zio_t *pio,
216
void dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp,
218
int dsl_dataset_block_kill(dsl_dataset_t *ds, const blkptr_t *bp,
219
dmu_tx_t *tx, boolean_t async);
198
220
boolean_t dsl_dataset_block_freeable(dsl_dataset_t *ds, uint64_t blk_birth);
199
221
uint64_t dsl_dataset_prev_snap_txg(dsl_dataset_t *ds);
211
233
int dsl_dataset_check_quota(dsl_dataset_t *ds, boolean_t check_quota,
212
234
uint64_t asize, uint64_t inflight, uint64_t *used,
213
235
uint64_t *ref_rsrv);
214
int dsl_dataset_set_quota(const char *dsname, uint64_t quota);
236
int dsl_dataset_set_quota(const char *dsname, zprop_source_t source,
215
238
void dsl_dataset_set_quota_sync(void *arg1, void *arg2, cred_t *cr,
217
int dsl_dataset_set_reservation(const char *dsname, uint64_t reservation);
218
void dsl_dataset_set_flags(dsl_dataset_t *ds, uint64_t flags);
219
int64_t dsl_dataset_new_refreservation(dsl_dataset_t *ds, uint64_t reservation,
240
int dsl_dataset_set_reservation(const char *dsname, zprop_source_t source,
241
uint64_t reservation);
243
int dsl_destroy_inconsistent(const char *dsname, void *arg);
223
246
#define dprintf_ds(ds, fmt, ...) do { \