aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/send.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index 2742324514e4..712922ea64d2 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -1937,6 +1937,19 @@ static int did_overwrite_ref(struct send_ctx *sctx,
1937 if (ret <= 0) 1937 if (ret <= 0)
1938 goto out; 1938 goto out;
1939 1939
1940 if (dir != BTRFS_FIRST_FREE_OBJECTID) {
1941 ret = get_inode_info(sctx->send_root, dir, NULL, &gen, NULL,
1942 NULL, NULL, NULL);
1943 if (ret < 0 && ret != -ENOENT)
1944 goto out;
1945 if (ret) {
1946 ret = 0;
1947 goto out;
1948 }
1949 if (gen != dir_gen)
1950 goto out;
1951 }
1952
1940 /* check if the ref was overwritten by another ref */ 1953 /* check if the ref was overwritten by another ref */
1941 ret = lookup_dir_item_inode(sctx->send_root, dir, name, name_len, 1954 ret = lookup_dir_item_inode(sctx->send_root, dir, name, name_len,
1942 &ow_inode, &other_type); 1955 &ow_inode, &other_type);