[PATCH 4/5] xfstests: sync before umount to avoid device busy problems

Tom Marek tmarek at redhat.com
Fri Apr 13 06:15:50 CDT 2012


On 04/13/2012 12:26 PM, Stefan Behrens wrote:
> On 4/13/2012 11:49 AM, tmarek at redhat.com wrote:
>> From: Tom Marek<tmarek at redhat.com>
>>
>> Some tests might fail because of 'device or resource busy' when unmounting
>> either the SCRATCH or the TEST device. The reason this happenes is that
>> some processes might not have time to finish properly, or they are still
>> waiting for IO. The sync command was added before unmount into
>> _scratch_unmount() and umount_or_remount_ro which should help processes to
>> finish before unmounting takes place and thus it solves the problem.
>> This fixes for example tests 226 and 247.
>>
>> Test 226 uses plain umount command which suffers from exactly the same problem
>> as described above. Use fixed _scratch_unmount() instead of plain umount fixes
>> this problem.
>>
>> Signed-off-by: Tom Marek<tmarek at redhat.com>
>>
>> Reviewed-by: Lukas Czerner<lczerner at redhat.com>
>> ---
>>   226       |    4 ++--
>>   common.rc |    5 +++++
>>   2 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/226 b/226
>> index 6f28ac9..f8847c6 100755
>> --- a/226
>> +++ b/226
>> @@ -61,7 +61,7 @@ for I in `seq 1 $loops`; do
>>   done
>>
>>   echo
>> -umount $SCRATCH_DEV
>> +_scratch_unmount
>>   _scratch_mount
>>
>>   echo "-->  $loops direct 64m writes in a loop"
>> @@ -73,7 +73,7 @@ for I in `seq 1 $loops`; do
>>   done
>>
>>   echo
>> -umount $SCRATCH_DEV
>> +_scratch_unmount
>>
>>   status=0
>>   exit
>> diff --git a/common.rc b/common.rc
>> index cab0b64..e56e5bc 100644
>> --- a/common.rc
>> +++ b/common.rc
>> @@ -255,6 +255,8 @@ _scratch_mount()
>>
>>   _scratch_unmount()
>>   {
>> +    # Run sync to give processes some time to finish before unmount
>> +    sync
>>       $UMOUNT_PROG $SCRATCH_DEV
>>   }
>>
>> @@ -1051,6 +1053,9 @@ _umount_or_remount_ro()
>>       device=$1
>>       mountpoint=`_is_mounted $device`
>>
>> +    # Run sync to give processes some time to finish before unmount
>> +    sync
>> +
>>       if [ $USE_REMOUNT -eq 0 ]; then
>>           $UMOUNT_PROG $device
>>       else
> If a xfstest process is still running when _scratch_umount() is called,
> that xfstest is wrong and needs to be fixed IMO.
> If a system or filesystem thread is still running and umount fails to
> handle it, the system or filesystem needs to be fixed IMO.
>
> xfstests shall uncover issues, not hide them.
>
> sync before umount should never be required.
The reason i added sync before umount is that at the end of a lot of 
tests the function
_umount_scratch is called. And sometimes there may be some delayed 
operations when the umount is called and it fails -> test fails which is 
not the problem of fs but only a matter of finishing everything.

Tom
> _______________________________________________
> xfs mailing list
> xfs at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs



More information about the xfs mailing list