btrfs-progs: convert: fix self-reference of directory
Creating a simple directory structure leads to the following error: $ btrfs check Checking filesystem on test.img UUID: 8f2292ad-c80e-4ab4-8a72-29aa3a83002c [1/7] checking root items [2/7] checking extents [3/7] checking free space cache [4/7] checking fs roots unresolved ref dir 260 index 0 namelen 2 name .. filetype 0 errors 3, no dir item, no dir index ERROR: errors found in fs roots found 101085184 bytes used, error(s) found total csum bytes: 98460 total tree bytes: 262144 total fs tree bytes: 49152 total extent tree bytes: 16384 btree space waste bytes: 151864 file data blocks allocated: 167931904 referenced 167931904 The self-reference should exist for the toplevel directory, where the parent directory points to itself. Issue: #453 Author: tyan0 Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
31750cb120
commit
02b06b3e8d
|
@ -634,8 +634,9 @@ static int reiserfs_copy_meta(reiserfs_filsys_t fs, struct btrfs_root *root,
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = btrfs_insert_inode_ref(trans, root, "..", 2, parent,
|
if (parent == objectid)
|
||||||
objectid, 0);
|
ret = btrfs_insert_inode_ref(trans, root, "..", 2, parent,
|
||||||
|
objectid, 0);
|
||||||
break;
|
break;
|
||||||
case S_IFLNK:
|
case S_IFLNK:
|
||||||
trans = btrfs_start_transaction(root, 1);
|
trans = btrfs_start_transaction(root, 1);
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Test that only toplevel directory self-reference is created
|
||||||
|
|
||||||
|
source "$TEST_TOP/common"
|
||||||
|
|
||||||
|
setup_root_helper
|
||||||
|
prepare_test_dev
|
||||||
|
check_global_prereq mkreiserfs
|
||||||
|
check_prereq btrfs-convert
|
||||||
|
|
||||||
|
run_check $SUDO_HELPER mkreiserfs -q -f -b 4096 "$TEST_DEV"
|
||||||
|
run_check_mount_test_dev -t reiserfs
|
||||||
|
run_check $SUDO_HELPER mkdir "$TEST_MNT/a"
|
||||||
|
run_check $SUDO_HELPER dd if=/dev/urandom of="$TEST_MNT/a/x" bs=1M count=64
|
||||||
|
run_check $SUDO_HELPER mkdir "$TEST_MNT/a/y"
|
||||||
|
run_check_umount_test_dev
|
||||||
|
|
||||||
|
run_check $SUDO_HELPER "$TOP/btrfs-convert" "$TEST_DEV"
|
||||||
|
run_check $SUDO_HELPER "$TOP/btrfs" check "$TEST_DEV"
|
Loading…
Reference in New Issue