diff mbox

btrfs/104: remove ugly sleep

Message ID 20160414230409.GO2187@wotan.suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Mark Fasheh April 14, 2016, 11:04 p.m. UTC
Latest btrfsprogs can now do 'subvolume sync' to wait on snapshots to be
dropped. Replace the sleep call in btrfs/104 with this. We can also add this
test to the 'quick' group now.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
---
 tests/btrfs/104   | 8 +++-----
 tests/btrfs/group | 2 +-
 2 files changed, 4 insertions(+), 6 deletions(-)

Comments

Filipe Manana April 15, 2016, 11:04 a.m. UTC | #1
On Fri, Apr 15, 2016 at 12:04 AM, Mark Fasheh <mfasheh@suse.de> wrote:
> Latest btrfsprogs can now do 'subvolume sync' to wait on snapshots to be
> dropped. Replace the sleep call in btrfs/104 with this. We can also add this
> test to the 'quick' group now.
>
> Signed-off-by: Mark Fasheh <mfasheh@suse.de>
> ---
>  tests/btrfs/104   | 8 +++-----
>  tests/btrfs/group | 2 +-
>  2 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/tests/btrfs/104 b/tests/btrfs/104
> index 6afaa02..627e77b 100755
> --- a/tests/btrfs/104
> +++ b/tests/btrfs/104
> @@ -145,11 +145,9 @@ _scratch_cycle_mount
>  # referenced above.
>  _run_btrfs_util_prog subvolume delete $SCRATCH_MNT/snap1
>
> -# There is no way from userspace to force btrfs_drop_snapshot to run
> -# at a given time (even via mount/unmount). We must wait for it to
> -# start and complete. This is the shortest time on my tests systems I
> -# have found which always allows drop_snapshot to run to completion.
> -sleep 45
> +# Removing snapshots on btrfs is a delayed operation, so we must wait for
> +# btrfs_drop_snapshot to complete.
> +_run_btrfs_util_prog subvolume sync $SCRATCH_MNT

Looks good, except that this will cause a test failure when running
with older versions of btrfs-progs that don't have this command.

We should skip the test with such old versions (it's usually what we
do everywhere) or make it fallback to the sleep.
We have "_require_btrfs <command>" to check if btrfs-progs supports a
specific command, so we could extend it to check for a subcommand too
as an optional argument so we could call
"_require_btrfs subvolume sync" in the test.

>
>  _scratch_unmount
>
> diff --git a/tests/btrfs/group b/tests/btrfs/group
> index ef6c260..9403daa 100644
> --- a/tests/btrfs/group
> +++ b/tests/btrfs/group
> @@ -104,7 +104,7 @@
>  101 auto quick replace
>  102 auto quick metadata enospc
>  103 auto quick clone compress
> -104 auto qgroup
> +104 auto quick qgroup
>  105 auto quick send
>  106 auto quick clone compress
>  107 auto quick prealloc
> --
> 2.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark Fasheh April 15, 2016, 11:52 p.m. UTC | #2
On Fri, Apr 15, 2016 at 12:04:53PM +0100, Filipe Manana wrote:
> On Fri, Apr 15, 2016 at 12:04 AM, Mark Fasheh <mfasheh@suse.de> wrote:
> > diff --git a/tests/btrfs/104 b/tests/btrfs/104
> > index 6afaa02..627e77b 100755
> > --- a/tests/btrfs/104
> > +++ b/tests/btrfs/104
> > @@ -145,11 +145,9 @@ _scratch_cycle_mount
> >  # referenced above.
> >  _run_btrfs_util_prog subvolume delete $SCRATCH_MNT/snap1
> >
> > -# There is no way from userspace to force btrfs_drop_snapshot to run
> > -# at a given time (even via mount/unmount). We must wait for it to
> > -# start and complete. This is the shortest time on my tests systems I
> > -# have found which always allows drop_snapshot to run to completion.
> > -sleep 45
> > +# Removing snapshots on btrfs is a delayed operation, so we must wait for
> > +# btrfs_drop_snapshot to complete.
> > +_run_btrfs_util_prog subvolume sync $SCRATCH_MNT
> 
> Looks good, except that this will cause a test failure when running
> with older versions of btrfs-progs that don't have this command.

Right, also there was at least one version which had a broken subvol sync
(see commit d3be5b6).


> We should skip the test with such old versions (it's usually what we
> do everywhere) or make it fallback to the sleep.
> We have "_require_btrfs <command>" to check if btrfs-progs supports a
> specific command, so we could extend it to check for a subcommand too
> as an optional argument so we could call
> "_require_btrfs subvolume sync" in the test.

Hmm, so _require_btrfs() can do this by running --help on the subcommand and
checking the return value. I don't think there's a similar trick we can do
for 'btrfs subvol sync'. Anything other than a subvolume as an argument to
subvol sync returns 1.

I suppose we could try grepping the output for 'too few arguments' though.

Also, thanks for the review!
	--Mark

--
Mark Fasheh
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tests/btrfs/104 b/tests/btrfs/104
index 6afaa02..627e77b 100755
--- a/tests/btrfs/104
+++ b/tests/btrfs/104
@@ -145,11 +145,9 @@  _scratch_cycle_mount
 # referenced above.
 _run_btrfs_util_prog subvolume delete $SCRATCH_MNT/snap1
 
-# There is no way from userspace to force btrfs_drop_snapshot to run
-# at a given time (even via mount/unmount). We must wait for it to
-# start and complete. This is the shortest time on my tests systems I
-# have found which always allows drop_snapshot to run to completion.
-sleep 45
+# Removing snapshots on btrfs is a delayed operation, so we must wait for
+# btrfs_drop_snapshot to complete.
+_run_btrfs_util_prog subvolume sync $SCRATCH_MNT
 
 _scratch_unmount
 
diff --git a/tests/btrfs/group b/tests/btrfs/group
index ef6c260..9403daa 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -104,7 +104,7 @@ 
 101 auto quick replace
 102 auto quick metadata enospc
 103 auto quick clone compress
-104 auto qgroup
+104 auto quick qgroup
 105 auto quick send
 106 auto quick clone compress
 107 auto quick prealloc