Lines Matching refs:ret
265 int ret; member
435 int ret; in fs_path_prepare_for_add() local
441 ret = fs_path_ensure_buf(p, new_len); in fs_path_prepare_for_add()
442 if (ret < 0) in fs_path_prepare_for_add()
459 return ret; in fs_path_prepare_for_add()
464 int ret; in fs_path_add() local
467 ret = fs_path_prepare_for_add(p, name_len, &prepared); in fs_path_add()
468 if (ret < 0) in fs_path_add()
473 return ret; in fs_path_add()
478 int ret; in fs_path_add_path() local
481 ret = fs_path_prepare_for_add(p, p2->end - p2->start, &prepared); in fs_path_add_path()
482 if (ret < 0) in fs_path_add_path()
487 return ret; in fs_path_add_path()
494 int ret; in fs_path_add_from_extent_buffer() local
497 ret = fs_path_prepare_for_add(p, len, &prepared); in fs_path_add_from_extent_buffer()
498 if (ret < 0) in fs_path_add_from_extent_buffer()
504 return ret; in fs_path_add_from_extent_buffer()
509 int ret; in fs_path_copy() local
514 ret = fs_path_add_path(p, from); in fs_path_copy()
516 return ret; in fs_path_copy()
551 int ret; in write_buf() local
555 ret = kernel_write(filp, buf + pos, len - pos, off); in write_buf()
560 if (ret < 0) in write_buf()
561 return ret; in write_buf()
562 if (ret == 0) { in write_buf()
565 pos += ret; in write_buf()
625 ret = tlv_put(sctx, attrtype, data, attrlen); \
626 if (ret < 0) \
632 ret = tlv_put_u##bits(sctx, attrtype, value); \
633 if (ret < 0) \
643 ret = tlv_put_string(sctx, attrtype, str, len); \
644 if (ret < 0) \
649 ret = tlv_put_string(sctx, attrtype, p->start, \
651 if (ret < 0) \
656 ret = tlv_put_uuid(sctx, attrtype, uuid); \
657 if (ret < 0) \
662 ret = tlv_put_btrfs_timespec(sctx, attrtype, eb, ts); \
663 if (ret < 0) \
699 int ret; in send_cmd() local
710 ret = write_buf(sctx->send_filp, sctx->send_buf, sctx->send_size, in send_cmd()
717 return ret; in send_cmd()
727 int ret; in send_rename() local
731 ret = begin_cmd(sctx, BTRFS_SEND_C_RENAME); in send_rename()
732 if (ret < 0) in send_rename()
738 ret = send_cmd(sctx); in send_rename()
742 return ret; in send_rename()
752 int ret; in send_link() local
756 ret = begin_cmd(sctx, BTRFS_SEND_C_LINK); in send_link()
757 if (ret < 0) in send_link()
763 ret = send_cmd(sctx); in send_link()
767 return ret; in send_link()
776 int ret; in send_unlink() local
780 ret = begin_cmd(sctx, BTRFS_SEND_C_UNLINK); in send_unlink()
781 if (ret < 0) in send_unlink()
786 ret = send_cmd(sctx); in send_unlink()
790 return ret; in send_unlink()
799 int ret; in send_rmdir() local
803 ret = begin_cmd(sctx, BTRFS_SEND_C_RMDIR); in send_rmdir()
804 if (ret < 0) in send_rmdir()
809 ret = send_cmd(sctx); in send_rmdir()
813 return ret; in send_rmdir()
823 int ret; in __get_inode_info() local
830 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in __get_inode_info()
831 if (ret) { in __get_inode_info()
832 if (ret > 0) in __get_inode_info()
833 ret = -ENOENT; in __get_inode_info()
834 return ret; in __get_inode_info()
852 return ret; in __get_inode_info()
861 int ret; in get_inode_info() local
866 ret = __get_inode_info(root, path, ino, size, gen, mode, uid, gid, in get_inode_info()
869 return ret; in get_inode_info()
899 int ret = 0; in iterate_inode_ref() local
952 ret = PTR_ERR(start); in iterate_inode_ref()
957 ret = fs_path_ensure_buf(p, in iterate_inode_ref()
959 if (ret < 0) in iterate_inode_ref()
966 ret = PTR_ERR(start); in iterate_inode_ref()
973 ret = fs_path_add_from_extent_buffer(p, eb, name_off, in iterate_inode_ref()
975 if (ret < 0) in iterate_inode_ref()
980 ret = iterate(num, dir, index, p, ctx); in iterate_inode_ref()
981 if (ret) in iterate_inode_ref()
989 return ret; in iterate_inode_ref()
1007 int ret = 0; in iterate_dir_item() local
1032 ret = -ENOMEM; in iterate_dir_item()
1053 ret = -ENAMETOOLONG; in iterate_dir_item()
1058 ret = -E2BIG; in iterate_dir_item()
1066 ret = -ENAMETOOLONG; in iterate_dir_item()
1087 ret = -ENOMEM; in iterate_dir_item()
1100 ret = iterate(num, &di_key, buf, name_len, buf + name_len, in iterate_dir_item()
1102 if (ret < 0) in iterate_dir_item()
1104 if (ret) { in iterate_dir_item()
1105 ret = 0; in iterate_dir_item()
1114 return ret; in iterate_dir_item()
1120 int ret; in __copy_first_ref() local
1123 ret = fs_path_copy(pt, p); in __copy_first_ref()
1124 if (ret < 0) in __copy_first_ref()
1125 return ret; in __copy_first_ref()
1138 int ret; in get_inode_path() local
1152 ret = btrfs_search_slot_for_read(root, &key, p, 1, 0); in get_inode_path()
1153 if (ret < 0) in get_inode_path()
1155 if (ret) { in get_inode_path()
1156 ret = 1; in get_inode_path()
1163 ret = -ENOENT; in get_inode_path()
1167 ret = iterate_inode_ref(root, p, &found_key, 1, in get_inode_path()
1169 if (ret < 0) in get_inode_path()
1171 ret = 0; in get_inode_path()
1175 return ret; in get_inode_path()
1304 int ret; in find_extent_clone() local
1330 ret = -ENOMEM; in find_extent_clone()
1340 ret = 0; in find_extent_clone()
1348 ret = -ENOENT; in find_extent_clone()
1356 ret = -ENOENT; in find_extent_clone()
1362 ret = extent_from_logical(fs_info, disk_byte, tmp_path, in find_extent_clone()
1366 if (ret < 0) in find_extent_clone()
1369 ret = -EIO; in find_extent_clone()
1383 ret = -ENOENT; in find_extent_clone()
1433 ret = iterate_extent_inodes(fs_info, found_key.objectid, in find_extent_clone()
1437 if (ret < 0) in find_extent_clone()
1442 ret = -EIO; in find_extent_clone()
1470 ret = 0; in find_extent_clone()
1472 ret = -ENOENT; in find_extent_clone()
1478 return ret; in find_extent_clone()
1485 int ret; in read_symlink() local
1501 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in read_symlink()
1502 if (ret < 0) in read_symlink()
1504 if (ret) { in read_symlink()
1516 ret = -EIO; in read_symlink()
1530 ret = fs_path_add_from_extent_buffer(dest, path->nodes[0], off, len); in read_symlink()
1534 return ret; in read_symlink()
1545 int ret = 0; in gen_unique_name() local
1566 ret = PTR_ERR(di); in gen_unique_name()
1577 ret = 0; in gen_unique_name()
1586 ret = PTR_ERR(di); in gen_unique_name()
1598 ret = fs_path_add(dest, tmp, strlen(tmp)); in gen_unique_name()
1602 return ret; in gen_unique_name()
1615 int ret; in get_cur_inode_state() local
1621 ret = get_inode_info(sctx->send_root, ino, NULL, &left_gen, NULL, NULL, in get_cur_inode_state()
1623 if (ret < 0 && ret != -ENOENT) in get_cur_inode_state()
1625 left_ret = ret; in get_cur_inode_state()
1630 ret = get_inode_info(sctx->parent_root, ino, NULL, &right_gen, in get_cur_inode_state()
1632 if (ret < 0 && ret != -ENOENT) in get_cur_inode_state()
1634 right_ret = ret; in get_cur_inode_state()
1639 ret = inode_state_no_change; in get_cur_inode_state()
1642 ret = inode_state_did_create; in get_cur_inode_state()
1644 ret = inode_state_will_create; in get_cur_inode_state()
1647 ret = inode_state_did_delete; in get_cur_inode_state()
1649 ret = inode_state_will_delete; in get_cur_inode_state()
1651 ret = -ENOENT; in get_cur_inode_state()
1656 ret = inode_state_did_create; in get_cur_inode_state()
1658 ret = inode_state_will_create; in get_cur_inode_state()
1660 ret = -ENOENT; in get_cur_inode_state()
1665 ret = inode_state_did_delete; in get_cur_inode_state()
1667 ret = inode_state_will_delete; in get_cur_inode_state()
1669 ret = -ENOENT; in get_cur_inode_state()
1672 ret = -ENOENT; in get_cur_inode_state()
1676 return ret; in get_cur_inode_state()
1681 int ret; in is_inode_existent() local
1686 ret = get_cur_inode_state(sctx, ino, gen); in is_inode_existent()
1687 if (ret < 0) in is_inode_existent()
1690 if (ret == inode_state_no_change || in is_inode_existent()
1691 ret == inode_state_did_create || in is_inode_existent()
1692 ret == inode_state_will_delete) in is_inode_existent()
1693 ret = 1; in is_inode_existent()
1695 ret = 0; in is_inode_existent()
1698 return ret; in is_inode_existent()
1709 int ret = 0; in lookup_dir_item_inode() local
1721 ret = di ? PTR_ERR(di) : -ENOENT; in lookup_dir_item_inode()
1726 ret = -ENOENT; in lookup_dir_item_inode()
1734 return ret; in lookup_dir_item_inode()
1744 int ret; in get_first_ref() local
1759 ret = btrfs_search_slot_for_read(root, &key, path, 1, 0); in get_first_ref()
1760 if (ret < 0) in get_first_ref()
1762 if (!ret) in get_first_ref()
1765 if (ret || found_key.objectid != ino || in get_first_ref()
1768 ret = -ENOENT; in get_first_ref()
1777 ret = fs_path_add_from_extent_buffer(name, path->nodes[0], in get_first_ref()
1786 ret = fs_path_add_from_extent_buffer(name, path->nodes[0], in get_first_ref()
1790 if (ret < 0) in get_first_ref()
1795 ret = get_inode_info(root, parent_dir, NULL, dir_gen, NULL, in get_first_ref()
1797 if (ret < 0) in get_first_ref()
1805 return ret; in get_first_ref()
1812 int ret; in is_first_ref() local
1820 ret = get_first_ref(root, ino, &tmp_dir, NULL, tmp_name); in is_first_ref()
1821 if (ret < 0) in is_first_ref()
1825 ret = 0; in is_first_ref()
1829 ret = !memcmp(tmp_name->start, name, name_len); in is_first_ref()
1833 return ret; in is_first_ref()
1850 int ret = 0; in will_overwrite_ref() local
1858 ret = is_inode_existent(sctx, dir, dir_gen); in will_overwrite_ref()
1859 if (ret <= 0) in will_overwrite_ref()
1868 ret = get_inode_info(sctx->parent_root, dir, NULL, &gen, NULL, in will_overwrite_ref()
1870 if (ret < 0 && ret != -ENOENT) in will_overwrite_ref()
1872 if (ret) { in will_overwrite_ref()
1873 ret = 0; in will_overwrite_ref()
1880 ret = lookup_dir_item_inode(sctx->parent_root, dir, name, name_len, in will_overwrite_ref()
1882 if (ret < 0 && ret != -ENOENT) in will_overwrite_ref()
1884 if (ret) { in will_overwrite_ref()
1885 ret = 0; in will_overwrite_ref()
1896 ret = get_inode_info(sctx->parent_root, other_inode, NULL, in will_overwrite_ref()
1898 if (ret < 0) in will_overwrite_ref()
1901 ret = 1; in will_overwrite_ref()
1904 ret = 0; in will_overwrite_ref()
1908 return ret; in will_overwrite_ref()
1923 int ret = 0; in did_overwrite_ref() local
1931 ret = is_inode_existent(sctx, dir, dir_gen); in did_overwrite_ref()
1932 if (ret <= 0) in did_overwrite_ref()
1936 ret = get_inode_info(sctx->send_root, dir, NULL, &gen, NULL, in did_overwrite_ref()
1938 if (ret < 0 && ret != -ENOENT) in did_overwrite_ref()
1940 if (ret) { in did_overwrite_ref()
1941 ret = 0; in did_overwrite_ref()
1949 ret = lookup_dir_item_inode(sctx->send_root, dir, name, name_len, in did_overwrite_ref()
1951 if (ret < 0 && ret != -ENOENT) in did_overwrite_ref()
1953 if (ret) { in did_overwrite_ref()
1955 ret = 0; in did_overwrite_ref()
1959 ret = get_inode_info(sctx->send_root, ow_inode, NULL, &gen, NULL, NULL, in did_overwrite_ref()
1961 if (ret < 0) in did_overwrite_ref()
1965 ret = 0; in did_overwrite_ref()
1978 ret = 1; in did_overwrite_ref()
1980 ret = 0; in did_overwrite_ref()
1983 return ret; in did_overwrite_ref()
1993 int ret = 0; in did_overwrite_first_ref() local
2005 ret = get_first_ref(sctx->parent_root, ino, &dir, &dir_gen, name); in did_overwrite_first_ref()
2006 if (ret < 0) in did_overwrite_first_ref()
2009 ret = did_overwrite_ref(sctx, dir, dir_gen, ino, gen, in did_overwrite_first_ref()
2014 return ret; in did_overwrite_first_ref()
2026 int ret = 0; in name_cache_insert() local
2039 ret = radix_tree_insert(&sctx->name_cache, nce->ino, nce_head); in name_cache_insert()
2040 if (ret < 0) { in name_cache_insert()
2043 return ret; in name_cache_insert()
2050 return ret; in name_cache_insert()
2150 int ret; in __get_cur_name_and_parent() local
2169 ret = fs_path_add(dest, nce->name, nce->name_len); in __get_cur_name_and_parent()
2170 if (ret < 0) in __get_cur_name_and_parent()
2172 ret = nce->ret; in __get_cur_name_and_parent()
2182 ret = is_inode_existent(sctx, ino, gen); in __get_cur_name_and_parent()
2183 if (ret < 0) in __get_cur_name_and_parent()
2186 if (!ret) { in __get_cur_name_and_parent()
2187 ret = gen_unique_name(sctx, ino, gen, dest); in __get_cur_name_and_parent()
2188 if (ret < 0) in __get_cur_name_and_parent()
2190 ret = 1; in __get_cur_name_and_parent()
2199 ret = get_first_ref(sctx->send_root, ino, in __get_cur_name_and_parent()
2202 ret = get_first_ref(sctx->parent_root, ino, in __get_cur_name_and_parent()
2204 if (ret < 0) in __get_cur_name_and_parent()
2211 ret = did_overwrite_ref(sctx, *parent_ino, *parent_gen, ino, gen, in __get_cur_name_and_parent()
2213 if (ret < 0) in __get_cur_name_and_parent()
2215 if (ret) { in __get_cur_name_and_parent()
2217 ret = gen_unique_name(sctx, ino, gen, dest); in __get_cur_name_and_parent()
2218 if (ret < 0) in __get_cur_name_and_parent()
2220 ret = 1; in __get_cur_name_and_parent()
2229 ret = -ENOMEM; in __get_cur_name_and_parent()
2238 nce->ret = ret; in __get_cur_name_and_parent()
2248 ret = nce_ret; in __get_cur_name_and_parent()
2252 return ret; in __get_cur_name_and_parent()
2283 int ret = 0; in get_cur_path() local
2291 ret = -ENOMEM; in get_cur_path()
2304 ret = gen_unique_name(sctx, ino, gen, name); in get_cur_path()
2305 if (ret < 0) in get_cur_path()
2307 ret = fs_path_add_path(dest, name); in get_cur_path()
2313 ret = gen_unique_name(sctx, ino, gen, name); in get_cur_path()
2316 ret = get_first_ref(sctx->parent_root, ino, in get_cur_path()
2319 ret = __get_cur_name_and_parent(sctx, ino, gen, in get_cur_path()
2322 if (ret) in get_cur_path()
2326 if (ret < 0) in get_cur_path()
2329 ret = fs_path_add_path(dest, name); in get_cur_path()
2330 if (ret < 0) in get_cur_path()
2339 if (!ret) in get_cur_path()
2341 return ret; in get_cur_path()
2349 int ret; in send_subvol_begin() local
2373 ret = btrfs_search_slot_for_read(send_root->fs_info->tree_root, in send_subvol_begin()
2375 if (ret < 0) in send_subvol_begin()
2377 if (ret) { in send_subvol_begin()
2378 ret = -ENOENT; in send_subvol_begin()
2386 ret = -ENOENT; in send_subvol_begin()
2395 ret = begin_cmd(sctx, BTRFS_SEND_C_SNAPSHOT); in send_subvol_begin()
2396 if (ret < 0) in send_subvol_begin()
2399 ret = begin_cmd(sctx, BTRFS_SEND_C_SUBVOL); in send_subvol_begin()
2400 if (ret < 0) in send_subvol_begin()
2426 ret = send_cmd(sctx); in send_subvol_begin()
2432 return ret; in send_subvol_begin()
2438 int ret = 0; in send_truncate() local
2447 ret = begin_cmd(sctx, BTRFS_SEND_C_TRUNCATE); in send_truncate()
2448 if (ret < 0) in send_truncate()
2451 ret = get_cur_path(sctx, ino, gen, p); in send_truncate()
2452 if (ret < 0) in send_truncate()
2457 ret = send_cmd(sctx); in send_truncate()
2462 return ret; in send_truncate()
2468 int ret = 0; in send_chmod() local
2477 ret = begin_cmd(sctx, BTRFS_SEND_C_CHMOD); in send_chmod()
2478 if (ret < 0) in send_chmod()
2481 ret = get_cur_path(sctx, ino, gen, p); in send_chmod()
2482 if (ret < 0) in send_chmod()
2487 ret = send_cmd(sctx); in send_chmod()
2492 return ret; in send_chmod()
2498 int ret = 0; in send_chown() local
2508 ret = begin_cmd(sctx, BTRFS_SEND_C_CHOWN); in send_chown()
2509 if (ret < 0) in send_chown()
2512 ret = get_cur_path(sctx, ino, gen, p); in send_chown()
2513 if (ret < 0) in send_chown()
2519 ret = send_cmd(sctx); in send_chown()
2524 return ret; in send_chown()
2530 int ret = 0; in send_utimes() local
2546 ret = -ENOMEM; in send_utimes()
2553 ret = btrfs_search_slot(NULL, sctx->send_root, &key, path, 0, 0); in send_utimes()
2554 if (ret > 0) in send_utimes()
2555 ret = -ENOENT; in send_utimes()
2556 if (ret < 0) in send_utimes()
2563 ret = begin_cmd(sctx, BTRFS_SEND_C_UTIMES); in send_utimes()
2564 if (ret < 0) in send_utimes()
2567 ret = get_cur_path(sctx, ino, gen, p); in send_utimes()
2568 if (ret < 0) in send_utimes()
2576 ret = send_cmd(sctx); in send_utimes()
2582 return ret; in send_utimes()
2593 int ret = 0; in send_create_inode() local
2607 ret = get_inode_info(sctx->send_root, ino, NULL, &gen, &mode, in send_create_inode()
2609 if (ret < 0) in send_create_inode()
2632 ret = -EOPNOTSUPP; in send_create_inode()
2636 ret = begin_cmd(sctx, cmd); in send_create_inode()
2637 if (ret < 0) in send_create_inode()
2640 ret = gen_unique_name(sctx, ino, gen, p); in send_create_inode()
2641 if (ret < 0) in send_create_inode()
2649 ret = read_symlink(sctx->send_root, ino, p); in send_create_inode()
2650 if (ret < 0) in send_create_inode()
2659 ret = send_cmd(sctx); in send_create_inode()
2660 if (ret < 0) in send_create_inode()
2667 return ret; in send_create_inode()
2677 int ret = 0; in did_create_dir() local
2688 ret = -ENOMEM; in did_create_dir()
2695 ret = btrfs_search_slot(NULL, sctx->send_root, &key, path, 0, 0); in did_create_dir()
2696 if (ret < 0) in did_create_dir()
2703 ret = btrfs_next_leaf(sctx->send_root, path); in did_create_dir()
2704 if (ret < 0) { in did_create_dir()
2706 } else if (ret > 0) { in did_create_dir()
2707 ret = 0; in did_create_dir()
2716 ret = 0; in did_create_dir()
2725 ret = 1; in did_create_dir()
2734 return ret; in did_create_dir()
2745 int ret; in send_create_inode_if_needed() local
2748 ret = did_create_dir(sctx, sctx->cur_ino); in send_create_inode_if_needed()
2749 if (ret < 0) in send_create_inode_if_needed()
2751 if (ret) { in send_create_inode_if_needed()
2752 ret = 0; in send_create_inode_if_needed()
2757 ret = send_create_inode(sctx, sctx->cur_ino); in send_create_inode_if_needed()
2758 if (ret < 0) in send_create_inode_if_needed()
2762 return ret; in send_create_inode_if_needed()
2844 int ret; in orphanize_inode() local
2851 ret = gen_unique_name(sctx, ino, gen, orphan); in orphanize_inode()
2852 if (ret < 0) in orphanize_inode()
2855 ret = send_rename(sctx, path, orphan); in orphanize_inode()
2859 return ret; in orphanize_inode()
2942 int ret = 0; in can_rmdir() local
2969 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in can_rmdir()
2970 if (ret < 0) in can_rmdir()
2977 ret = btrfs_next_leaf(root, path); in can_rmdir()
2978 if (ret < 0) in can_rmdir()
2980 else if (ret > 0) in can_rmdir()
2998 ret = PTR_ERR(odi); in can_rmdir()
3005 ret = 0; in can_rmdir()
3012 ret = PTR_ERR(odi); in can_rmdir()
3017 ret = 0; in can_rmdir()
3025 ret = 1; in can_rmdir()
3029 return ret; in can_rmdir()
3111 int ret; in add_pending_dir_move() local
3137 ret = dup_ref(cur, &pm->update_refs); in add_pending_dir_move()
3138 if (ret < 0) in add_pending_dir_move()
3142 ret = dup_ref(cur, &pm->update_refs); in add_pending_dir_move()
3143 if (ret < 0) in add_pending_dir_move()
3147 ret = add_waiting_dir_move(sctx, pm->ino, is_orphan); in add_pending_dir_move()
3148 if (ret) in add_pending_dir_move()
3157 ret = 0; in add_pending_dir_move()
3159 if (ret) { in add_pending_dir_move()
3163 return ret; in add_pending_dir_move()
3187 int ret = 0; in path_loop() local
3201 ret = get_first_ref(sctx->parent_root, ino, in path_loop()
3204 ret = __get_cur_name_and_parent(sctx, ino, gen, in path_loop()
3207 if (ret > 0) { in path_loop()
3208 ret = 0; in path_loop()
3212 if (ret < 0) in path_loop()
3215 ret = 1; in path_loop()
3223 return ret; in path_loop()
3239 int ret; in apply_dir_move() local
3244 ret = -ENOMEM; in apply_dir_move()
3256 ret = gen_unique_name(sctx, pm->ino, in apply_dir_move()
3259 ret = get_first_ref(sctx->parent_root, pm->ino, in apply_dir_move()
3261 if (ret < 0) in apply_dir_move()
3263 ret = get_cur_path(sctx, parent_ino, parent_gen, in apply_dir_move()
3265 if (ret < 0) in apply_dir_move()
3267 ret = fs_path_add_path(from_path, name); in apply_dir_move()
3269 if (ret < 0) in apply_dir_move()
3273 ret = path_loop(sctx, name, pm->ino, pm->gen, &ancestor); in apply_dir_move()
3274 if (ret < 0) in apply_dir_move()
3276 if (ret) { in apply_dir_move()
3279 ret = add_pending_dir_move(sctx, pm->ino, pm->gen, ancestor, in apply_dir_move()
3282 if (ret < 0) in apply_dir_move()
3295 ret = get_cur_path(sctx, pm->ino, pm->gen, to_path); in apply_dir_move()
3296 if (ret < 0) in apply_dir_move()
3299 ret = send_rename(sctx, from_path, to_path); in apply_dir_move()
3300 if (ret < 0) in apply_dir_move()
3314 ret = can_rmdir(sctx, rmdir_ino, gen, sctx->cur_ino); in apply_dir_move()
3315 if (ret < 0) in apply_dir_move()
3317 if (!ret) in apply_dir_move()
3322 ret = -ENOMEM; in apply_dir_move()
3325 ret = get_cur_path(sctx, rmdir_ino, gen, name); in apply_dir_move()
3326 if (ret < 0) in apply_dir_move()
3328 ret = send_rmdir(sctx, name); in apply_dir_move()
3329 if (ret < 0) in apply_dir_move()
3334 ret = send_utimes(sctx, pm->ino, pm->gen); in apply_dir_move()
3335 if (ret < 0) in apply_dir_move()
3346 ret = get_inode_info(sctx->send_root, cur->dir, NULL, in apply_dir_move()
3348 if (ret == -ENOENT) { in apply_dir_move()
3349 ret = 0; in apply_dir_move()
3352 if (ret < 0) in apply_dir_move()
3355 ret = send_utimes(sctx, cur->dir, cur->dir_gen); in apply_dir_move()
3356 if (ret < 0) in apply_dir_move()
3366 return ret; in apply_dir_move()
3402 int ret = 0; in apply_children_dir_moves() local
3414 ret = apply_dir_move(sctx, pm); in apply_children_dir_moves()
3416 if (ret) in apply_children_dir_moves()
3429 return ret; in apply_children_dir_moves()
3479 int ret = 0; in wait_for_dest_dir_move() local
3493 ret = btrfs_search_slot(NULL, sctx->parent_root, &key, path, 0, 0); in wait_for_dest_dir_move()
3494 if (ret < 0) { in wait_for_dest_dir_move()
3496 } else if (ret > 0) { in wait_for_dest_dir_move()
3497 ret = 0; in wait_for_dest_dir_move()
3504 ret = 0; in wait_for_dest_dir_move()
3517 ret = 0; in wait_for_dest_dir_move()
3521 ret = get_inode_info(sctx->parent_root, di_key.objectid, NULL, in wait_for_dest_dir_move()
3523 if (ret < 0) in wait_for_dest_dir_move()
3525 ret = get_inode_info(sctx->send_root, di_key.objectid, NULL, in wait_for_dest_dir_move()
3527 if (ret < 0) { in wait_for_dest_dir_move()
3528 if (ret == -ENOENT) in wait_for_dest_dir_move()
3529 ret = 0; in wait_for_dest_dir_move()
3535 ret = 0; in wait_for_dest_dir_move()
3541 ret = add_pending_dir_move(sctx, in wait_for_dest_dir_move()
3548 if (!ret) in wait_for_dest_dir_move()
3549 ret = 1; in wait_for_dest_dir_move()
3553 return ret; in wait_for_dest_dir_move()
3575 int ret; in check_ino_in_path() local
3578 ret = get_first_ref(root, ino, &parent, &parent_gen, fs_path); in check_ino_in_path()
3579 if (ret < 0) in check_ino_in_path()
3580 return ret; in check_ino_in_path()
3600 int ret = 0; in is_ancestor() local
3613 ret = -ENOMEM; in is_ancestor()
3621 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in is_ancestor()
3622 if (ret < 0) in is_ancestor()
3632 ret = btrfs_next_leaf(root, path); in is_ancestor()
3633 if (ret < 0) in is_ancestor()
3635 if (ret > 0) in is_ancestor()
3669 ret = get_inode_info(root, parent, NULL, &parent_gen, in is_ancestor()
3671 if (ret < 0) in is_ancestor()
3673 ret = check_ino_in_path(root, ino1, ino1_gen, in is_ancestor()
3675 if (ret) in is_ancestor()
3680 ret = 0; in is_ancestor()
3685 return ret; in is_ancestor()
3692 int ret = 0; in wait_for_parent_move() local
3703 ret = -ENOMEM; in wait_for_parent_move()
3728 ret = is_ancestor(sctx->parent_root, in wait_for_parent_move()
3731 if (ret) in wait_for_parent_move()
3738 ret = get_first_ref(sctx->send_root, ino, &parent_ino_after, in wait_for_parent_move()
3740 if (ret < 0) in wait_for_parent_move()
3742 ret = get_first_ref(sctx->parent_root, ino, &parent_ino_before, in wait_for_parent_move()
3744 if (ret < 0 && ret != -ENOENT) { in wait_for_parent_move()
3746 } else if (ret == -ENOENT) { in wait_for_parent_move()
3747 ret = 0; in wait_for_parent_move()
3758 ret = get_inode_info(sctx->parent_root, ino, NULL, in wait_for_parent_move()
3761 if (ret < 0) in wait_for_parent_move()
3764 ret = 1; in wait_for_parent_move()
3776 if (ret == 1) { in wait_for_parent_move()
3777 ret = add_pending_dir_move(sctx, in wait_for_parent_move()
3784 if (!ret) in wait_for_parent_move()
3785 ret = 1; in wait_for_parent_move()
3788 return ret; in wait_for_parent_move()
3793 int ret; in update_ref_path() local
3804 ret = get_cur_path(sctx, ref->dir, ref->dir_gen, new_path); in update_ref_path()
3805 if (ret < 0) { in update_ref_path()
3807 return ret; in update_ref_path()
3809 ret = fs_path_add(new_path, ref->name, ref->name_len); in update_ref_path()
3810 if (ret < 0) { in update_ref_path()
3812 return ret; in update_ref_path()
3865 int ret; in refresh_ref_path() local
3872 ret = get_cur_path(sctx, ref->dir, ref->dir_gen, ref->full_path); in refresh_ref_path()
3873 if (ret < 0) in refresh_ref_path()
3876 ret = fs_path_add(ref->full_path, name, ref->name_len); in refresh_ref_path()
3877 if (ret < 0) in refresh_ref_path()
3884 return ret; in refresh_ref_path()
3893 int ret = 0; in process_recorded_refs() local
3919 ret = -ENOMEM; in process_recorded_refs()
3935 ret = did_overwrite_first_ref(sctx, sctx->cur_ino, in process_recorded_refs()
3937 if (ret < 0) in process_recorded_refs()
3939 if (ret) in process_recorded_refs()
3943 ret = gen_unique_name(sctx, sctx->cur_ino, in process_recorded_refs()
3945 if (ret < 0) in process_recorded_refs()
3949 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, in process_recorded_refs()
3951 if (ret < 0) in process_recorded_refs()
3994 ret = get_cur_inode_state(sctx, cur->dir, cur->dir_gen); in process_recorded_refs()
3995 if (ret < 0) in process_recorded_refs()
3997 if (ret == inode_state_will_create) in process_recorded_refs()
4006 ret = will_overwrite_ref(sctx, cur->dir, cur->dir_gen, in process_recorded_refs()
4009 if (ret < 0) in process_recorded_refs()
4011 if (ret) { in process_recorded_refs()
4012 ret = is_first_ref(sctx->parent_root, in process_recorded_refs()
4015 if (ret < 0) in process_recorded_refs()
4017 if (ret) { in process_recorded_refs()
4022 ret = refresh_ref_path(sctx, cur); in process_recorded_refs()
4023 if (ret < 0) in process_recorded_refs()
4027 ret = orphanize_inode(sctx, ow_inode, ow_gen, in process_recorded_refs()
4029 if (ret < 0) in process_recorded_refs()
4070 ret = is_ancestor(sctx->parent_root, in process_recorded_refs()
4073 if (ret > 0) { in process_recorded_refs()
4076 ret = get_cur_path(sctx, sctx->cur_ino, in process_recorded_refs()
4080 if (ret < 0) in process_recorded_refs()
4090 ret = refresh_ref_path(sctx, cur); in process_recorded_refs()
4091 if (ret < 0) in process_recorded_refs()
4094 ret = send_unlink(sctx, cur->full_path); in process_recorded_refs()
4095 if (ret < 0) in process_recorded_refs()
4110 ret = get_cur_inode_state(sctx, cur->dir, cur->dir_gen); in process_recorded_refs()
4111 if (ret < 0) in process_recorded_refs()
4113 if (ret == inode_state_will_create) { in process_recorded_refs()
4114 ret = 0; in process_recorded_refs()
4123 ret = 1; in process_recorded_refs()
4132 if (!ret) in process_recorded_refs()
4133 ret = did_create_dir(sctx, cur->dir); in process_recorded_refs()
4134 if (ret < 0) in process_recorded_refs()
4136 if (!ret) { in process_recorded_refs()
4137 ret = send_create_inode(sctx, cur->dir); in process_recorded_refs()
4138 if (ret < 0) in process_recorded_refs()
4144 ret = wait_for_dest_dir_move(sctx, cur, is_orphan); in process_recorded_refs()
4145 if (ret < 0) in process_recorded_refs()
4147 if (ret == 1) { in process_recorded_refs()
4155 ret = wait_for_parent_move(sctx, cur, is_orphan); in process_recorded_refs()
4156 if (ret < 0) in process_recorded_refs()
4158 if (ret == 1) { in process_recorded_refs()
4170 ret = send_rename(sctx, valid_path, cur->full_path); in process_recorded_refs()
4171 if (ret < 0) in process_recorded_refs()
4174 ret = fs_path_copy(valid_path, cur->full_path); in process_recorded_refs()
4175 if (ret < 0) in process_recorded_refs()
4184 ret = send_rename(sctx, valid_path, in process_recorded_refs()
4186 if (!ret) in process_recorded_refs()
4187 ret = fs_path_copy(valid_path, in process_recorded_refs()
4189 if (ret < 0) in process_recorded_refs()
4200 ret = update_ref_path(sctx, cur); in process_recorded_refs()
4201 if (ret < 0) in process_recorded_refs()
4204 ret = send_link(sctx, cur->full_path, in process_recorded_refs()
4206 if (ret < 0) in process_recorded_refs()
4210 ret = dup_ref(cur, &check_dirs); in process_recorded_refs()
4211 if (ret < 0) in process_recorded_refs()
4222 ret = can_rmdir(sctx, sctx->cur_ino, sctx->cur_inode_gen, in process_recorded_refs()
4224 if (ret < 0) in process_recorded_refs()
4226 if (ret) { in process_recorded_refs()
4227 ret = send_rmdir(sctx, valid_path); in process_recorded_refs()
4228 if (ret < 0) in process_recorded_refs()
4231 ret = orphanize_inode(sctx, sctx->cur_ino, in process_recorded_refs()
4233 if (ret < 0) in process_recorded_refs()
4239 ret = dup_ref(cur, &check_dirs); in process_recorded_refs()
4240 if (ret < 0) in process_recorded_refs()
4250 ret = dup_ref(cur, &check_dirs); in process_recorded_refs()
4251 if (ret < 0) in process_recorded_refs()
4260 ret = did_overwrite_ref(sctx, cur->dir, cur->dir_gen, in process_recorded_refs()
4263 if (ret < 0) in process_recorded_refs()
4265 if (!ret) { in process_recorded_refs()
4274 ret = update_ref_path(sctx, cur); in process_recorded_refs()
4275 if (ret < 0) in process_recorded_refs()
4278 ret = send_unlink(sctx, cur->full_path); in process_recorded_refs()
4279 if (ret < 0) in process_recorded_refs()
4282 ret = dup_ref(cur, &check_dirs); in process_recorded_refs()
4283 if (ret < 0) in process_recorded_refs()
4295 ret = send_unlink(sctx, valid_path); in process_recorded_refs()
4296 if (ret < 0) in process_recorded_refs()
4316 ret = get_cur_inode_state(sctx, cur->dir, cur->dir_gen); in process_recorded_refs()
4317 if (ret < 0) in process_recorded_refs()
4320 if (ret == inode_state_did_create || in process_recorded_refs()
4321 ret == inode_state_no_change) { in process_recorded_refs()
4323 ret = send_utimes(sctx, cur->dir, cur->dir_gen); in process_recorded_refs()
4324 if (ret < 0) in process_recorded_refs()
4326 } else if (ret == inode_state_did_delete && in process_recorded_refs()
4328 ret = can_rmdir(sctx, cur->dir, cur->dir_gen, in process_recorded_refs()
4330 if (ret < 0) in process_recorded_refs()
4332 if (ret) { in process_recorded_refs()
4333 ret = get_cur_path(sctx, cur->dir, in process_recorded_refs()
4335 if (ret < 0) in process_recorded_refs()
4337 ret = send_rmdir(sctx, valid_path); in process_recorded_refs()
4338 if (ret < 0) in process_recorded_refs()
4345 ret = 0; in process_recorded_refs()
4351 return ret; in process_recorded_refs()
4357 int ret = 0; in record_ref() local
4366 ret = get_inode_info(root, dir, NULL, &gen, NULL, NULL, in record_ref()
4368 if (ret < 0) in record_ref()
4371 ret = get_cur_path(sctx, dir, gen, p); in record_ref()
4372 if (ret < 0) in record_ref()
4374 ret = fs_path_add_path(p, name); in record_ref()
4375 if (ret < 0) in record_ref()
4378 ret = __record_ref(refs, dir, gen, p); in record_ref()
4381 if (ret) in record_ref()
4383 return ret; in record_ref()
4406 int ret; in record_new_ref() local
4408 ret = iterate_inode_ref(sctx->send_root, sctx->left_path, in record_new_ref()
4410 if (ret < 0) in record_new_ref()
4412 ret = 0; in record_new_ref()
4415 return ret; in record_new_ref()
4420 int ret; in record_deleted_ref() local
4422 ret = iterate_inode_ref(sctx->parent_root, sctx->right_path, in record_deleted_ref()
4424 if (ret < 0) in record_deleted_ref()
4426 ret = 0; in record_deleted_ref()
4429 return ret; in record_deleted_ref()
4446 int ret; in __find_iref() local
4454 ret = get_inode_info(ctx->root, dir, NULL, &dir_gen, NULL, in __find_iref()
4456 if (ret) in __find_iref()
4457 return ret; in __find_iref()
4471 int ret; in find_iref() local
4480 ret = iterate_inode_ref(root, path, key, 0, __find_iref, &ctx); in find_iref()
4481 if (ret < 0) in find_iref()
4482 return ret; in find_iref()
4495 int ret; in __record_changed_new_ref() local
4498 ret = get_inode_info(sctx->send_root, dir, NULL, &dir_gen, NULL, in __record_changed_new_ref()
4500 if (ret) in __record_changed_new_ref()
4501 return ret; in __record_changed_new_ref()
4503 ret = find_iref(sctx->parent_root, sctx->right_path, in __record_changed_new_ref()
4505 if (ret == -ENOENT) in __record_changed_new_ref()
4506 ret = __record_new_ref(num, dir, index, name, sctx); in __record_changed_new_ref()
4507 else if (ret > 0) in __record_changed_new_ref()
4508 ret = 0; in __record_changed_new_ref()
4510 return ret; in __record_changed_new_ref()
4518 int ret; in __record_changed_deleted_ref() local
4521 ret = get_inode_info(sctx->parent_root, dir, NULL, &dir_gen, NULL, in __record_changed_deleted_ref()
4523 if (ret) in __record_changed_deleted_ref()
4524 return ret; in __record_changed_deleted_ref()
4526 ret = find_iref(sctx->send_root, sctx->left_path, sctx->cmp_key, in __record_changed_deleted_ref()
4528 if (ret == -ENOENT) in __record_changed_deleted_ref()
4529 ret = __record_deleted_ref(num, dir, index, name, sctx); in __record_changed_deleted_ref()
4530 else if (ret > 0) in __record_changed_deleted_ref()
4531 ret = 0; in __record_changed_deleted_ref()
4533 return ret; in __record_changed_deleted_ref()
4538 int ret = 0; in record_changed_ref() local
4540 ret = iterate_inode_ref(sctx->send_root, sctx->left_path, in record_changed_ref()
4542 if (ret < 0) in record_changed_ref()
4544 ret = iterate_inode_ref(sctx->parent_root, sctx->right_path, in record_changed_ref()
4546 if (ret < 0) in record_changed_ref()
4548 ret = 0; in record_changed_ref()
4551 return ret; in record_changed_ref()
4561 int ret; in process_all_refs() local
4584 ret = -EINVAL; in process_all_refs()
4591 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in process_all_refs()
4592 if (ret < 0) in process_all_refs()
4599 ret = btrfs_next_leaf(root, path); in process_all_refs()
4600 if (ret < 0) in process_all_refs()
4602 else if (ret > 0) in process_all_refs()
4614 ret = iterate_inode_ref(root, path, &found_key, 0, cb, sctx); in process_all_refs()
4615 if (ret < 0) in process_all_refs()
4627 ret = process_recorded_refs(sctx, &pending_move); in process_all_refs()
4630 return ret; in process_all_refs()
4638 int ret = 0; in send_set_xattr() local
4640 ret = begin_cmd(sctx, BTRFS_SEND_C_SET_XATTR); in send_set_xattr()
4641 if (ret < 0) in send_set_xattr()
4648 ret = send_cmd(sctx); in send_set_xattr()
4652 return ret; in send_set_xattr()
4659 int ret = 0; in send_remove_xattr() local
4661 ret = begin_cmd(sctx, BTRFS_SEND_C_REMOVE_XATTR); in send_remove_xattr()
4662 if (ret < 0) in send_remove_xattr()
4668 ret = send_cmd(sctx); in send_remove_xattr()
4672 return ret; in send_remove_xattr()
4680 int ret; in __process_new_xattr() local
4709 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in __process_new_xattr()
4710 if (ret < 0) in __process_new_xattr()
4713 ret = send_set_xattr(sctx, p, name, name_len, data, data_len); in __process_new_xattr()
4717 return ret; in __process_new_xattr()
4725 int ret; in __process_deleted_xattr() local
4733 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in __process_deleted_xattr()
4734 if (ret < 0) in __process_deleted_xattr()
4737 ret = send_remove_xattr(sctx, p, name, name_len); in __process_deleted_xattr()
4741 return ret; in __process_deleted_xattr()
4746 int ret = 0; in process_new_xattr() local
4748 ret = iterate_dir_item(sctx->send_root, sctx->left_path, in process_new_xattr()
4751 return ret; in process_new_xattr()
4793 int ret; in find_xattr() local
4802 ret = iterate_dir_item(root, path, __find_xattr, &ctx); in find_xattr()
4803 if (ret < 0) in find_xattr()
4804 return ret; in find_xattr()
4823 int ret; in __process_changed_new_xattr() local
4828 ret = find_xattr(sctx->parent_root, sctx->right_path, in __process_changed_new_xattr()
4831 if (ret == -ENOENT) { in __process_changed_new_xattr()
4832 ret = __process_new_xattr(num, di_key, name, name_len, data, in __process_changed_new_xattr()
4834 } else if (ret >= 0) { in __process_changed_new_xattr()
4837 ret = __process_new_xattr(num, di_key, name, name_len, in __process_changed_new_xattr()
4840 ret = 0; in __process_changed_new_xattr()
4845 return ret; in __process_changed_new_xattr()
4853 int ret; in __process_changed_deleted_xattr() local
4856 ret = find_xattr(sctx->send_root, sctx->left_path, sctx->cmp_key, in __process_changed_deleted_xattr()
4858 if (ret == -ENOENT) in __process_changed_deleted_xattr()
4859 ret = __process_deleted_xattr(num, di_key, name, name_len, data, in __process_changed_deleted_xattr()
4861 else if (ret >= 0) in __process_changed_deleted_xattr()
4862 ret = 0; in __process_changed_deleted_xattr()
4864 return ret; in __process_changed_deleted_xattr()
4869 int ret = 0; in process_changed_xattr() local
4871 ret = iterate_dir_item(sctx->send_root, sctx->left_path, in process_changed_xattr()
4873 if (ret < 0) in process_changed_xattr()
4875 ret = iterate_dir_item(sctx->parent_root, sctx->right_path, in process_changed_xattr()
4879 return ret; in process_changed_xattr()
4884 int ret; in process_all_new_xattrs() local
4901 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in process_all_new_xattrs()
4902 if (ret < 0) in process_all_new_xattrs()
4909 ret = btrfs_next_leaf(root, path); in process_all_new_xattrs()
4910 if (ret < 0) { in process_all_new_xattrs()
4912 } else if (ret > 0) { in process_all_new_xattrs()
4913 ret = 0; in process_all_new_xattrs()
4922 ret = 0; in process_all_new_xattrs()
4926 ret = iterate_dir_item(root, path, __process_new_xattr, sctx); in process_all_new_xattrs()
4927 if (ret < 0) in process_all_new_xattrs()
4935 return ret; in process_all_new_xattrs()
4966 int ret; in put_file_data() local
4968 ret = put_data_header(sctx, len); in put_file_data()
4969 if (ret) in put_file_data()
4970 return ret; in put_file_data()
4994 ret = -ENOMEM; in put_file_data()
5014 ret = -EIO; in put_file_data()
5031 return ret; in put_file_data()
5041 int ret = 0; in send_write() local
5050 ret = begin_cmd(sctx, BTRFS_SEND_C_WRITE); in send_write()
5051 if (ret < 0) in send_write()
5054 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in send_write()
5055 if (ret < 0) in send_write()
5060 ret = put_file_data(sctx, offset, len); in send_write()
5061 if (ret < 0) in send_write()
5064 ret = send_cmd(sctx); in send_write()
5069 return ret; in send_write()
5079 int ret = 0; in send_clone() local
5092 ret = begin_cmd(sctx, BTRFS_SEND_C_CLONE); in send_clone()
5093 if (ret < 0) in send_clone()
5096 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in send_clone()
5097 if (ret < 0) in send_clone()
5105 ret = get_inode_info(sctx->send_root, clone_root->ino, NULL, in send_clone()
5107 if (ret < 0) in send_clone()
5109 ret = get_cur_path(sctx, clone_root->ino, gen, p); in send_clone()
5111 ret = get_inode_path(clone_root->root, clone_root->ino, p); in send_clone()
5113 if (ret < 0) in send_clone()
5137 ret = send_cmd(sctx); in send_clone()
5142 return ret; in send_clone()
5151 int ret = 0; in send_update_extent() local
5158 ret = begin_cmd(sctx, BTRFS_SEND_C_UPDATE_EXTENT); in send_update_extent()
5159 if (ret < 0) in send_update_extent()
5162 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in send_update_extent()
5163 if (ret < 0) in send_update_extent()
5170 ret = send_cmd(sctx); in send_update_extent()
5175 return ret; in send_update_extent()
5183 int ret = 0; in send_hole() local
5206 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, p); in send_hole()
5207 if (ret < 0) in send_hole()
5212 ret = begin_cmd(sctx, BTRFS_SEND_C_WRITE); in send_hole()
5213 if (ret < 0) in send_hole()
5217 ret = put_data_header(sctx, len); in send_hole()
5218 if (ret < 0) in send_hole()
5222 ret = send_cmd(sctx); in send_hole()
5223 if (ret < 0) in send_hole()
5230 return ret; in send_hole()
5245 int ret; in send_extent_data() local
5247 ret = send_write(sctx, offset + sent, size); in send_extent_data()
5248 if (ret < 0) in send_extent_data()
5249 return ret; in send_extent_data()
5271 int ret = 0; in send_capabilities() local
5283 ret = PTR_ERR(di); in send_capabilities()
5293 ret = -ENOMEM; in send_capabilities()
5297 ret = get_cur_path(sctx, sctx->cur_ino, sctx->cur_inode_gen, fspath); in send_capabilities()
5298 if (ret < 0) in send_capabilities()
5304 ret = send_set_xattr(sctx, fspath, XATTR_NAME_CAPS, in send_capabilities()
5310 return ret; in send_capabilities()
5322 int ret; in clone_range() local
5352 ret = __get_inode_info(clone_root->root, path, clone_root->ino, in clone_range()
5355 if (ret < 0) in clone_range()
5383 ret = btrfs_search_slot(NULL, clone_root->root, &key, path, 0, 0); in clone_range()
5384 if (ret < 0) in clone_range()
5386 if (ret > 0 && path->slots[0] > 0) { in clone_range()
5404 ret = btrfs_next_leaf(clone_root->root, path); in clone_range()
5405 if (ret < 0) in clone_range()
5407 else if (ret > 0) in clone_range()
5440 ret = send_extent_data(sctx, offset, hole_len); in clone_range()
5441 if (ret < 0) in clone_range()
5510 ret = send_clone(sctx, offset, slen, in clone_range()
5512 if (ret < 0) in clone_range()
5515 ret = send_extent_data(sctx, offset + slen, in clone_range()
5518 ret = send_clone(sctx, offset, clone_len, in clone_range()
5541 ret = send_extent_data(sctx, offset, clone_len); in clone_range()
5544 if (ret < 0) in clone_range()
5573 ret = send_extent_data(sctx, offset, len); in clone_range()
5575 ret = 0; in clone_range()
5578 return ret; in clone_range()
5586 int ret = 0; in send_write_or_clone() local
5604 ret = clone_range(sctx, clone_root, disk_byte, data_offset, in send_write_or_clone()
5607 ret = send_extent_data(sctx, offset, end - offset); in send_write_or_clone()
5610 return ret; in send_write_or_clone()
5617 int ret = 0; in is_extent_unchanged() local
5646 ret = 0; in is_extent_unchanged()
5678 ret = btrfs_search_slot_for_read(sctx->parent_root, &key, path, 0, 0); in is_extent_unchanged()
5679 if (ret < 0) in is_extent_unchanged()
5681 if (ret) { in is_extent_unchanged()
5682 ret = 0; in is_extent_unchanged()
5695 ret = (left_disknr) ? 0 : 1; in is_extent_unchanged()
5708 ret = 0; in is_extent_unchanged()
5725 ret = (left_disknr) ? 0 : 1; in is_extent_unchanged()
5738 ret = 0; in is_extent_unchanged()
5761 ret = 0; in is_extent_unchanged()
5768 ret = btrfs_next_item(sctx->parent_root, path); in is_extent_unchanged()
5769 if (ret < 0) in is_extent_unchanged()
5771 if (!ret) { in is_extent_unchanged()
5776 if (ret || found_key.objectid != key.objectid || in is_extent_unchanged()
5782 ret = 0; in is_extent_unchanged()
5793 ret = 1; in is_extent_unchanged()
5795 ret = 0; in is_extent_unchanged()
5800 return ret; in is_extent_unchanged()
5808 int ret; in get_last_extent() local
5819 ret = btrfs_search_slot_for_read(root, &key, path, 0, 1); in get_last_extent()
5820 if (ret < 0) in get_last_extent()
5822 ret = 0; in get_last_extent()
5830 return ret; in get_last_extent()
5841 int ret; in range_is_hole_in_parent() local
5850 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in range_is_hole_in_parent()
5851 if (ret < 0) in range_is_hole_in_parent()
5853 if (ret > 0 && path->slots[0] > 0) in range_is_hole_in_parent()
5863 ret = btrfs_next_leaf(root, path); in range_is_hole_in_parent()
5864 if (ret < 0) in range_is_hole_in_parent()
5866 else if (ret > 0) in range_is_hole_in_parent()
5888 ret = 0; in range_is_hole_in_parent()
5893 ret = 1; in range_is_hole_in_parent()
5896 return ret; in range_is_hole_in_parent()
5902 int ret = 0; in maybe_send_hole() local
5908 ret = get_last_extent(sctx, key->offset - 1); in maybe_send_hole()
5909 if (ret) in maybe_send_hole()
5910 return ret; in maybe_send_hole()
5922 ret = get_last_extent(sctx, key->offset - 1); in maybe_send_hole()
5923 if (ret) in maybe_send_hole()
5924 return ret; in maybe_send_hole()
5928 ret = range_is_hole_in_parent(sctx, in maybe_send_hole()
5931 if (ret < 0) in maybe_send_hole()
5932 return ret; in maybe_send_hole()
5933 else if (ret == 0) in maybe_send_hole()
5934 ret = send_hole(sctx, key->offset); in maybe_send_hole()
5936 ret = 0; in maybe_send_hole()
5939 return ret; in maybe_send_hole()
5947 int ret = 0; in process_extent() local
5953 ret = is_extent_unchanged(sctx, path, key); in process_extent()
5954 if (ret < 0) in process_extent()
5956 if (ret) { in process_extent()
5957 ret = 0; in process_extent()
5976 ret = 0; in process_extent()
5982 ret = 0; in process_extent()
5988 ret = find_extent_clone(sctx, path, key->objectid, key->offset, in process_extent()
5990 if (ret != -ENOENT && ret < 0) in process_extent()
5993 ret = send_write_or_clone(sctx, path, key, found_clone); in process_extent()
5994 if (ret) in process_extent()
5997 ret = maybe_send_hole(sctx, path, key); in process_extent()
5999 return ret; in process_extent()
6004 int ret; in process_all_extents() local
6020 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); in process_all_extents()
6021 if (ret < 0) in process_all_extents()
6029 ret = btrfs_next_leaf(root, path); in process_all_extents()
6030 if (ret < 0) { in process_all_extents()
6032 } else if (ret > 0) { in process_all_extents()
6033 ret = 0; in process_all_extents()
6043 ret = 0; in process_all_extents()
6047 ret = process_extent(sctx, path, &found_key); in process_all_extents()
6048 if (ret < 0) in process_all_extents()
6056 return ret; in process_all_extents()
6063 int ret = 0; in process_recorded_refs_if_needed() local
6073 ret = process_recorded_refs(sctx, pending_move); in process_recorded_refs_if_needed()
6074 if (ret < 0) in process_recorded_refs_if_needed()
6079 return ret; in process_recorded_refs_if_needed()
6084 int ret = 0; in finish_inode_if_needed() local
6100 ret = process_recorded_refs_if_needed(sctx, at_end, &pending_move, in finish_inode_if_needed()
6102 if (ret < 0) in finish_inode_if_needed()
6125 ret = get_inode_info(sctx->send_root, sctx->cur_ino, NULL, NULL, in finish_inode_if_needed()
6127 if (ret < 0) in finish_inode_if_needed()
6139 ret = get_inode_info(sctx->parent_root, sctx->cur_ino, in finish_inode_if_needed()
6142 if (ret < 0) in finish_inode_if_needed()
6160 ret = get_last_extent(sctx, (u64)-1); in finish_inode_if_needed()
6161 if (ret) in finish_inode_if_needed()
6166 ret = send_hole(sctx, sctx->cur_inode_size); in finish_inode_if_needed()
6167 if (ret) in finish_inode_if_needed()
6172 ret = send_truncate(sctx, sctx->cur_ino, in finish_inode_if_needed()
6175 if (ret < 0) in finish_inode_if_needed()
6181 ret = send_chown(sctx, sctx->cur_ino, sctx->cur_inode_gen, in finish_inode_if_needed()
6183 if (ret < 0) in finish_inode_if_needed()
6187 ret = send_chmod(sctx, sctx->cur_ino, sctx->cur_inode_gen, in finish_inode_if_needed()
6189 if (ret < 0) in finish_inode_if_needed()
6193 ret = send_capabilities(sctx); in finish_inode_if_needed()
6194 if (ret < 0) in finish_inode_if_needed()
6202 ret = apply_children_dir_moves(sctx); in finish_inode_if_needed()
6203 if (ret) in finish_inode_if_needed()
6213 ret = send_utimes(sctx, sctx->cur_ino, sctx->cur_inode_gen); in finish_inode_if_needed()
6214 if (ret < 0) in finish_inode_if_needed()
6219 return ret; in finish_inode_if_needed()
6246 int ret; in btrfs_unlink_all_paths() local
6255 ret = btrfs_search_slot(NULL, sctx->parent_root, &key, path, 0, 0); in btrfs_unlink_all_paths()
6256 if (ret < 0) in btrfs_unlink_all_paths()
6267 ret = btrfs_next_leaf(sctx->parent_root, path); in btrfs_unlink_all_paths()
6268 if (ret < 0) in btrfs_unlink_all_paths()
6270 else if (ret > 0) in btrfs_unlink_all_paths()
6282 ret = iterate_inode_ref(sctx->parent_root, path, &key, 1, in btrfs_unlink_all_paths()
6284 if (ret < 0) in btrfs_unlink_all_paths()
6294 ret = send_unlink(sctx, ref->full_path); in btrfs_unlink_all_paths()
6295 if (ret < 0) in btrfs_unlink_all_paths()
6301 ret = 0; in btrfs_unlink_all_paths()
6304 if (ret) in btrfs_unlink_all_paths()
6306 return ret; in btrfs_unlink_all_paths()
6312 int ret = 0; in changed_inode() local
6386 ret = btrfs_unlink_all_paths(sctx); in changed_inode()
6402 ret = send_create_inode_if_needed(sctx); in changed_inode()
6430 ret = process_all_refs(sctx, in changed_inode()
6432 if (ret < 0) in changed_inode()
6447 ret = send_create_inode_if_needed(sctx); in changed_inode()
6448 if (ret < 0) in changed_inode()
6451 ret = process_all_refs(sctx, BTRFS_COMPARE_TREE_NEW); in changed_inode()
6452 if (ret < 0) in changed_inode()
6464 ret = process_all_extents(sctx); in changed_inode()
6465 if (ret < 0) in changed_inode()
6467 ret = process_all_new_xattrs(sctx); in changed_inode()
6468 if (ret < 0) in changed_inode()
6483 return ret; in changed_inode()
6499 int ret = 0; in changed_ref() local
6509 ret = record_new_ref(sctx); in changed_ref()
6511 ret = record_deleted_ref(sctx); in changed_ref()
6513 ret = record_changed_ref(sctx); in changed_ref()
6516 return ret; in changed_ref()
6527 int ret = 0; in changed_xattr() local
6536 ret = process_new_xattr(sctx); in changed_xattr()
6538 ret = process_deleted_xattr(sctx); in changed_xattr()
6540 ret = process_changed_xattr(sctx); in changed_xattr()
6543 return ret; in changed_xattr()
6554 int ret = 0; in changed_extent() local
6574 ret = process_extent(sctx, sctx->left_path, in changed_extent()
6578 return ret; in changed_extent()
6584 int ret; in dir_changed() local
6586 ret = get_inode_info(sctx->send_root, dir, NULL, &new_gen, NULL, NULL, in dir_changed()
6588 if (ret) in dir_changed()
6589 return ret; in dir_changed()
6591 ret = get_inode_info(sctx->parent_root, dir, NULL, &orig_gen, NULL, in dir_changed()
6593 if (ret) in dir_changed()
6594 return ret; in dir_changed()
6609 int ret = 0; in compare_refs() local
6615 ret = dir_changed(sctx, dirid); in compare_refs()
6630 ret = dir_changed(sctx, dirid); in compare_refs()
6631 if (ret) in compare_refs()
6636 return ret; in compare_refs()
6649 int ret = 0; in changed_cb() local
6655 ret = compare_refs(sctx, left_path, key); in changed_cb()
6656 if (!ret) in changed_cb()
6658 if (ret < 0) in changed_cb()
6659 return ret; in changed_cb()
6666 ret = 0; in changed_cb()
6673 ret = finish_inode_if_needed(sctx, 0); in changed_cb()
6674 if (ret < 0) in changed_cb()
6683 ret = changed_inode(sctx, result); in changed_cb()
6687 ret = changed_ref(sctx, result); in changed_cb()
6689 ret = changed_xattr(sctx, result); in changed_cb()
6691 ret = changed_extent(sctx, result); in changed_cb()
6695 return ret; in changed_cb()
6700 int ret; in full_send_tree() local
6715 ret = btrfs_search_slot_for_read(send_root, &key, path, 1, 0); in full_send_tree()
6716 if (ret < 0) in full_send_tree()
6718 if (ret) in full_send_tree()
6726 ret = changed_cb(path, NULL, &key, in full_send_tree()
6728 if (ret < 0) in full_send_tree()
6731 ret = btrfs_next_item(send_root, path); in full_send_tree()
6732 if (ret < 0) in full_send_tree()
6734 if (ret) { in full_send_tree()
6735 ret = 0; in full_send_tree()
6741 ret = finish_inode_if_needed(sctx, 1); in full_send_tree()
6745 return ret; in full_send_tree()
6766 int ret = 0; in tree_move_next_or_upnext() local
6784 ret = 1; in tree_move_next_or_upnext()
6786 return ret; in tree_move_next_or_upnext()
6798 int ret; in tree_advance() local
6801 ret = tree_move_next_or_upnext(path, level, root_level); in tree_advance()
6803 ret = tree_move_down(path, level); in tree_advance()
6805 if (ret >= 0) { in tree_advance()
6813 return ret; in tree_advance()
6858 int ret; in btrfs_compare_trees() local
6880 ret = -ENOMEM; in btrfs_compare_trees()
6885 ret = -ENOMEM; in btrfs_compare_trees()
6891 ret = -ENOMEM; in btrfs_compare_trees()
6943 ret = -ENOMEM; in btrfs_compare_trees()
6953 ret = -ENOMEM; in btrfs_compare_trees()
6977 ret = tree_advance(left_path, &left_level, in btrfs_compare_trees()
6981 if (ret == -1) in btrfs_compare_trees()
6983 else if (ret < 0) in btrfs_compare_trees()
6988 ret = tree_advance(right_path, &right_level, in btrfs_compare_trees()
6992 if (ret == -1) in btrfs_compare_trees()
6994 else if (ret < 0) in btrfs_compare_trees()
7000 ret = 0; in btrfs_compare_trees()
7004 ret = changed_cb(left_path, right_path, in btrfs_compare_trees()
7008 if (ret < 0) in btrfs_compare_trees()
7015 ret = changed_cb(left_path, right_path, in btrfs_compare_trees()
7019 if (ret < 0) in btrfs_compare_trees()
7029 ret = changed_cb(left_path, right_path, in btrfs_compare_trees()
7033 if (ret < 0) in btrfs_compare_trees()
7037 ret = changed_cb(left_path, right_path, in btrfs_compare_trees()
7041 if (ret < 0) in btrfs_compare_trees()
7048 ret = tree_compare_item(left_path, right_path, in btrfs_compare_trees()
7050 if (ret) in btrfs_compare_trees()
7054 ret = changed_cb(left_path, right_path, in btrfs_compare_trees()
7056 if (ret < 0) in btrfs_compare_trees()
7104 return ret; in btrfs_compare_trees()
7109 int ret; in send_subvol() local
7112 ret = send_header(sctx); in send_subvol()
7113 if (ret < 0) in send_subvol()
7117 ret = send_subvol_begin(sctx); in send_subvol()
7118 if (ret < 0) in send_subvol()
7122 ret = btrfs_compare_trees(sctx->send_root, sctx->parent_root, sctx); in send_subvol()
7123 if (ret < 0) in send_subvol()
7125 ret = finish_inode_if_needed(sctx, 1); in send_subvol()
7126 if (ret < 0) in send_subvol()
7129 ret = full_send_tree(sctx); in send_subvol()
7130 if (ret < 0) in send_subvol()
7136 return ret; in send_subvol()
7195 int ret; in flush_delalloc_roots() local
7199 ret = btrfs_start_delalloc_snapshot(root); in flush_delalloc_roots()
7200 if (ret) in flush_delalloc_roots()
7201 return ret; in flush_delalloc_roots()
7207 ret = btrfs_start_delalloc_snapshot(root); in flush_delalloc_roots()
7208 if (ret) in flush_delalloc_roots()
7209 return ret; in flush_delalloc_roots()
7240 int ret = 0; in btrfs_ioctl_send() local
7272 ret = -EPERM; in btrfs_ioctl_send()
7283 ret = -EINVAL; in btrfs_ioctl_send()
7288 ret = -EOPNOTSUPP; in btrfs_ioctl_send()
7294 ret = -ENOMEM; in btrfs_ioctl_send()
7307 ret = -EBADF; in btrfs_ioctl_send()
7317 ret = -EPERM; in btrfs_ioctl_send()
7326 ret = -ENOMEM; in btrfs_ioctl_send()
7338 ret = -ENOMEM; in btrfs_ioctl_send()
7348 ret = -ENOMEM; in btrfs_ioctl_send()
7352 ret = copy_from_user(clone_sources_tmp, arg->clone_sources, in btrfs_ioctl_send()
7354 if (ret) { in btrfs_ioctl_send()
7355 ret = -EFAULT; in btrfs_ioctl_send()
7363 ret = PTR_ERR(clone_root); in btrfs_ioctl_send()
7371 ret = -EPERM; in btrfs_ioctl_send()
7378 ret = -EAGAIN; in btrfs_ioctl_send()
7395 ret = PTR_ERR(sctx->parent_root); in btrfs_ioctl_send()
7404 ret = -EPERM; in btrfs_ioctl_send()
7410 ret = -EAGAIN; in btrfs_ioctl_send()
7430 ret = flush_delalloc_roots(sctx); in btrfs_ioctl_send()
7431 if (ret) in btrfs_ioctl_send()
7434 ret = ensure_commit_roots_uptodate(sctx); in btrfs_ioctl_send()
7435 if (ret) in btrfs_ioctl_send()
7443 ret = -EAGAIN; in btrfs_ioctl_send()
7450 ret = send_subvol(sctx); in btrfs_ioctl_send()
7455 if (ret < 0) in btrfs_ioctl_send()
7459 ret = begin_cmd(sctx, BTRFS_SEND_C_END); in btrfs_ioctl_send()
7460 if (ret < 0) in btrfs_ioctl_send()
7462 ret = send_cmd(sctx); in btrfs_ioctl_send()
7463 if (ret < 0) in btrfs_ioctl_send()
7468 WARN_ON(sctx && !ret && !RB_EMPTY_ROOT(&sctx->pending_dir_moves)); in btrfs_ioctl_send()
7485 WARN_ON(sctx && !ret && !RB_EMPTY_ROOT(&sctx->waiting_dir_moves)); in btrfs_ioctl_send()
7496 WARN_ON(sctx && !ret && !RB_EMPTY_ROOT(&sctx->orphan_dirs)); in btrfs_ioctl_send()
7540 return ret; in btrfs_ioctl_send()