On Mon, Jun 24, 2024 at 01:50:33PM +0000, Daniel Gomez wrote: > On Fri, Jun 14, 2024 at 08:47:28AM GMT, Darrick J. Wong wrote: > > On Fri, Jun 14, 2024 at 06:17:25AM +0000, Daniel Gomez wrote: > > > Make sure tmpfs scratch device inherits the extra tmpfs mount options > > > variable (TMPFS_MOUNT_OPTIONS). > > > > > > Signed-off-by: Daniel Gomez <da.gomez@xxxxxxxxxxx> > > > --- > > > common/rc | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/common/rc b/common/rc > > > index 7f995b0fa..a42792c37 100644 > > > --- a/common/rc > > > +++ b/common/rc > > > @@ -224,7 +224,7 @@ _test_options() > > > # hosted on $SCRATCH_DEV, so can't use external scratch devices). > > > _common_dev_mount_options() > > > { > > > - echo $MOUNT_OPTIONS $SELINUX_MOUNT_OPTIONS $* > > > + echo $MOUNT_OPTIONS $SELINUX_MOUNT_OPTIONS $TMPFS_MOUNT_OPTIONS $* > > > > Why is it necessary to include tmpfs mount options for all fs types? > > XFS does not accept tmpfs mount options. > > You are right. We should not do this. > > However, _scratch_mount_options() calls _common_dev_mount_options() ignoring the > specific mount options based on fstyp. Ah, _mount_opts only gets run for configuration files. > specific mount options based on fstyp. Replacing it with _common_mount_opts() > makes this work. In addition, _common_dev_mount_options() function description > says 'Used for mounting non-scratch devices with the safe set of scratch mount > options'. So, why is it used to mount scratch devices? I think the comment isn't very good. Six of the seven callers: common/dmdelay|23| _mount -t $FSTYP `_common_dev_mount_options` $SCRATCH_OPTIONS \ common/dmdust|19| _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \ common/dmerror|94| _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \ common/dmlogwrites|107| _mount -t $FSTYP `_common_dev_mount_options $*` $SCRATCH_OPTIONS \ common/dmthin|226| echo `_common_dev_mount_options $*` $SCRATCH_OPTIONS $DMTHIN_VOL_DEV $SCRATCH_MNT common/rc|272| echo `_common_dev_mount_options $*` $SCRATCH_OPTIONS \ appear to use this to mount the scratch filesystem from devices that are not the regular scratch device. The one exception is this one: common/overlay|32| _mount -t overlay $diropts `_common_dev_mount_options $*` which AFAICT seem to mount arbitrary overlayfs instances with some of the mount options. > This fixes the issue: > > diff --git a/common/rc b/common/rc > index 51827119c..627dbaaaa 100644 > --- a/common/rc > +++ b/common/rc > @@ -231,8 +231,8 @@ _scratch_mount_options() > { > _scratch_options mount > > - echo `_common_dev_mount_options $*` $SCRATCH_OPTIONS \ > - $SCRATCH_DEV $SCRATCH_MNT > + echo `_common_mount_opts` $SCRATCH_OPTIONS \ > + $SCRATCH_DEV $SCRATCH_MNT $* > } > > > > > For that matter, why is TMPFS_MOUNT_OPTIONS necessary at all? Shouldn't > > that simply be "MOUNT_OPTIONS=<stuff> FSTYP=tmpfs ./check" ? > > TMPFS_MOUNT_OPTIONS is used to specify mount options in each section of the > configuration file. For example, the following snippet is part of my conf file: > > ``` > [tmpfs_noswap_huge_always] > TMPFS_MOUNT_OPTIONS="-o noswap,huge=always" > > [tmpfs_noswap_huge_within_size] > TMPFS_MOUNT_OPTIONS="-o noswap,huge=within_size" > ``` > > Then I run -s option to switch between profiles, e.g., 'check -s > tmpfs_noswap_huge_within_size -R xunit -g auto'. > > I’m not sure if this addresses your question. Please let me know if I > misunderstood. Ahah, this is one of those parts of fstests that differ depending on whether you use configuration files (you do) or not (I don't). AFAICT, get_next_config has this slightly odd (to me) behavior where if a config section doesn't explicitly set MOUNT_OPTIONS, it will reuse MOUNT_OPTIONS from a previous section if FSTYP hasn't changed. You instead want to change the mount between sections So I /think/ the correct thing to do here is [tmpfs_noswap_huge_always] MOUNT_OPTIONS="-o noswap,huge=always" [tmpfs_noswap_huge_within_size] MOUNT_OPTIONS="-o noswap,huge=within_size" Though I'm not exactly an expert on these things. --D > > > > > --D > > > > > } > > > > > > _scratch_mount_options() > > > -- > > > 2.43.0 > > >