RE: fstab mount options ignored on subsequent subvolume mounts

2012-01-18 Thread Kyle Gates

> > I have multiple subvolumes on the same filesystem that are mounted with 
> > different options in fstab.
> > The problem is the mount options for subsequent subvolume mounts seem to be 
> > ignored as reflected in /proc/mounts.
>
> The output of 'mount' and /proc/mounts is different. mount takes it from
> /etc/mtab while /proc/mounts gets the information from kernel (calls
> into super.c:btrfs_show_options() )
>
> 'mtab':
> - contains the options in order in which they were given to mount or in
> /etc/fstab
> -
>
> /proc/mounts:
> - order of options is fixed (as defined in the function)
> - if the option has a default value which was not given to mount, it is
> listed here (and is not in mtab)
> - an implied options appear here as well (like nodatacow implies
> nodatasum)
>
>
> Now, you're giving different set of options to each subvolume, but they
> belong to one filesystem and thus will result in set of options given to
> the first mounted subvolume for every other mounted subvolume.
>
> The first subvol calls 'btrfs_fill_super' and 'btrfs_parse_options', the
> other do not and do not. Remount will call 'btrfs_parse_options' again
> and will change the options set.
>
> > $ cat /etc/fstab | grep mnt
> > UUID= /mnt/a btrfs 
> > subvol=a,defaults,nodatacow,autodefrag,noatime,space_cache,inode_cache 0 0
> > UUID= /mnt/b btrfs 
> > subvol=b,defaults,autodefrag,noatime,space_cache,inode_cache 0 0
> > UUID= /mnt/c btrfs 
> > subvol=c,defaults,compress=zlib,autodefrag,noatime,space_cache,inode_cache 
> > 0 0
> >
> > $ mount | grep mnt
> > /dev/sdb2 on /mnt/a type btrfs 
> > (rw,noatime,subvol=a,nodatacow,autodefrag,space_cache,inode_cache)
> > /dev/sdb2 on /mnt/b type btrfs 
> > (rw,noatime,subvol=b,autodefrag,space_cache,inode_cache)
> > /dev/sdb2 on /mnt/c type btrfs 
> > (rw,noatime,subvol=c,compress=zlib,autodefrag,space_cache,inode_cache)
> > $ cat /proc/mounts | grep mnt
> > /dev/sdb2 /mnt/a btrfs 
> > rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> > /dev/sdb2 /mnt/b btrfs 
> > rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> > /dev/sdb2 /mnt/c btrfs 
> > rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> >
> > continuing the example which should only change the mount options for one 
> > of the subvolumes:
> > $ sudo mount -o remount,compress=zlib /mnt/oldhome
> > $ cat /proc/mounts | grep mnt
> > /dev/sdb2 /mnt/a btrfs 
> > rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
> >  0 0
> > /dev/sdb2 /mnt/b btrfs 
> > rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
> >  0 0
> > /dev/sdb2 /mnt/c btrfs 
> > rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
> >  0 0
>
> I think the above explains things in general in your listings, the last
> one missing is subvol= in /proc/mounts. This is not implemented, but is
> possible (save non-default subvol name with the subvol root and print in
> show_options).
>
>
> david

Thanks for the clarification. I was under the impression that mounting 
multiple subvolumes with different options had been implemented. Perhaps
 someday it will be although for now there are more pressing issues.


I appreciate everyone's hard work and look forward to the continued development 
of btrfs.

many thanks,
Kyle
  --
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: fstab mount options ignored on subsequent subvolume mounts

2012-01-18 Thread David Sterba
On Tue, Jan 17, 2012 at 01:09:36PM -0600, Kyle Gates wrote:
> I have multiple subvolumes on the same filesystem that are mounted with 
> different options in fstab.
> The problem is the mount options for subsequent subvolume mounts seem to be 
> ignored as reflected in /proc/mounts.

The output of 'mount' and /proc/mounts is different. mount takes it from
/etc/mtab while /proc/mounts gets the information from kernel (calls
into super.c:btrfs_show_options() )

'mtab':
- contains the options in order in which they were given to mount or in
  /etc/fstab
- 

/proc/mounts:
- order of options is fixed (as defined in the function)
- if the option has a default value which was not given to mount, it is
  listed here (and is not in mtab)
- an implied options appear here as well (like nodatacow implies
  nodatasum)


Now, you're giving different set of options to each subvolume, but they
belong to one filesystem and thus will result in set of options given to
the first mounted subvolume for every other mounted subvolume.

The first subvol calls 'btrfs_fill_super' and 'btrfs_parse_options', the
other do not and do not. Remount will call 'btrfs_parse_options' again
and will change the options set.

> $ cat /etc/fstab | grep mnt
> UUID= /mnt/a btrfs 
> subvol=a,defaults,nodatacow,autodefrag,noatime,space_cache,inode_cache 0 0
> UUID= /mnt/b btrfs 
> subvol=b,defaults,autodefrag,noatime,space_cache,inode_cache 0 0
> UUID= /mnt/c btrfs 
> subvol=c,defaults,compress=zlib,autodefrag,noatime,space_cache,inode_cache 0 0
>
> $ mount | grep mnt
> /dev/sdb2 on /mnt/a type btrfs 
> (rw,noatime,subvol=a,nodatacow,autodefrag,space_cache,inode_cache)
> /dev/sdb2 on /mnt/b type btrfs 
> (rw,noatime,subvol=b,autodefrag,space_cache,inode_cache)
> /dev/sdb2 on /mnt/c type btrfs 
> (rw,noatime,subvol=c,compress=zlib,autodefrag,space_cache,inode_cache)
> $ cat /proc/mounts | grep mnt
> /dev/sdb2 /mnt/a btrfs 
> rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> /dev/sdb2 /mnt/b btrfs 
> rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> /dev/sdb2 /mnt/c btrfs 
> rw,noatime,nodatasum,nodatacow,space_cache,autodefrag,inode_cache 0 0
> 
> continuing the example which should only change the mount options for one of 
> the subvolumes:
> $ sudo mount -o remount,compress=zlib /mnt/oldhome
> $ cat /proc/mounts | grep mnt
> /dev/sdb2 /mnt/a btrfs 
> rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
>  0 0
> /dev/sdb2 /mnt/b btrfs 
> rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
>  0 0
> /dev/sdb2 /mnt/c btrfs 
> rw,noatime,nodatasum,nodatacow,compress=zlib,space_cache,autodefrag,inode_cache
>  0 0

I think the above explains things in general in your listings, the last
one missing is subvol= in /proc/mounts. This is not implemented, but is
possible (save non-default subvol name with the subvol root and print in
show_options).


david
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html