• Stefan Behrens's avatar
    Btrfs: Wait for uuid-tree rebuild task on remount read-only · 361c093d
    Stefan Behrens authored
    If the user remounts the filesystem read-only while the uuid-tree
    scan and rebuild task is still running (this happens once after the
    filesystem was mounted with an old kernel, or when forced with the
    mount options), the remount should wait on the tasks completion
    before setting the filesystem read-only. Otherwise the background
    task continues to write to the filesystem which is apparently not
    what users expect.
    
    The reproducer:
    
    TEST_DEV=/dev/sdzzzzz1
    TEST_MNT=/mnt
    mkfs.btrfs -f $TEST_DEV
    mount $TEST_DEV $TEST_MNT
    for i in `seq 50000`; do btrfs subvolume create ${TEST_MNT}/$i; done
    umount $TEST_MNT
    mount $TEST_DEV $TEST_MNT -o rescan_uuid_tree
    sleep 1
    ps -elf | fgrep '[btrfs-uuid]' | grep -v grep
    mount $TEST_DEV $TEST_MNT -o ro,remount
    ps -elf | fgrep '[btrfs-uuid]' | grep -v grep
    sleep 1
    umount $TEST_MNT
    Signed-off-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    361c093d
super.c 49.8 KB