Message ID | aaf2e2de-b337-4d7f-81fe-1aa8ef6b6b21@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [RFC] fstests: test for CONFIG_QFMT_V2 in _require_quota | expand |
On Fri 14-03-25 09:36:53, Eric Sandeen wrote: > When CONFIG_QUOTA is enabled but CONFIG_QFMT_V2 is disabled in the > kernel config, many quota tests on ext4 will fail in odd ways, > when in fact they should be _notrun. Add a CONFIG_QFMT_V2 test to > _require_quota() to catch this for filesystems that require it. > > Signed-off-by: Eric Sandeen <sandeen@redhat.com> Yeah, makes sense. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > > Backstory: > > I was handed a bunch of ext4 xfstests failures on a system which had > (accidentally?) been built with CONFIG_QUOTA enabled, but with > CONFIG_QFMT_V2 disabled. This led to lots of tests failing when in fact > they should have _notrun due to lack of sufficient quota support, and > the reason for the failure was not obvious. > > I'm going to just admit that I get lost in the maze of > quota kernel configs, mount options, and on-disk features: > CONFIG_QFMT_V1, CONFIG_QFMT_V2, vfsold, vfsv1, vfsv2, usrjquota, > tune2fs -O quota, etc. I think that requiring CONFIG_QFMT_V2 might > be a little bit heavy-handed here, but perhaps in the name of simplicity > this change is reasonable, and I cc'd Jan in case he sees a better > or more fine-grained approach, or if there are certain quota tests > which should not require CONFIG_QFMT_V2, or if we should check for > CONFIG_QFMT_V1 as well... > > (Even on my old RHEL7 hosts, CONFIG_QFMT_V1 is disabled, so I don't think > it's worth a separate check.) > > There are a couple tests which oddly enough still succeed even with this > kernel feature off - generic/234 for example. It does quotacheck and > quotaon - the latter of which fails, but is ignored, then a bunch of > setquota calls which succeed. I'm not sure what to make of that, I guess > userspace can happily write to the quotafile without the kernel needing > to understand it, but the kernel cannot do the accounting ... > > generic/280 is similar. > > So this change would _notrun those tests even though they only exercise > setquota, and do not require kernel functionality. I'm not sure it's > worth carving out special cases for them, though. > > Thanks for listening ;) > > diff --git a/common/quota b/common/quota > index 3bf7d552..237fc115 100644 > --- a/common/quota > +++ b/common/quota > @@ -5,7 +5,9 @@ > # Functions useful for quota tests > > # checks that the generic quota support in the kernel is enabled > -# and that we have valid quota user tools installed. > +# and that we have valid quota user tools installed, as well as > +# support for the modern on-disk quota format kernel config > +# for filesystems that require it. > # > _require_quota() > { > @@ -16,6 +18,7 @@ _require_quota() > if [ ! -d /proc/sys/fs/quota ]; then > _notrun "Installed kernel does not support quotas" > fi > + _require_kernel_config CONFIG_QFMT_V2 > ;; > gfs2|ocfs2|bcachefs) > ;; > diff --git a/tests/ext4/053 b/tests/ext4/053 > index 4f20d217..45747317 100755 > --- a/tests/ext4/053 > +++ b/tests/ext4/053 > @@ -46,7 +46,6 @@ _require_loop > _require_command "$TUNE2FS_PROG" tune2fs > MKE2FS_PROG=$(type -P mke2fs) > _require_command "$MKE2FS_PROG" mke2fs > -_require_kernel_config CONFIG_QFMT_V2 > > LOG="" > print_log() { >
diff --git a/common/quota b/common/quota index 3bf7d552..237fc115 100644 --- a/common/quota +++ b/common/quota @@ -5,7 +5,9 @@ # Functions useful for quota tests # checks that the generic quota support in the kernel is enabled -# and that we have valid quota user tools installed. +# and that we have valid quota user tools installed, as well as +# support for the modern on-disk quota format kernel config +# for filesystems that require it. # _require_quota() { @@ -16,6 +18,7 @@ _require_quota() if [ ! -d /proc/sys/fs/quota ]; then _notrun "Installed kernel does not support quotas" fi + _require_kernel_config CONFIG_QFMT_V2 ;; gfs2|ocfs2|bcachefs) ;; diff --git a/tests/ext4/053 b/tests/ext4/053 index 4f20d217..45747317 100755 --- a/tests/ext4/053 +++ b/tests/ext4/053 @@ -46,7 +46,6 @@ _require_loop _require_command "$TUNE2FS_PROG" tune2fs MKE2FS_PROG=$(type -P mke2fs) _require_command "$MKE2FS_PROG" mke2fs -_require_kernel_config CONFIG_QFMT_V2 LOG="" print_log() {
When CONFIG_QUOTA is enabled but CONFIG_QFMT_V2 is disabled in the kernel config, many quota tests on ext4 will fail in odd ways, when in fact they should be _notrun. Add a CONFIG_QFMT_V2 test to _require_quota() to catch this for filesystems that require it. Signed-off-by: Eric Sandeen <sandeen@redhat.com> --- Backstory: I was handed a bunch of ext4 xfstests failures on a system which had (accidentally?) been built with CONFIG_QUOTA enabled, but with CONFIG_QFMT_V2 disabled. This led to lots of tests failing when in fact they should have _notrun due to lack of sufficient quota support, and the reason for the failure was not obvious. I'm going to just admit that I get lost in the maze of quota kernel configs, mount options, and on-disk features: CONFIG_QFMT_V1, CONFIG_QFMT_V2, vfsold, vfsv1, vfsv2, usrjquota, tune2fs -O quota, etc. I think that requiring CONFIG_QFMT_V2 might be a little bit heavy-handed here, but perhaps in the name of simplicity this change is reasonable, and I cc'd Jan in case he sees a better or more fine-grained approach, or if there are certain quota tests which should not require CONFIG_QFMT_V2, or if we should check for CONFIG_QFMT_V1 as well... (Even on my old RHEL7 hosts, CONFIG_QFMT_V1 is disabled, so I don't think it's worth a separate check.) There are a couple tests which oddly enough still succeed even with this kernel feature off - generic/234 for example. It does quotacheck and quotaon - the latter of which fails, but is ignored, then a bunch of setquota calls which succeed. I'm not sure what to make of that, I guess userspace can happily write to the quotafile without the kernel needing to understand it, but the kernel cannot do the accounting ... generic/280 is similar. So this change would _notrun those tests even though they only exercise setquota, and do not require kernel functionality. I'm not sure it's worth carving out special cases for them, though. Thanks for listening ;)