Lines Matching refs:bdd
217 be_should_promote_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_should_promote_clones() argument
231 if (bdd->snapname == NULL) in be_should_promote_clones()
235 return (strcmp(atpos + 1, bdd->snapname) == 0); in be_should_promote_clones()
252 struct be_destroy_data *bdd; in be_dependent_clone_cb() local
257 bdd = (struct be_destroy_data *)data; in be_dependent_clone_cb()
259 if (be_should_promote_clones(zfs_hdl, bdd) && in be_dependent_clone_cb()
268 if (strncmp(name, bdd->target_name, in be_dependent_clone_cb()
269 strlen(bdd->target_name)) == 0 || in be_dependent_clone_cb()
270 strstr(name, bdd->target_name) == name) { in be_dependent_clone_cb()
275 SLIST_FOREACH(entry, &bdd->promotelist, link) { in be_dependent_clone_cb()
310 SLIST_INSERT_HEAD(&bdd->promotelist, newentry, link); in be_dependent_clone_cb()
323 be_promote_dependent_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_promote_dependent_clones() argument
329 snprintf(bdd->target_name, BE_MAXPATHLEN, "%s/", zfs_get_name(zfs_hdl)); in be_promote_dependent_clones()
330 err = zfs_iter_dependents(zfs_hdl, true, be_dependent_clone_cb, bdd); in be_promote_dependent_clones()
336 if (bdd->snapname != NULL && !SLIST_EMPTY(&bdd->promotelist)) in be_promote_dependent_clones()
338 while (!SLIST_EMPTY(&bdd->promotelist)) { in be_promote_dependent_clones()
339 entry = SLIST_FIRST(&bdd->promotelist); in be_promote_dependent_clones()
340 SLIST_REMOVE_HEAD(&bdd->promotelist, link); in be_promote_dependent_clones()
343 zfs_open(bdd->lbh->lzh, entry->name, ZFS_TYPE_FILESYSTEM) in be_promote_dependent_clones()
366 struct be_destroy_data *bdd; in be_destroy_cb() local
370 bdd = (struct be_destroy_data *)data; in be_destroy_cb()
371 if (bdd->snapname == NULL) { in be_destroy_cb()
391 bdd->snapname); in be_destroy_cb()
392 if (!zfs_dataset_exists(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT)) in be_destroy_cb()
394 snap = zfs_open(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT); in be_destroy_cb()
411 struct be_destroy_data bdd; in be_destroy_internal() local
418 bdd.lbh = lbh; in be_destroy_internal()
419 bdd.snapname = NULL; in be_destroy_internal()
420 SLIST_INIT(&bdd.promotelist); in be_destroy_internal()
443 free(bdd.snapname); in be_destroy_internal()
459 bdd.snapname = strdup(snapdelim + 1); in be_destroy_internal()
460 if (bdd.snapname == NULL) in be_destroy_internal()
465 free(bdd.snapname); in be_destroy_internal()
475 if ((err = be_promote_dependent_clones(fs, &bdd)) != 0) { in be_destroy_internal()
476 free(bdd.snapname); in be_destroy_internal()
513 err = be_destroy_cb(fs, &bdd); in be_destroy_internal()
515 free(bdd.snapname); in be_destroy_internal()