On 5/17/18 8:25 AM, Austin S. Hemmelgarn wrote: > On 2018-05-16 22:32, Anand Jain wrote: >> >> >> On 05/17/2018 06:35 AM, David Sterba wrote: >>> On Wed, May 16, 2018 at 06:03:56PM +0800, Anand Jain wrote: >>>> Not yet ready for the integration. As I need to introduce >>>> -o no_read_mirror_policy instead of -o read_mirror_policy=- >>> >>> Mount option is mostly likely not the right interface for setting such >>> options, as usual. >> >>   I am ok to make it ioctl for the final. What do you think? >> >> >>   But to reproduce the bug posted in >>     Btrfs: fix the corruption by reading stale btree blocks >>   It needs to be a mount option, as randomly the pid can >>   still pick the disk specified in the mount option. >> > Personally, I'd vote for filesystem property (thus handled through the > standard `btrfs property` command) that can be overridden by a mount > option.  With that approach, no new tool (or change to an existing tool) > would be needed, existing volumes could be converted to use it in a > backwards compatible manner (old kernels would just ignore the > property), and you could still have the behavior you want in tests (and > in theory it could easily be adapted to be a per-subvolume setting if we > ever get per-subvolume chunk profile support). Properties are a combination of interfaces presented through a single command. Although the kernel API would allow a direct-to-property interface via the btrfs.* extended attributes, those are currently limited to a single inode. The label property is set via ioctl and stored in the superblock. The read-only subvolume property is also set by ioctl but stored in the root flags. As it stands, every property is explicitly defined in the tools, so any addition would require tools changes. This is a bigger discussion, though. We *could* use the xattr interface to access per-root or fs-global properties, but we'd need to define that interface. btrfs_listxattr could get interesting, though I suppose we could simplify it by only allowing the per-subvolume and fs-global operations on root inodes. -Jeff -- Jeff Mahoney SUSE Labs