Re: [PATCH 3/4] xfs: detect time limits from filesystem

Amir Goldstein
2020-10-29T10:47:45Z

On Wed, Oct 28, 2020 at 10:24 PM Darrick J. Wong
<darrick.wong@oracle.com> wrote:
>
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> Teach fstests to extract timestamp limits of a filesystem using the new
> xfs_db timelimit command.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> common/rc | 2 +-
> common/xfs | 14 ++++++++++++++
> tests/xfs/911 | 44 ++++++++++++++++++++++++++++++++++++++++++++
> tests/xfs/911.out | 15 +++++++++++++++
> tests/xfs/group | 1 +
> 5 files changed, 75 insertions(+), 1 deletion(-)
> create mode 100755 tests/xfs/911
> create mode 100644 tests/xfs/911.out
>
>
> diff --git a/common/rc b/common/rc
> index 41f93047..162d957a 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -2029,7 +2029,7 @@ _filesystem_timestamp_range()
> echo "0 $u32max"
> ;;
> xfs)
> - echo "$s32min $s32max"
> + _xfs_timestamp_range "$device"
> ;;
> btrfs)
> echo "$s64min $s64max"
> diff --git a/common/xfs b/common/xfs
> index e548a0a1..19ccee03 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -994,3 +994,17 @@ _require_xfs_scratch_inobtcount()
> _notrun "inobtcount not supported by scratch filesystem type: $FSTYP"
> _scratch_unmount
> }
> +
> +_xfs_timestamp_range()
> +{
> + local use_db=0
> + local dbprog="$XFS_DB_PROG $device"
> + test "$device" = "$SCRATCH_DEV" && dbprog=_scratch_xfs_db
> +
> + $dbprog -f -c 'help timelimit' | grep -v -q 'not found' && use_db=1
> + if [ $use_db -eq 0 ]; then
> + echo "-$((1<<31)) $(((1<<31)-1))"

This embodies an assumption that the tested filesystem does not have
bigtime enabled if xfs_db tool is not uptodate.
Maybe it makes sense, but it may be safer to return "-1 -1" and not_run
generic/402 if xfs_db is not uptodate, perhaps with an extra message
hinting the user to upgrade xfs_db.

Thanks,
Amir.