On 5/14/18 6:11 PM, Dave Chinner wrote:
> On Mon, May 14, 2018 at 12:09:16PM -0500, Eric Sandeen wrote:
>> This tests the online label ioctl that btrfs has, which has been
>> recently proposed for XFS.
>>
>> To run, it requires an updated xfs_io with the label command and a
>> filesystem that supports it
>>
>> A slight change here to _require_xfs_io_command as well, so that tests
>> which simply fail with "Inappropriate ioctl" can be caught in the
>> common case.
>>
>> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
>> ---
<snip>
>> +# The maximum filesystem label length, not including terminating NULL
>> +_label_get_max()
>> +{
>> + case $FSTYP in
>> + xfs)
>> + MAXLEN=12
>> + ;;
>> + btrfs)
>> + MAXLEN=255
>> + ;;
>> + *)
>> + MAXLEN=0
>
> Why not just _notrun here?
do we want to go through the other steps only to get here and notrun
halfway through?
>> + ;;
>> + esac
>> +
>> + echo $MAXLEN
>> +}
>> +
>> +_require_label_get_max()
>> +{
>> + if [ $(_label_get_max) -eq 0 ]; then
>> + _notrun "$FSTYP does not define maximum label length"
>> + fi
>
> And this check can go away?
We'd like to know if all the validations in this can complete before we
get started, right? That's why I did it this way.
> Also, shouldn't it be _require_online_label_change() ? And then
> maybe you can move the xfs_io label command check inside it?
Well, we want to know a lot of things:
1) can the kernel code for this filesystem support online label
2) does xfs_io support the label command
3) does this test know the maximum label length to test for this fs
the above stuff is for 3)
>> +# remove previous $seqres.full before test
>> +rm -f $seqres.full
>> +
>> +# real QA test starts here
>> +
>> +_supported_fs generic
>> +_supported_os Linux
>> +_require_scratch
>> +_require_xfs_io_command "label"
>> +_require_label_get_max
>> +
>> +_scratch_mkfs > $seqres.full 2>&1
>> +_scratch_mount
>> +
>> +# Make sure we can set & clear the label
>> +$XFS_IO_PROG -c "label label.$seq" $SCRATCH_MNT
>> +$XFS_IO_PROG -c "label" $SCRATCH_MNT
>> +
>> +# And that userspace can see it now, while mounted
>> +# NB: some blkid has trailing whitespace, filter it out here
>> +blkid -s LABEL $SCRATCH_DEV | _filter_scratch | sed -e "s/ $//g"
>> +
>> +# And that the it is still there when it's unmounted
>> +_scratch_unmount
>> +blkid -s LABEL $SCRATCH_DEV | _filter_scratch | sed -e "s/ $//g"
>
> Ok, so "LABEL" here is a special blkid match token....
yep
>> +# And that it persists after a remount
>> +_scratch_mount
>> +$XFS_IO_PROG -c "label" $SCRATCH_MNT
>> +
>> +# And that a too-long label is rejected, beyond the interface max:
>> +LABEL=$(perl -e "print 'l' x 257;")
>
> And now you use it as a variable. Nasty and confusing. Using lower
> case for local variables is the norm, right? I thought we were only
> supposed to use upper case for global test harness variables...
I guess I didn't know about that convention (or forgot)
ok, yeah, that's a little confusing I guess. *shrug* I can change it
if you prefer. Obviously the "blkid -s LABEL" must remain "LABEL"
> But even making it "label" is problematic:
>
>> +$XFS_IO_PROG -c "label $LABEL" $SCRATCH_MNT
>
> because "label" is an xfs_io command. Perhaps call it "fs_label"?
ok
-Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html