Btrfs: get write access when removing a device
authorMiao Xie <miaox@cn.fujitsu.com>
Mon, 26 Nov 2012 08:44:50 +0000 (08:44 +0000)
committerChris Mason <chris.mason@fusionio.com>
Mon, 17 Dec 2012 01:46:09 +0000 (20:46 -0500)
commitda24927b1e1925da5c1885cb483231dabe027e15
tree6d28cb9342d4251a8eb0116f79ee3816843c9a61
parent198605a8e2077f174c9834c97b836f535e4e56dd
Btrfs: get write access when removing a device

Steps to reproduce:
 # mkfs.btrfs -d single -m single <disk0> <disk1>
 # mount -o ro <disk0> <mnt0>
 # mount -o ro <disk0> <mnt1>
 # mount -o remount,rw <mnt0>
 # umount <mnt0>
 # btrfs device delete <disk1> <mnt1>

We can remove a device from a R/O filesystem. The reason is that we just check
the R/O flag of the super block object. It is not enough, because the kernel
may set the R/O flag only for the mount point. We need invoke

mnt_want_write_file()

to do a full check.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/ioctl.c