Lines Matching refs:ldc
704 be_get_path(struct libbe_deep_clone *ldc, const char *dspath, char *result, int result_size)
710 pos = strstr(dspath, ldc->lbh->root);
717 snprintf(result, result_size, "%s/%s", ldc->lbh->root, ldc->bename);
720 pos += strlen(ldc->lbh->root) + 1;
738 struct libbe_deep_clone *ldc;
741 ldc = (struct libbe_deep_clone *)data;
744 snprintf(snap_path, sizeof(snap_path), "%s@%s", dspath, ldc->snapname);
747 if (be_get_path(ldc, dspath, be_path, sizeof(be_path)) != BE_ERR_SUCCESS)
748 return (set_error(ldc->lbh, BE_ERR_UNKNOWN));
751 if (zfs_dataset_exists(ldc->lbh->lzh, be_path, ZFS_TYPE_DATASET))
752 return (set_error(ldc->lbh, BE_ERR_EXISTS));
755 if (!zfs_dataset_exists(ldc->lbh->lzh, snap_path, ZFS_TYPE_SNAPSHOT))
759 zfs_open(ldc->lbh->lzh, snap_path, ZFS_TYPE_SNAPSHOT)) == NULL)
760 return (set_error(ldc->lbh, BE_ERR_ZFSOPEN));
765 dccb.lbh = ldc->lbh;
773 return (set_error(ldc->lbh, BE_ERR_ZFSCLONE));
778 if (ldc->depth_limit == -1 || ldc->depth < ldc->depth_limit) {
779 ldc->depth++;
780 err = zfs_iter_filesystems(ds, be_clone_cb, ldc);
781 ldc->depth--;
784 return (set_error(ldc->lbh, err));
800 struct libbe_deep_clone ldc;
831 ldc.lbh = lbh;
832 ldc.bename = bename;
833 ldc.snapname = snapname;
834 ldc.depth = 0;
835 ldc.depth_limit = depth;
841 err = be_clone_cb(parent_hdl, &ldc);