[1/3] generic/38[3456]: adjust to check prjquota before mount
diff mbox series

Message ID 20190723092529.112426-1-yuchao0@huawei.com
State New
Headers show
Series
  • [1/3] generic/38[3456]: adjust to check prjquota before mount
Related show

Commit Message

Chao Yu July 23, 2019, 9:25 a.m. UTC
Move _require_prjquota() to front of _qmount() since we do the
check on device directly instead of mountpoint, it can avoid
potential failure if filesystem utils needs exclusive open on
device.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
 tests/generic/383 | 2 +-
 tests/generic/384 | 2 +-
 tests/generic/385 | 2 +-
 tests/generic/386 | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

Comments

Eryu Guan July 28, 2019, 9:51 a.m. UTC | #1
On Tue, Jul 23, 2019 at 05:25:27PM +0800, Chao Yu wrote:
> Move _require_prjquota() to front of _qmount() since we do the
> check on device directly instead of mountpoint, it can avoid
> potential failure if filesystem utils needs exclusive open on
> device.
> 
> Signed-off-by: Chao Yu <yuchao0@huawei.com>

We've done similar changes before

23f60ef304d6 ("generic/38[3-6]: require project quota to be enabled on
SCRATCH_DEV")

but later it was reverted by

f722c48d4cd5 ("Revert "generic/38[3-6]: require project quota to be
enabled on SCRATCH_DEV"")

Because we use quotactl(2) to check if prjquota is enabled on the given
device (src/feature -P $dev in _require_prjquota), and quotactl(2)
requires the given device is a mounted device.

Thanks,
Eryu

> ---
>  tests/generic/383 | 2 +-
>  tests/generic/384 | 2 +-
>  tests/generic/385 | 2 +-
>  tests/generic/386 | 2 +-
>  4 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/generic/383 b/tests/generic/383
> index 2c8c5923..cf5ac255 100755
> --- a/tests/generic/383
> +++ b/tests/generic/383
> @@ -39,6 +39,7 @@ _require_xfs_quota_foreign
>  
>  _scratch_mkfs >/dev/null 2>&1
>  _scratch_enable_pquota
> +_require_prjquota $SCRATCH_DEV
>  
>  do_project_test()
>  {
> @@ -76,7 +77,6 @@ EOF
>  # Test project
>  _qmount_option "usrquota,prjquota"
>  _qmount
> -_require_prjquota $SCRATCH_DEV
>  do_project_test
>  
>  # success, all done
> diff --git a/tests/generic/384 b/tests/generic/384
> index b7c940d7..2c0cd00b 100755
> --- a/tests/generic/384
> +++ b/tests/generic/384
> @@ -57,10 +57,10 @@ chmod a+rwx $seqres.full	# arbitrary users will write here
>  _require_scratch
>  _scratch_mkfs >/dev/null 2>&1
>  _scratch_enable_pquota
> +_require_prjquota $SCRATCH_DEV
>  
>  _qmount_option "prjquota"
>  _qmount
> -_require_prjquota $SCRATCH_DEV
>  
>  report_quota()
>  {
> diff --git a/tests/generic/385 b/tests/generic/385
> index 937131a9..56ce6eb0 100755
> --- a/tests/generic/385
> +++ b/tests/generic/385
> @@ -56,9 +56,9 @@ quota_cmd="$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid"
>  
>  _scratch_mkfs >/dev/null 2>&1
>  _scratch_enable_pquota
> +_require_prjquota $SCRATCH_DEV
>  _qmount_option "prjquota"
>  _qmount
> -_require_prjquota $SCRATCH_DEV
>  
>  #
>  # Create the project root
> diff --git a/tests/generic/386 b/tests/generic/386
> index 462c5869..e4f7d23b 100755
> --- a/tests/generic/386
> +++ b/tests/generic/386
> @@ -112,10 +112,10 @@ echo $proj_num:$proj_dir > "$my_projects"
>  
>  _scratch_mkfs					>> "$seqres.full" 2>&1
>  _scratch_enable_pquota
> +_require_prjquota $SCRATCH_DEV
>  
>  _qmount_option "prjquota"
>  _qmount
> -_require_prjquota $SCRATCH_DEV
>  
>  mkdir -p "${proj_dir}"
>  
> -- 
> 2.18.0.rc1
>
Chao Yu July 29, 2019, 11:43 a.m. UTC | #2
On 2019/7/28 17:51, Eryu Guan wrote:
> On Tue, Jul 23, 2019 at 05:25:27PM +0800, Chao Yu wrote:
>> Move _require_prjquota() to front of _qmount() since we do the
>> check on device directly instead of mountpoint, it can avoid
>> potential failure if filesystem utils needs exclusive open on
>> device.
>>
>> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> 
> We've done similar changes before
> 
> 23f60ef304d6 ("generic/38[3-6]: require project quota to be enabled on
> SCRATCH_DEV")
> 
> but later it was reverted by
> 
> f722c48d4cd5 ("Revert "generic/38[3-6]: require project quota to be
> enabled on SCRATCH_DEV"")
> 
> Because we use quotactl(2) to check if prjquota is enabled on the given
> device (src/feature -P $dev in _require_prjquota), and quotactl(2)
> requires the given device is a mounted device.

You're right, let's ignore this patch. BTW, in order to fix f2fs failure on
these testcases, I'm trying to let dump.f2fs be able to check superblock on a
mounted device.

Thanks,

> 
> Thanks,
> Eryu
> 
>> ---
>>  tests/generic/383 | 2 +-
>>  tests/generic/384 | 2 +-
>>  tests/generic/385 | 2 +-
>>  tests/generic/386 | 2 +-
>>  4 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/generic/383 b/tests/generic/383
>> index 2c8c5923..cf5ac255 100755
>> --- a/tests/generic/383
>> +++ b/tests/generic/383
>> @@ -39,6 +39,7 @@ _require_xfs_quota_foreign
>>  
>>  _scratch_mkfs >/dev/null 2>&1
>>  _scratch_enable_pquota
>> +_require_prjquota $SCRATCH_DEV
>>  
>>  do_project_test()
>>  {
>> @@ -76,7 +77,6 @@ EOF
>>  # Test project
>>  _qmount_option "usrquota,prjquota"
>>  _qmount
>> -_require_prjquota $SCRATCH_DEV
>>  do_project_test
>>  
>>  # success, all done
>> diff --git a/tests/generic/384 b/tests/generic/384
>> index b7c940d7..2c0cd00b 100755
>> --- a/tests/generic/384
>> +++ b/tests/generic/384
>> @@ -57,10 +57,10 @@ chmod a+rwx $seqres.full	# arbitrary users will write here
>>  _require_scratch
>>  _scratch_mkfs >/dev/null 2>&1
>>  _scratch_enable_pquota
>> +_require_prjquota $SCRATCH_DEV
>>  
>>  _qmount_option "prjquota"
>>  _qmount
>> -_require_prjquota $SCRATCH_DEV
>>  
>>  report_quota()
>>  {
>> diff --git a/tests/generic/385 b/tests/generic/385
>> index 937131a9..56ce6eb0 100755
>> --- a/tests/generic/385
>> +++ b/tests/generic/385
>> @@ -56,9 +56,9 @@ quota_cmd="$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid"
>>  
>>  _scratch_mkfs >/dev/null 2>&1
>>  _scratch_enable_pquota
>> +_require_prjquota $SCRATCH_DEV
>>  _qmount_option "prjquota"
>>  _qmount
>> -_require_prjquota $SCRATCH_DEV
>>  
>>  #
>>  # Create the project root
>> diff --git a/tests/generic/386 b/tests/generic/386
>> index 462c5869..e4f7d23b 100755
>> --- a/tests/generic/386
>> +++ b/tests/generic/386
>> @@ -112,10 +112,10 @@ echo $proj_num:$proj_dir > "$my_projects"
>>  
>>  _scratch_mkfs					>> "$seqres.full" 2>&1
>>  _scratch_enable_pquota
>> +_require_prjquota $SCRATCH_DEV
>>  
>>  _qmount_option "prjquota"
>>  _qmount
>> -_require_prjquota $SCRATCH_DEV
>>  
>>  mkdir -p "${proj_dir}"
>>  
>> -- 
>> 2.18.0.rc1
>>
> .
>

Patch
diff mbox series

diff --git a/tests/generic/383 b/tests/generic/383
index 2c8c5923..cf5ac255 100755
--- a/tests/generic/383
+++ b/tests/generic/383
@@ -39,6 +39,7 @@  _require_xfs_quota_foreign
 
 _scratch_mkfs >/dev/null 2>&1
 _scratch_enable_pquota
+_require_prjquota $SCRATCH_DEV
 
 do_project_test()
 {
@@ -76,7 +77,6 @@  EOF
 # Test project
 _qmount_option "usrquota,prjquota"
 _qmount
-_require_prjquota $SCRATCH_DEV
 do_project_test
 
 # success, all done
diff --git a/tests/generic/384 b/tests/generic/384
index b7c940d7..2c0cd00b 100755
--- a/tests/generic/384
+++ b/tests/generic/384
@@ -57,10 +57,10 @@  chmod a+rwx $seqres.full	# arbitrary users will write here
 _require_scratch
 _scratch_mkfs >/dev/null 2>&1
 _scratch_enable_pquota
+_require_prjquota $SCRATCH_DEV
 
 _qmount_option "prjquota"
 _qmount
-_require_prjquota $SCRATCH_DEV
 
 report_quota()
 {
diff --git a/tests/generic/385 b/tests/generic/385
index 937131a9..56ce6eb0 100755
--- a/tests/generic/385
+++ b/tests/generic/385
@@ -56,9 +56,9 @@  quota_cmd="$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid"
 
 _scratch_mkfs >/dev/null 2>&1
 _scratch_enable_pquota
+_require_prjquota $SCRATCH_DEV
 _qmount_option "prjquota"
 _qmount
-_require_prjquota $SCRATCH_DEV
 
 #
 # Create the project root
diff --git a/tests/generic/386 b/tests/generic/386
index 462c5869..e4f7d23b 100755
--- a/tests/generic/386
+++ b/tests/generic/386
@@ -112,10 +112,10 @@  echo $proj_num:$proj_dir > "$my_projects"
 
 _scratch_mkfs					>> "$seqres.full" 2>&1
 _scratch_enable_pquota
+_require_prjquota $SCRATCH_DEV
 
 _qmount_option "prjquota"
 _qmount
-_require_prjquota $SCRATCH_DEV
 
 mkdir -p "${proj_dir}"