Lines Matching refs:bdd
208 be_should_promote_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_should_promote_clones() argument
222 if (bdd->snapname == NULL) in be_should_promote_clones()
226 return (strcmp(atpos + 1, bdd->snapname) == 0); in be_should_promote_clones()
243 struct be_destroy_data *bdd; in be_dependent_clone_cb() local
248 bdd = (struct be_destroy_data *)data; in be_dependent_clone_cb()
250 if (be_should_promote_clones(zfs_hdl, bdd) && in be_dependent_clone_cb()
259 if (strncmp(name, bdd->target_name, in be_dependent_clone_cb()
260 strlen(bdd->target_name)) == 0 || in be_dependent_clone_cb()
261 strstr(name, bdd->target_name) == name) { in be_dependent_clone_cb()
266 SLIST_FOREACH(entry, &bdd->promotelist, link) { in be_dependent_clone_cb()
301 SLIST_INSERT_HEAD(&bdd->promotelist, newentry, link); in be_dependent_clone_cb()
314 be_promote_dependent_clones(zfs_handle_t *zfs_hdl, struct be_destroy_data *bdd) in be_promote_dependent_clones() argument
320 snprintf(bdd->target_name, BE_MAXPATHLEN, "%s/", zfs_get_name(zfs_hdl)); in be_promote_dependent_clones()
321 err = zfs_iter_dependents(zfs_hdl, true, be_dependent_clone_cb, bdd); in be_promote_dependent_clones()
327 if (bdd->snapname != NULL && !SLIST_EMPTY(&bdd->promotelist)) in be_promote_dependent_clones()
329 while (!SLIST_EMPTY(&bdd->promotelist)) { in be_promote_dependent_clones()
330 entry = SLIST_FIRST(&bdd->promotelist); in be_promote_dependent_clones()
331 SLIST_REMOVE_HEAD(&bdd->promotelist, link); in be_promote_dependent_clones()
334 zfs_open(bdd->lbh->lzh, entry->name, ZFS_TYPE_FILESYSTEM) in be_promote_dependent_clones()
357 struct be_destroy_data *bdd; in be_destroy_cb() local
361 bdd = (struct be_destroy_data *)data; in be_destroy_cb()
362 if (bdd->snapname == NULL) { in be_destroy_cb()
382 bdd->snapname); in be_destroy_cb()
383 if (!zfs_dataset_exists(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT)) in be_destroy_cb()
385 snap = zfs_open(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT); in be_destroy_cb()
402 struct be_destroy_data bdd; in be_destroy_internal() local
409 bdd.lbh = lbh; in be_destroy_internal()
410 bdd.snapname = NULL; in be_destroy_internal()
411 SLIST_INIT(&bdd.promotelist); in be_destroy_internal()
434 free(bdd.snapname); in be_destroy_internal()
450 bdd.snapname = strdup(snapdelim + 1); in be_destroy_internal()
451 if (bdd.snapname == NULL) in be_destroy_internal()
456 free(bdd.snapname); in be_destroy_internal()
466 if ((err = be_promote_dependent_clones(fs, &bdd)) != 0) { in be_destroy_internal()
467 free(bdd.snapname); in be_destroy_internal()
504 err = be_destroy_cb(fs, &bdd); in be_destroy_internal()
506 free(bdd.snapname); in be_destroy_internal()