Lines Matching defs:clone_root

76 struct clone_root {
154 struct clone_root *clone_roots;
1305 const struct clone_root *cr = elt;
1316 const struct clone_root *cr1 = e1;
1317 const struct clone_root *cr2 = e2;
1334 struct clone_root *clone_root;
1337 clone_root = bsearch((void *)(uintptr_t)root_id, bctx->sctx->clone_roots,
1339 sizeof(struct clone_root),
1341 if (!clone_root)
1345 if (clone_root->root == bctx->sctx->send_root &&
1354 if (clone_root->root == bctx->sctx->send_root) {
1375 clone_root->found_ref = true;
1383 if (num_bytes > clone_root->num_bytes) {
1384 clone_root->ino = ino;
1385 clone_root->offset = offset;
1386 clone_root->num_bytes = num_bytes;
1466 struct clone_root *root;
1469 sctx->clone_roots_cnt, sizeof(struct clone_root),
1573 struct clone_root **found)
1585 struct clone_root *cur_clone_root;
1702 struct clone_root *clone_root = &sctx->clone_roots[i];
1704 if (!clone_root->found_ref)
1713 clone_root->num_bytes > cur_clone_root->num_bytes) {
1714 cur_clone_root = clone_root;
1720 if (clone_root->num_bytes >= backref_ctx.extent_len)
5366 struct clone_root *clone_root)
5373 "send_clone offset=%llu, len=%d, clone_root=%llu, clone_inode=%llu, clone_offset=%llu",
5374 offset, len, clone_root->root->root_key.objectid,
5375 clone_root->ino, clone_root->offset);
5393 if (clone_root->root == sctx->send_root) {
5394 ret = get_inode_gen(sctx->send_root, clone_root->ino, &gen);
5397 ret = get_cur_path(sctx, clone_root->ino, gen, p);
5399 ret = get_inode_path(clone_root->root, clone_root->ino, p);
5413 if (!btrfs_is_empty_uuid(clone_root->root->root_item.received_uuid))
5415 clone_root->root->root_item.received_uuid);
5418 clone_root->root->root_item.uuid);
5420 btrfs_root_ctransid(&clone_root->root->root_item));
5423 clone_root->offset);
5867 struct clone_root *clone_root, const u64 disk_byte,
5891 if (clone_root->offset == 0 &&
5903 ret = get_inode_info(clone_root->root, clone_root->ino, &info);
5931 key.objectid = clone_root->ino;
5933 key.offset = clone_root->offset;
5934 ret = btrfs_search_slot(NULL, clone_root->root, &key, path, 0, 0);
5939 if (key.objectid == clone_root->ino &&
5955 ret = btrfs_next_leaf(clone_root->root, path);
5969 if (key.objectid != clone_root->ino ||
5982 if (key.offset + ext_len <= clone_root->offset)
5985 if (key.offset > clone_root->offset) {
5987 u64 hole_len = key.offset - clone_root->offset;
6000 clone_root->offset += hole_len;
6004 if (key.offset >= clone_root->offset + len)
6017 clone_root->offset = key.offset;
6025 clone_root->offset += extent_offset;
6033 const u64 src_end = clone_root->offset + clone_len;
6059 slen = ALIGN_DOWN(src_end - clone_root->offset,
6063 clone_root);
6072 clone_root);
6105 clone_root->offset += clone_len;
6116 if (clone_root->root == sctx->send_root &&
6117 clone_root->ino == sctx->cur_ino &&
6118 clone_root->offset >= sctx->cur_inode_next_write_offset)
6138 struct clone_root *clone_root)
6149 if (clone_root && IS_ALIGNED(end, bs)) {
6158 ret = clone_range(sctx, path, clone_root, disk_byte,
6500 struct clone_root *found_clone = NULL;
8076 struct btrfs_root *clone_root;
8117 if (arg->clone_sources_count > SZ_8M / sizeof(struct clone_root)) {
8243 clone_root = btrfs_get_fs_root(fs_info,
8245 if (IS_ERR(clone_root)) {
8246 ret = PTR_ERR(clone_root);
8249 spin_lock(&clone_root->root_item_lock);
8250 if (!btrfs_root_readonly(clone_root) ||
8251 btrfs_root_dead(clone_root)) {
8252 spin_unlock(&clone_root->root_item_lock);
8253 btrfs_put_root(clone_root);
8257 if (clone_root->dedupe_in_progress) {
8258 dedupe_in_progress_warn(clone_root);
8259 spin_unlock(&clone_root->root_item_lock);
8260 btrfs_put_root(clone_root);
8264 clone_root->send_in_progress++;
8265 spin_unlock(&clone_root->root_item_lock);
8267 sctx->clone_roots[i].root = clone_root;