On Thu, Apr 09, 2015 at 02:34:52PM -0700, Omar Sandoval wrote: > Currently, setup_root_args() substitutes 's/subvol=[^,]*/subvolid=0/'. > But, this means that if the user passes both a subvol and subvolid for > some reason, we won't actually mount the top-level when we recursively > mount. For example, consider: > > mkfs.btrfs -f /dev/sdb > mount /dev/sdb /mnt > btrfs subvol create /mnt/subvol1 # subvolid=257 > btrfs subvol create /mnt/subvol2 # subvolid=258 > umount /mnt > mount -osubvol=/subvol1,subvolid=258 /dev/sdb /mnt > > In the final mount, subvol=/subvol1,subvolid=258 becomes > subvolid=0,subvolid=258, and the last option takes precedence, so we > mount subvol2 and try to look up subvol1 inside of it, which fails. > > So, instead, do a thorough scan through the argument list and remove any > subvol= and subvolid= options, then append subvolid=0 to the end. This > implicitly makes subvol= take precedence over subvolid=, but we're about > to add a stricter check for that. This also makes setup_root_args() more > generic, which we'll need soon. > > Signed-off-by: Omar Sandoval <osan...@osandov.com>
Reviewed-by: David Sterba <dste...@suse.cz> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/