Lines Matching refs:bdd
200 be_should_promote_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_should_promote_clones() argument
214 if (bdd->snapname == NULL) in be_should_promote_clones()
218 return (strcmp(atpos + 1, bdd->snapname) == 0); in be_should_promote_clones()
235 struct be_destroy_data *bdd; in be_dependent_clone_cb() local
240 bdd = (struct be_destroy_data *)data; in be_dependent_clone_cb()
242 if (be_should_promote_clones(zfs_hdl, bdd) && in be_dependent_clone_cb()
251 if (strncmp(name, bdd->target_name, in be_dependent_clone_cb()
252 strlen(bdd->target_name)) == 0 || in be_dependent_clone_cb()
253 strstr(name, bdd->target_name) == name) { in be_dependent_clone_cb()
258 SLIST_FOREACH(entry, &bdd->promotelist, link) { in be_dependent_clone_cb()
293 SLIST_INSERT_HEAD(&bdd->promotelist, newentry, link); in be_dependent_clone_cb()
306 be_promote_dependent_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_promote_dependent_clones() argument
312 snprintf(bdd->target_name, BE_MAXPATHLEN, "%s/", zfs_get_name(zfs_hdl)); in be_promote_dependent_clones()
313 err = zfs_iter_dependents(zfs_hdl, true, be_dependent_clone_cb, bdd); in be_promote_dependent_clones()
319 if (bdd->snapname != NULL && !SLIST_EMPTY(&bdd->promotelist)) in be_promote_dependent_clones()
321 while (!SLIST_EMPTY(&bdd->promotelist)) { in be_promote_dependent_clones()
322 entry = SLIST_FIRST(&bdd->promotelist); in be_promote_dependent_clones()
323 SLIST_REMOVE_HEAD(&bdd->promotelist, link); in be_promote_dependent_clones()
326 zfs_open(bdd->lbh->lzh, entry->name, ZFS_TYPE_FILESYSTEM) in be_promote_dependent_clones()
349 struct be_destroy_data *bdd; in be_destroy_cb() local
353 bdd = (struct be_destroy_data *)data; in be_destroy_cb()
354 if (bdd->snapname == NULL) { in be_destroy_cb()
374 bdd->snapname); in be_destroy_cb()
375 if (!zfs_dataset_exists(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT)) in be_destroy_cb()
377 snap = zfs_open(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT); in be_destroy_cb()
394 struct be_destroy_data bdd; in be_destroy_internal() local
401 bdd.lbh = lbh; in be_destroy_internal()
402 bdd.snapname = NULL; in be_destroy_internal()
403 SLIST_INIT(&bdd.promotelist); in be_destroy_internal()
426 free(bdd.snapname); in be_destroy_internal()
448 bdd.snapname = strdup(snapdelim + 1); in be_destroy_internal()
449 if (bdd.snapname == NULL) in be_destroy_internal()
454 free(bdd.snapname); in be_destroy_internal()
464 if ((err = be_promote_dependent_clones(fs, &bdd)) != 0) { in be_destroy_internal()
465 free(bdd.snapname); in be_destroy_internal()
502 err = be_destroy_cb(fs, &bdd); in be_destroy_internal()
504 free(bdd.snapname); in be_destroy_internal()