* [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max
@ 2022-12-12 23:08 David Disseldorp
2022-12-12 23:08 ` [PATCH 2/3] tests/generic/027: use c-style for loops David Disseldorp
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: David Disseldorp @ 2022-12-12 23:08 UTC (permalink / raw)
To: fstests; +Cc: David Disseldorp
For xfs, _acl_get_max() calls xfs_info which in turn calls
"xfs_spaceman -c info ...".
Without this change, xfs_spaceman absence results in:
--- tests/generic/026.out
+++ /home/david/xfstests/results//generic/026.out.bad
@@ -1,9 +1,11 @@
QA output created by 026
+/usr/sbin/xfs_info: line 44: xfs_spaceman: command not found
=== Test out large ACLs ===
+/usr/sbin/xfs_info: line 44: xfs_spaceman: command not found
1 below acl max
acl max
...
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
common/attr | 3 +++
1 file changed, 3 insertions(+)
diff --git a/common/attr b/common/attr
index cce4d1b2..a94c5e4b 100644
--- a/common/attr
+++ b/common/attr
@@ -57,6 +57,9 @@ _acl_get_max()
_require_acl_get_max()
{
+ # _acl_get_max -> xfs_info -> xfs_spaceman
+ [ "$FSTYP" == "xfs" ] && _require_xfs_spaceman_command "info"
+
if [ $(_acl_get_max) -eq 0 ]; then
_notrun "$FSTYP does not define maximum ACL count"
fi
--
2.35.3
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH 2/3] tests/generic/027: use c-style for loops 2022-12-12 23:08 [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max David Disseldorp @ 2022-12-12 23:08 ` David Disseldorp 2022-12-13 5:51 ` Eric Biggers 2022-12-12 23:08 ` [PATCH 3/3] check: ensure sect_stop is initialized if interrupted David Disseldorp 2022-12-13 14:41 ` [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max Zorro Lang 2 siblings, 1 reply; 12+ messages in thread From: David Disseldorp @ 2022-12-12 23:08 UTC (permalink / raw) To: fstests; +Cc: David Disseldorp Signed-off-by: David Disseldorp <ddiss@suse.de> --- tests/generic/027 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/generic/027 b/tests/generic/027 index 47f1981d..002be120 100755 --- a/tests/generic/027 +++ b/tests/generic/027 @@ -53,22 +53,18 @@ fi dir=$SCRATCH_MNT/testdir echo -n "iteration" >>$seqres.full -i=1 -while [ $i -le $loop ]; do +for ((i = 1; i < loop; i++)); do echo -n " $i" >>$seqres.full - nr_worker=8 - while [ $nr_worker -gt 0 ]; do + for ((nr_worker = 8; nr_worker > 0; nr_worker--)); do # half buffered I/O half direct I/O if [ `expr $nr_worker % 2` -eq 0 ]; then create_file $dir/$nr_worker -d >>$seqres.full & else create_file $dir/$nr_worker >>$seqres.full & fi - let nr_worker=$nr_worker-1 done wait rm -rf $dir - let i=$i+1 done _scratch_unmount -- 2.35.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] tests/generic/027: use c-style for loops 2022-12-12 23:08 ` [PATCH 2/3] tests/generic/027: use c-style for loops David Disseldorp @ 2022-12-13 5:51 ` Eric Biggers 2022-12-13 8:56 ` David Disseldorp 0 siblings, 1 reply; 12+ messages in thread From: Eric Biggers @ 2022-12-13 5:51 UTC (permalink / raw) To: David Disseldorp; +Cc: fstests On Tue, Dec 13, 2022 at 12:08:19AM +0100, David Disseldorp wrote: > Signed-off-by: David Disseldorp <ddiss@suse.de> > --- > tests/generic/027 | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/tests/generic/027 b/tests/generic/027 > index 47f1981d..002be120 100755 > --- a/tests/generic/027 > +++ b/tests/generic/027 > @@ -53,22 +53,18 @@ fi > > dir=$SCRATCH_MNT/testdir > echo -n "iteration" >>$seqres.full > -i=1 > -while [ $i -le $loop ]; do > +for ((i = 1; i < loop; i++)); do This does one fewer iteration than before. - Eric ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] tests/generic/027: use c-style for loops 2022-12-13 5:51 ` Eric Biggers @ 2022-12-13 8:56 ` David Disseldorp 0 siblings, 0 replies; 12+ messages in thread From: David Disseldorp @ 2022-12-13 8:56 UTC (permalink / raw) To: Eric Biggers; +Cc: fstests On Mon, 12 Dec 2022 21:51:09 -0800, Eric Biggers wrote: > > -while [ $i -le $loop ]; do > > +for ((i = 1; i < loop; i++)); do > > This does one fewer iteration than before. Gah you're right. I'll drop this patch as it was only intended as a readability clean-up. Thanks for the review. Cheers, David ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/3] check: ensure sect_stop is initialized if interrupted 2022-12-12 23:08 [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max David Disseldorp 2022-12-12 23:08 ` [PATCH 2/3] tests/generic/027: use c-style for loops David Disseldorp @ 2022-12-12 23:08 ` David Disseldorp 2022-12-13 14:51 ` Zorro Lang 2022-12-13 14:41 ` [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max Zorro Lang 2 siblings, 1 reply; 12+ messages in thread From: David Disseldorp @ 2022-12-12 23:08 UTC (permalink / raw) To: fstests; +Cc: David Disseldorp sect_stop is normally set immediately prior to calling _wrapup() via run_section(). However, when called via a trap signal handler, sect_stop may be uninitialized, leading to a negative section time (sect_stop - sect_start) in the xunit report. E.g. Interrupted! Passed all 1 tests Xunit report: /home/david/xfstests/results//result.xml rapido1:/# head /home/david/xfstests/results//result.xml <?xml version="1.0" encoding="UTF-8"?> <testsuite name="xfstests" failures="0" skipped="0" tests="1" time="-1670885797" ... > This commit uses the existing $interrupt flag to determine when sect_stop needs to be initialised. Signed-off-by: David Disseldorp <ddiss@suse.de> --- check | 1 + 1 file changed, 1 insertion(+) diff --git a/check b/check index d2e51296..cb3ea155 100755 --- a/check +++ b/check @@ -433,6 +433,7 @@ _wrapup() { seq="check" check="$RESULT_BASE/check" + $interrupt && sect_stop=`_wallclock` if $showme && $needwrap; then if $do_report; then -- 2.35.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] check: ensure sect_stop is initialized if interrupted 2022-12-12 23:08 ` [PATCH 3/3] check: ensure sect_stop is initialized if interrupted David Disseldorp @ 2022-12-13 14:51 ` Zorro Lang 0 siblings, 0 replies; 12+ messages in thread From: Zorro Lang @ 2022-12-13 14:51 UTC (permalink / raw) To: David Disseldorp; +Cc: fstests On Tue, Dec 13, 2022 at 12:08:20AM +0100, David Disseldorp wrote: > sect_stop is normally set immediately prior to calling _wrapup() via > run_section(). However, when called via a trap signal handler, > sect_stop may be uninitialized, leading to a negative section time > (sect_stop - sect_start) in the xunit report. E.g. > Interrupted! > Passed all 1 tests > Xunit report: /home/david/xfstests/results//result.xml > rapido1:/# head /home/david/xfstests/results//result.xml > <?xml version="1.0" encoding="UTF-8"?> > <testsuite name="xfstests" failures="0" skipped="0" tests="1" > time="-1670885797" ... > > > This commit uses the existing $interrupt flag to determine when > sect_stop needs to be initialised. > > Signed-off-by: David Disseldorp <ddiss@suse.de> > --- I don't use Xunit report generally, but this change makes sense to me. Reviewed-by: Zorro Lang <zlang@redhat.com> > check | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/check b/check > index d2e51296..cb3ea155 100755 > --- a/check > +++ b/check > @@ -433,6 +433,7 @@ _wrapup() > { > seq="check" > check="$RESULT_BASE/check" > + $interrupt && sect_stop=`_wallclock` > > if $showme && $needwrap; then > if $do_report; then > -- > 2.35.3 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-12 23:08 [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max David Disseldorp 2022-12-12 23:08 ` [PATCH 2/3] tests/generic/027: use c-style for loops David Disseldorp 2022-12-12 23:08 ` [PATCH 3/3] check: ensure sect_stop is initialized if interrupted David Disseldorp @ 2022-12-13 14:41 ` Zorro Lang 2022-12-13 15:32 ` David Disseldorp 2 siblings, 1 reply; 12+ messages in thread From: Zorro Lang @ 2022-12-13 14:41 UTC (permalink / raw) To: David Disseldorp; +Cc: fstests, djwong On Tue, Dec 13, 2022 at 12:08:18AM +0100, David Disseldorp wrote: > For xfs, _acl_get_max() calls xfs_info which in turn calls > "xfs_spaceman -c info ...". > > Without this change, xfs_spaceman absence results in: > --- tests/generic/026.out > +++ /home/david/xfstests/results//generic/026.out.bad > @@ -1,9 +1,11 @@ > QA output created by 026 > +/usr/sbin/xfs_info: line 44: xfs_spaceman: command not found Hmm.. That's weird, both xfs_info and xfs_spaceman are from xfsprogs package. If someone xfsprogs version doesn't hasve provide xfs_spaceman, why its xfs_info would like to call that? What xfsprogs do you use? Thanks, Zorro > > === Test out large ACLs === > +/usr/sbin/xfs_info: line 44: xfs_spaceman: command not found > 1 below acl max > acl max > ... > > Signed-off-by: David Disseldorp <ddiss@suse.de> > --- > common/attr | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/common/attr b/common/attr > index cce4d1b2..a94c5e4b 100644 > --- a/common/attr > +++ b/common/attr > @@ -57,6 +57,9 @@ _acl_get_max() > > _require_acl_get_max() > { > + # _acl_get_max -> xfs_info -> xfs_spaceman > + [ "$FSTYP" == "xfs" ] && _require_xfs_spaceman_command "info" > + > if [ $(_acl_get_max) -eq 0 ]; then > _notrun "$FSTYP does not define maximum ACL count" > fi > -- > 2.35.3 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-13 14:41 ` [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max Zorro Lang @ 2022-12-13 15:32 ` David Disseldorp 2022-12-13 18:25 ` Zorro Lang 0 siblings, 1 reply; 12+ messages in thread From: David Disseldorp @ 2022-12-13 15:32 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, djwong On Tue, 13 Dec 2022 22:41:52 +0800, Zorro Lang wrote: > Hmm.. That's weird, both xfs_info and xfs_spaceman are from xfsprogs > package. If someone xfsprogs version doesn't hasve provide xfs_spaceman, > why its xfs_info would like to call that? What xfsprogs do you use? I have a hacky bunch of scripts that use Dracut to generate an initramfs image with minimal dependencies for xfstests alongside the test kernel: https://github.com/rapido-linux/rapido The rapido dependency list is now fixed, but I figured that this change makes sense given the other scattered _require_X checks for xfsprogs binaries. Feel free to drop this change if you don't agree. Cheers, David ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-13 15:32 ` David Disseldorp @ 2022-12-13 18:25 ` Zorro Lang 2022-12-13 19:08 ` David Disseldorp 0 siblings, 1 reply; 12+ messages in thread From: Zorro Lang @ 2022-12-13 18:25 UTC (permalink / raw) To: David Disseldorp; +Cc: fstests, djwong On Tue, Dec 13, 2022 at 04:32:34PM +0100, David Disseldorp wrote: > On Tue, 13 Dec 2022 22:41:52 +0800, Zorro Lang wrote: > > > Hmm.. That's weird, both xfs_info and xfs_spaceman are from xfsprogs > > package. If someone xfsprogs version doesn't hasve provide xfs_spaceman, > > why its xfs_info would like to call that? What xfsprogs do you use? > > I have a hacky bunch of scripts that use Dracut to generate an > initramfs image with minimal dependencies for xfstests alongside the > test kernel: https://github.com/rapido-linux/rapido > > The rapido dependency list is now fixed, but I figured that this change > makes sense given the other scattered _require_X checks for xfsprogs > binaries. Feel free to drop this change if you don't agree. We should let xfsprogs decide how xfs_info works. xfs_info doesn't always depends on xfs_spaceman, old xfs_info might use xfs_db or other things to get xfs info, and I don't know if it'll be changed to use other command in the future again. So this change will cause all cases which call _require_acl_get_max will notrun on old (maybe future) xfsprogs which doesn't has xfs_spaceman "info" command. I think that's not what we want, so I'd like to drop this patch. Thanks for your understanding. Thanks, Zorro > > Cheers, David > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-13 18:25 ` Zorro Lang @ 2022-12-13 19:08 ` David Disseldorp 2022-12-13 19:27 ` Darrick J. Wong 0 siblings, 1 reply; 12+ messages in thread From: David Disseldorp @ 2022-12-13 19:08 UTC (permalink / raw) To: Zorro Lang; +Cc: fstests, djwong On Wed, 14 Dec 2022 02:25:31 +0800, Zorro Lang wrote: > We should let xfsprogs decide how xfs_info works. xfs_info doesn't always > depends on xfs_spaceman, old xfs_info might use xfs_db or other things to > get xfs info, and I don't know if it'll be changed to use other command in > the future again. > > So this change will cause all cases which call _require_acl_get_max will notrun > on old (maybe future) xfsprogs which doesn't has xfs_spaceman "info" command. > I think that's not what we want, so I'd like to drop this patch. Thanks for > your understanding. I wasn't aware that the xfs_info->xfs_spaceman call path was a new change. With that in mind, I agree it makes sense to drop this patch. Cheers, David ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-13 19:08 ` David Disseldorp @ 2022-12-13 19:27 ` Darrick J. Wong 2022-12-13 19:58 ` Zorro Lang 0 siblings, 1 reply; 12+ messages in thread From: Darrick J. Wong @ 2022-12-13 19:27 UTC (permalink / raw) To: David Disseldorp; +Cc: Zorro Lang, fstests On Tue, Dec 13, 2022 at 08:08:31PM +0100, David Disseldorp wrote: > On Wed, 14 Dec 2022 02:25:31 +0800, Zorro Lang wrote: > > > We should let xfsprogs decide how xfs_info works. xfs_info doesn't always > > depends on xfs_spaceman, old xfs_info might use xfs_db or other things to > > get xfs info, and I don't know if it'll be changed to use other command in > > the future again. > > > > So this change will cause all cases which call _require_acl_get_max will notrun > > on old (maybe future) xfsprogs which doesn't has xfs_spaceman "info" command. > > I think that's not what we want, so I'd like to drop this patch. Thanks for > > your understanding. > > I wasn't aware that the xfs_info->xfs_spaceman call path was a new > change. With that in mind, I agree it makes sense to drop this patch. Since 4.17, xfs_info requires xfs_spaceman if the fs is mounted, or xfs_db if unmounted. Before that, it required xfs_growfs and only worked on mounted filesystems. That said, perhaps _acl_get_max should be doing: $XFS_INFO_PROG $TEST_DIR | _filter_mkfs > /dev/null 2> $tmp.info test "${PIPESTATUS[0]}" -ne 0 && \ _fail "cannot get maximum acl count for xfs" Rather than spraying whatever nonsense it does if spaceman is missing? --D > Cheers, David ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max 2022-12-13 19:27 ` Darrick J. Wong @ 2022-12-13 19:58 ` Zorro Lang 0 siblings, 0 replies; 12+ messages in thread From: Zorro Lang @ 2022-12-13 19:58 UTC (permalink / raw) To: Darrick J. Wong, fstests; +Cc: David Disseldorp, Zorro Lang On Tue, Dec 13, 2022 at 11:27:25AM -0800, Darrick J. Wong wrote: > On Tue, Dec 13, 2022 at 08:08:31PM +0100, David Disseldorp wrote: > > On Wed, 14 Dec 2022 02:25:31 +0800, Zorro Lang wrote: > > > > > We should let xfsprogs decide how xfs_info works. xfs_info doesn't always > > > depends on xfs_spaceman, old xfs_info might use xfs_db or other things to > > > get xfs info, and I don't know if it'll be changed to use other command in > > > the future again. > > > > > > So this change will cause all cases which call _require_acl_get_max will notrun > > > on old (maybe future) xfsprogs which doesn't has xfs_spaceman "info" command. > > > I think that's not what we want, so I'd like to drop this patch. Thanks for > > > your understanding. > > > > I wasn't aware that the xfs_info->xfs_spaceman call path was a new > > change. With that in mind, I agree it makes sense to drop this patch. > > Since 4.17, xfs_info requires xfs_spaceman if the fs is mounted, or > xfs_db if unmounted. Before that, it required xfs_growfs and only > worked on mounted filesystems. > > That said, perhaps _acl_get_max should be doing: > > $XFS_INFO_PROG $TEST_DIR | _filter_mkfs > /dev/null 2> $tmp.info > test "${PIPESTATUS[0]}" -ne 0 && \ > _fail "cannot get maximum acl count for xfs" > > Rather than spraying whatever nonsense it does if spaceman is missing? Make more sense, but I don't think it's necessary to check return status of each command line. xfs_info generally works well, we can do this change when we have a real requirement in one day :) Thanks, Zorro > > --D > > > Cheers, David > ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-12-13 19:58 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-12-12 23:08 [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max David Disseldorp 2022-12-12 23:08 ` [PATCH 2/3] tests/generic/027: use c-style for loops David Disseldorp 2022-12-13 5:51 ` Eric Biggers 2022-12-13 8:56 ` David Disseldorp 2022-12-12 23:08 ` [PATCH 3/3] check: ensure sect_stop is initialized if interrupted David Disseldorp 2022-12-13 14:51 ` Zorro Lang 2022-12-13 14:41 ` [PATCH 1/3] common/attr: require xfs_spaceman for xfs acl_get_max Zorro Lang 2022-12-13 15:32 ` David Disseldorp 2022-12-13 18:25 ` Zorro Lang 2022-12-13 19:08 ` David Disseldorp 2022-12-13 19:27 ` Darrick J. Wong 2022-12-13 19:58 ` Zorro Lang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox