* [PATCH] generic/645: Confirm availability of free inodes @ 2026-06-17 5:42 Ojaswin Mujoo 2026-06-25 18:42 ` Darrick J. Wong 0 siblings, 1 reply; 6+ messages in thread From: Ojaswin Mujoo @ 2026-06-17 5:42 UTC (permalink / raw) To: Zorro Lang, fstests; +Cc: Disha Goel When running generic/645 with ext4 using 64k block size + bigalloc, the test fails with ENOSPC because the filesystem runs out of inodes before the test completes. The test creates approximately 10,001 files, however, in this particular configuration a standard 5G FS only has around ~5100 inodes resulting in the ENOSPC failure. Add a check using _get_free_inode() to verify sufficient inodes are available before running the test, else skip it. Reported-by: Disha Goel <disgoel@linux.ibm.com> Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> --- tests/generic/645 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/generic/645 b/tests/generic/645 index d6eb75e6..944b33db 100755 --- a/tests/generic/645 +++ b/tests/generic/645 @@ -19,6 +19,12 @@ _require_chown _wants_kernel_commit dacfd001eaf2 \ "fs/mnt_idmapping.c: Return -EINVAL when no map is written" +_free_inodes=$(_get_free_inode $TEST_DIR) +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" +fi + echo "Silence is golden" $here/src/vfs/vfstest --test-nested-userns \ -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] generic/645: Confirm availability of free inodes 2026-06-17 5:42 [PATCH] generic/645: Confirm availability of free inodes Ojaswin Mujoo @ 2026-06-25 18:42 ` Darrick J. Wong 2026-07-29 5:36 ` Ojaswin Mujoo 0 siblings, 1 reply; 6+ messages in thread From: Darrick J. Wong @ 2026-06-25 18:42 UTC (permalink / raw) To: Ojaswin Mujoo; +Cc: Zorro Lang, fstests, Disha Goel On Wed, Jun 17, 2026 at 11:12:16AM +0530, Ojaswin Mujoo wrote: > When running generic/645 with ext4 using 64k block size + bigalloc, the > test fails with ENOSPC because the filesystem runs out of inodes before > the test completes. > > The test creates approximately 10,001 files, however, in this particular > configuration a standard 5G FS only has around ~5100 inodes resulting in > the ENOSPC failure. > > Add a check using _get_free_inode() to verify sufficient inodes are > available before running the test, else skip it. > > Reported-by: Disha Goel <disgoel@linux.ibm.com> > Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> > --- > tests/generic/645 | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/tests/generic/645 b/tests/generic/645 > index d6eb75e6..944b33db 100755 > --- a/tests/generic/645 > +++ b/tests/generic/645 > @@ -19,6 +19,12 @@ _require_chown > _wants_kernel_commit dacfd001eaf2 \ > "fs/mnt_idmapping.c: Return -EINVAL when no map is written" > > +_free_inodes=$(_get_free_inode $TEST_DIR) > +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then I'm assuming the > 0 check here is to cover weird filesystems like fat that don't advertise any inodes? /me wonders if that ought to be a common helper where we can record that justification: _require_free_inodes() { local path="$1" local nr="$2" local _free_inodes=$(_get_free_inode "$path") # Weird filesystems like vfat don't report any inodes, so we # can't check for sufficient free inodes; IOWs, FAFO. test "$_free_inodes" -eq 0 && return test "$_free_inodes" -lt "$nr" && \ _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" } _require_free_inodes $TEST_DIR 10001 (maybe clean up the comment a bit) --D > + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" > +fi > + > echo "Silence is golden" > > $here/src/vfs/vfstest --test-nested-userns \ > -- > 2.53.0 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] generic/645: Confirm availability of free inodes 2026-06-25 18:42 ` Darrick J. Wong @ 2026-07-29 5:36 ` Ojaswin Mujoo 2026-07-29 15:44 ` Darrick J. Wong 0 siblings, 1 reply; 6+ messages in thread From: Ojaswin Mujoo @ 2026-07-29 5:36 UTC (permalink / raw) To: Darrick J. Wong; +Cc: Zorro Lang, fstests, Disha Goel On Thu, Jun 25, 2026 at 11:42:59AM -0700, Darrick J. Wong wrote: > On Wed, Jun 17, 2026 at 11:12:16AM +0530, Ojaswin Mujoo wrote: > > When running generic/645 with ext4 using 64k block size + bigalloc, the > > test fails with ENOSPC because the filesystem runs out of inodes before > > the test completes. > > > > The test creates approximately 10,001 files, however, in this particular > > configuration a standard 5G FS only has around ~5100 inodes resulting in > > the ENOSPC failure. > > > > Add a check using _get_free_inode() to verify sufficient inodes are > > available before running the test, else skip it. > > > > Reported-by: Disha Goel <disgoel@linux.ibm.com> > > Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> > > --- > > tests/generic/645 | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/tests/generic/645 b/tests/generic/645 > > index d6eb75e6..944b33db 100755 > > --- a/tests/generic/645 > > +++ b/tests/generic/645 > > @@ -19,6 +19,12 @@ _require_chown > > _wants_kernel_commit dacfd001eaf2 \ > > "fs/mnt_idmapping.c: Return -EINVAL when no map is written" > > > > +_free_inodes=$(_get_free_inode $TEST_DIR) > > +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then > > I'm assuming the > 0 check here is to cover weird filesystems like fat > that don't advertise any inodes? /me wonders if that ought to be a Hey Darrick, sorry I missed this email earlier. Yes that's the idea. I see there is a helper already _require_inode_limits() { if [ $(_get_free_inode $TEST_DIR) -eq 0 ]; then _notrun "$FSTYP does not have a fixed number of inodes available" fi } But this will end up skipping the FSes that don't have a concept of free inodes. > common helper where we can record that justification: > > _require_free_inodes() { > local path="$1" > local nr="$2" > > local _free_inodes=$(_get_free_inode "$path") > > # Weird filesystems like vfat don't report any inodes, so we > # can't check for sufficient free inodes; IOWs, FAFO. > test "$_free_inodes" -eq 0 && return If we do this, won't we pass the check for the case where say xfs has 0 free inodes. It's a rare chance IMObut still wondering if we want to keep that edge case open. What do you think in these options: - use the above check - use _require_free_inodes which will cause notruns on some FSes - Maybe have a new helper to check if FS advertises free inodes and then use somthing like if ! __fs_advertises_free_inodes return else test "$_free_inodes" -lt "$nr" && \ _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" Regards, ojaswin > > test "$_free_inodes" -lt "$nr" && \ > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > } > > > _require_free_inodes $TEST_DIR 10001 > > (maybe clean up the comment a bit) > > --D > > > + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" > > +fi > > + > > echo "Silence is golden" > > > > $here/src/vfs/vfstest --test-nested-userns \ > > -- > > 2.53.0 > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] generic/645: Confirm availability of free inodes 2026-07-29 5:36 ` Ojaswin Mujoo @ 2026-07-29 15:44 ` Darrick J. Wong 2026-07-30 11:03 ` Ojaswin Mujoo 0 siblings, 1 reply; 6+ messages in thread From: Darrick J. Wong @ 2026-07-29 15:44 UTC (permalink / raw) To: Ojaswin Mujoo; +Cc: Zorro Lang, fstests, Disha Goel On Wed, Jul 29, 2026 at 11:06:57AM +0530, Ojaswin Mujoo wrote: > On Thu, Jun 25, 2026 at 11:42:59AM -0700, Darrick J. Wong wrote: > > On Wed, Jun 17, 2026 at 11:12:16AM +0530, Ojaswin Mujoo wrote: > > > When running generic/645 with ext4 using 64k block size + bigalloc, the > > > test fails with ENOSPC because the filesystem runs out of inodes before > > > the test completes. > > > > > > The test creates approximately 10,001 files, however, in this particular > > > configuration a standard 5G FS only has around ~5100 inodes resulting in > > > the ENOSPC failure. > > > > > > Add a check using _get_free_inode() to verify sufficient inodes are > > > available before running the test, else skip it. > > > > > > Reported-by: Disha Goel <disgoel@linux.ibm.com> > > > Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> > > > --- > > > tests/generic/645 | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/tests/generic/645 b/tests/generic/645 > > > index d6eb75e6..944b33db 100755 > > > --- a/tests/generic/645 > > > +++ b/tests/generic/645 > > > @@ -19,6 +19,12 @@ _require_chown > > > _wants_kernel_commit dacfd001eaf2 \ > > > "fs/mnt_idmapping.c: Return -EINVAL when no map is written" > > > > > > +_free_inodes=$(_get_free_inode $TEST_DIR) > > > +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then > > > > I'm assuming the > 0 check here is to cover weird filesystems like fat > > that don't advertise any inodes? /me wonders if that ought to be a > > Hey Darrick, sorry I missed this email earlier. Yes that's the idea. I > see there is a helper already > > _require_inode_limits() > { > if [ $(_get_free_inode $TEST_DIR) -eq 0 ]; then > _notrun "$FSTYP does not have a fixed number of inodes available" > fi > } > > But this will end up skipping the FSes that don't have a concept of > free inodes. > > > common helper where we can record that justification: > > > > _require_free_inodes() { > > local path="$1" > > local nr="$2" > > > > local _free_inodes=$(_get_free_inode "$path") > > > > # Weird filesystems like vfat don't report any inodes, so we > > # can't check for sufficient free inodes; IOWs, FAFO. > > test "$_free_inodes" -eq 0 && return > > If we do this, won't we pass the check for the case where say xfs has 0 > free inodes. It's a rare chance IMObut still wondering if we want to > keep that edge case open. > > What do you think in these options: > - use the above check > - use _require_free_inodes which will cause notruns on some FSes > - Maybe have a new helper to check if FS advertises free inodes and then > use somthing like > > if ! __fs_advertises_free_inodes > return > else > test "$_free_inodes" -lt "$nr" && \ > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > Hmmm. This is getting complicated, because generic tests can run on any filesystem and we have no idea how much space an inode actually consumes, or if the filesystem even has any real concept of inodes. Can we instead check the vfstest output for the ENOSPC error message and _notrun it if that is found? --D > Regards, > ojaswin > > > > > test "$_free_inodes" -lt "$nr" && \ > > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > > } > > > > > > _require_free_inodes $TEST_DIR 10001 > > > > (maybe clean up the comment a bit) > > > > > --D > > > > > + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" > > > +fi > > > + > > > echo "Silence is golden" > > > > > > $here/src/vfs/vfstest --test-nested-userns \ > > > -- > > > 2.53.0 > > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] generic/645: Confirm availability of free inodes 2026-07-29 15:44 ` Darrick J. Wong @ 2026-07-30 11:03 ` Ojaswin Mujoo 2026-07-30 15:32 ` Darrick J. Wong 0 siblings, 1 reply; 6+ messages in thread From: Ojaswin Mujoo @ 2026-07-30 11:03 UTC (permalink / raw) To: Darrick J. Wong; +Cc: Zorro Lang, fstests, Disha Goel On Wed, Jul 29, 2026 at 08:44:51AM -0700, Darrick J. Wong wrote: > On Wed, Jul 29, 2026 at 11:06:57AM +0530, Ojaswin Mujoo wrote: > > On Thu, Jun 25, 2026 at 11:42:59AM -0700, Darrick J. Wong wrote: > > > On Wed, Jun 17, 2026 at 11:12:16AM +0530, Ojaswin Mujoo wrote: > > > > When running generic/645 with ext4 using 64k block size + bigalloc, the > > > > test fails with ENOSPC because the filesystem runs out of inodes before > > > > the test completes. > > > > > > > > The test creates approximately 10,001 files, however, in this particular > > > > configuration a standard 5G FS only has around ~5100 inodes resulting in > > > > the ENOSPC failure. > > > > > > > > Add a check using _get_free_inode() to verify sufficient inodes are > > > > available before running the test, else skip it. > > > > > > > > Reported-by: Disha Goel <disgoel@linux.ibm.com> > > > > Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> > > > > --- > > > > tests/generic/645 | 6 ++++++ > > > > 1 file changed, 6 insertions(+) > > > > > > > > diff --git a/tests/generic/645 b/tests/generic/645 > > > > index d6eb75e6..944b33db 100755 > > > > --- a/tests/generic/645 > > > > +++ b/tests/generic/645 > > > > @@ -19,6 +19,12 @@ _require_chown > > > > _wants_kernel_commit dacfd001eaf2 \ > > > > "fs/mnt_idmapping.c: Return -EINVAL when no map is written" > > > > > > > > +_free_inodes=$(_get_free_inode $TEST_DIR) > > > > +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then > > > > > > I'm assuming the > 0 check here is to cover weird filesystems like fat > > > that don't advertise any inodes? /me wonders if that ought to be a > > > > Hey Darrick, sorry I missed this email earlier. Yes that's the idea. I > > see there is a helper already > > > > _require_inode_limits() > > { > > if [ $(_get_free_inode $TEST_DIR) -eq 0 ]; then > > _notrun "$FSTYP does not have a fixed number of inodes available" > > fi > > } > > > > But this will end up skipping the FSes that don't have a concept of > > free inodes. > > > > > common helper where we can record that justification: > > > > > > _require_free_inodes() { > > > local path="$1" > > > local nr="$2" > > > > > > local _free_inodes=$(_get_free_inode "$path") > > > > > > # Weird filesystems like vfat don't report any inodes, so we > > > # can't check for sufficient free inodes; IOWs, FAFO. > > > test "$_free_inodes" -eq 0 && return > > > > If we do this, won't we pass the check for the case where say xfs has 0 > > free inodes. It's a rare chance IMObut still wondering if we want to > > keep that edge case open. > > > > What do you think in these options: > > - use the above check > > - use _require_free_inodes which will cause notruns on some FSes > > - Maybe have a new helper to check if FS advertises free inodes and then > > use somthing like > > > > if ! __fs_advertises_free_inodes > > return > > else > > test "$_free_inodes" -lt "$nr" && \ > > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > > > > Hmmm. This is getting complicated, because generic tests can run on any > filesystem and we have no idea how much space an inode actually > consumes, or if the filesystem even has any real concept of inodes. > > Can we instead check the vfstest output for the ENOSPC error message and > _notrun it if that is found? Yes this sounds simple enough. The below diff works for me: diff --git a/tests/generic/645 b/tests/generic/645 index d6eb75e6..3d8ca905 100755 --- a/tests/generic/645 +++ b/tests/generic/645 @@ -22,7 +22,14 @@ _wants_kernel_commit dacfd001eaf2 \ echo "Silence is golden" $here/src/vfs/vfstest --test-nested-userns \ - --device "$TEST_DEV" --mount "$TEST_DIR" --fstype "$FSTYP" + --device "$TEST_DEV" --mount "$TEST_DIR" --fstype "$FSTYP" \ + > $tmp.vfstest 2>&1 +if grep -q "No space left on device" $tmp.vfstest; then + _notrun "No space left on device" +fi + +cat $tmp.vfstest status=$? If this looks good I cans send a formal patch. Regards, ojaswin > > --D > > > Regards, > > ojaswin > > > > > > > > test "$_free_inodes" -lt "$nr" && \ > > > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > > > } > > > > > > > > > _require_free_inodes $TEST_DIR 10001 > > > > > > (maybe clean up the comment a bit) > > > > > > > > --D > > > > > > > + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" > > > > +fi > > > > + > > > > echo "Silence is golden" > > > > > > > > $here/src/vfs/vfstest --test-nested-userns \ > > > > -- > > > > 2.53.0 > > > > > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] generic/645: Confirm availability of free inodes 2026-07-30 11:03 ` Ojaswin Mujoo @ 2026-07-30 15:32 ` Darrick J. Wong 0 siblings, 0 replies; 6+ messages in thread From: Darrick J. Wong @ 2026-07-30 15:32 UTC (permalink / raw) To: Ojaswin Mujoo; +Cc: Zorro Lang, fstests, Disha Goel On Thu, Jul 30, 2026 at 04:33:37PM +0530, Ojaswin Mujoo wrote: > On Wed, Jul 29, 2026 at 08:44:51AM -0700, Darrick J. Wong wrote: > > On Wed, Jul 29, 2026 at 11:06:57AM +0530, Ojaswin Mujoo wrote: > > > On Thu, Jun 25, 2026 at 11:42:59AM -0700, Darrick J. Wong wrote: > > > > On Wed, Jun 17, 2026 at 11:12:16AM +0530, Ojaswin Mujoo wrote: > > > > > When running generic/645 with ext4 using 64k block size + bigalloc, the > > > > > test fails with ENOSPC because the filesystem runs out of inodes before > > > > > the test completes. > > > > > > > > > > The test creates approximately 10,001 files, however, in this particular > > > > > configuration a standard 5G FS only has around ~5100 inodes resulting in > > > > > the ENOSPC failure. > > > > > > > > > > Add a check using _get_free_inode() to verify sufficient inodes are > > > > > available before running the test, else skip it. > > > > > > > > > > Reported-by: Disha Goel <disgoel@linux.ibm.com> > > > > > Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> > > > > > --- > > > > > tests/generic/645 | 6 ++++++ > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > > diff --git a/tests/generic/645 b/tests/generic/645 > > > > > index d6eb75e6..944b33db 100755 > > > > > --- a/tests/generic/645 > > > > > +++ b/tests/generic/645 > > > > > @@ -19,6 +19,12 @@ _require_chown > > > > > _wants_kernel_commit dacfd001eaf2 \ > > > > > "fs/mnt_idmapping.c: Return -EINVAL when no map is written" > > > > > > > > > > +_free_inodes=$(_get_free_inode $TEST_DIR) > > > > > +if [ $_free_inodes -ne 0 ] && [ $_free_inodes -lt 10001 ]; then > > > > > > > > I'm assuming the > 0 check here is to cover weird filesystems like fat > > > > that don't advertise any inodes? /me wonders if that ought to be a > > > > > > Hey Darrick, sorry I missed this email earlier. Yes that's the idea. I > > > see there is a helper already > > > > > > _require_inode_limits() > > > { > > > if [ $(_get_free_inode $TEST_DIR) -eq 0 ]; then > > > _notrun "$FSTYP does not have a fixed number of inodes available" > > > fi > > > } > > > > > > But this will end up skipping the FSes that don't have a concept of > > > free inodes. > > > > > > > common helper where we can record that justification: > > > > > > > > _require_free_inodes() { > > > > local path="$1" > > > > local nr="$2" > > > > > > > > local _free_inodes=$(_get_free_inode "$path") > > > > > > > > # Weird filesystems like vfat don't report any inodes, so we > > > > # can't check for sufficient free inodes; IOWs, FAFO. > > > > test "$_free_inodes" -eq 0 && return > > > > > > If we do this, won't we pass the check for the case where say xfs has 0 > > > free inodes. It's a rare chance IMObut still wondering if we want to > > > keep that edge case open. > > > > > > What do you think in these options: > > > - use the above check > > > - use _require_free_inodes which will cause notruns on some FSes > > > - Maybe have a new helper to check if FS advertises free inodes and then > > > use somthing like > > > > > > if ! __fs_advertises_free_inodes > > > return > > > else > > > test "$_free_inodes" -lt "$nr" && \ > > > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > > > > > > > Hmmm. This is getting complicated, because generic tests can run on any > > filesystem and we have no idea how much space an inode actually > > consumes, or if the filesystem even has any real concept of inodes. > > > > Can we instead check the vfstest output for the ENOSPC error message and > > _notrun it if that is found? > > Yes this sounds simple enough. The below diff works for me: > > diff --git a/tests/generic/645 b/tests/generic/645 > index d6eb75e6..3d8ca905 100755 > --- a/tests/generic/645 > +++ b/tests/generic/645 > @@ -22,7 +22,14 @@ _wants_kernel_commit dacfd001eaf2 \ > echo "Silence is golden" > > $here/src/vfs/vfstest --test-nested-userns \ > - --device "$TEST_DEV" --mount "$TEST_DIR" --fstype "$FSTYP" > + --device "$TEST_DEV" --mount "$TEST_DIR" --fstype "$FSTYP" \ > + > $tmp.vfstest 2>&1 > > +if grep -q "No space left on device" $tmp.vfstest; then > + _notrun "No space left on device" > +fi > + > +cat $tmp.vfstest > status=$? > > If this looks good I cans send a formal patch. Yes! :) --D > > Regards, > ojaswin > > > > > --D > > > > > Regards, > > > ojaswin > > > > > > > > > > > test "$_free_inodes" -lt "$nr" && \ > > > > _notrun "Insufficient free inodes ($_free_inodes), need at least $nr" > > > > } > > > > > > > > > > > > _require_free_inodes $TEST_DIR 10001 > > > > > > > > (maybe clean up the comment a bit) > > > > > > > > > > > --D > > > > > > > > > + _notrun "Insufficient free inodes ($_free_inodes), need at least 10001" > > > > > +fi > > > > > + > > > > > echo "Silence is golden" > > > > > > > > > > $here/src/vfs/vfstest --test-nested-userns \ > > > > > -- > > > > > 2.53.0 > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-30 15:32 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-17 5:42 [PATCH] generic/645: Confirm availability of free inodes Ojaswin Mujoo 2026-06-25 18:42 ` Darrick J. Wong 2026-07-29 5:36 ` Ojaswin Mujoo 2026-07-29 15:44 ` Darrick J. Wong 2026-07-30 11:03 ` Ojaswin Mujoo 2026-07-30 15:32 ` Darrick J. Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox