diff options
author | cao <[email protected]> | 2016-08-23 10:12:41 +0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-08-30 15:35:54 -0700 |
commit | 8fe453b6718c089fdd248f45fd0adee26bd42b66 (patch) | |
tree | ef63103ed65913e1d5264fea1f72d4e81f7bfe82 | |
parent | 43cb1c1212be430f1a94307ac8be1737ca564e58 (diff) |
Update zfs_destroy_004.ksh script
Issues:
Under Linux, when executing zfs_destroy_004.ksh destroy $fs is an
error. The key issue here is that illumos kernel treats this case
differently than the Linux kernel. On illumos you can unmount and
destroy a filesystem which is busy and all consumers of it get EIO.
On Linux the expected behavior is to prevent the unmount and destroy.
Cause analysis:
When create $fs file system and mount file system to $mntp.
cd $mntp, linux isn't allow to destroy $fs in this mount contents.
No matter what destroy with parameters.
Solution:
So log_mustnot $ZFS destroy $fs is ok.
cd $olddir and destroy $fs.
Signed-off-by: caoxuewen [email protected]
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #5012
-rw-r--r-- | tests/runfiles/linux.run | 7 | ||||
-rwxr-xr-x | tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh | 12 |
2 files changed, 12 insertions, 7 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index a4a2686a1..5685ea21b 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -96,7 +96,6 @@ tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos', # DISABLED: # zfs_destroy_001_pos - busy mountpoint behavior -# zfs_destroy_004_pos - busy mountpoint behavior # zfs_destroy_005_neg - busy mountpoint behavior # zfs_destroy_008_pos - busy mountpoint behavior # zfs_destroy_009_pos - busy mountpoint behavior @@ -105,9 +104,9 @@ tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos', # zfs_destroy_012_pos - busy mountpoint behavior # zfs_destroy_013_neg - busy mountpoint behavior [tests/functional/cli_root/zfs_destroy] -tests = ['zfs_destroy_002_pos', 'zfs_destroy_003_pos', 'zfs_destroy_006_neg', - 'zfs_destroy_007_neg', 'zfs_destroy_014_pos', 'zfs_destroy_015_pos', - 'zfs_destroy_016_pos'] +tests = ['zfs_destroy_002_pos', 'zfs_destroy_003_pos', 'zfs_destroy_004_pos', + 'zfs_destroy_006_neg', 'zfs_destroy_007_neg', 'zfs_destroy_014_pos', + 'zfs_destroy_015_pos', 'zfs_destroy_016_pos'] # DISABLED: # zfs_get_004_pos - nested pools diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh index 6919bdf42..317e37869 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh @@ -110,9 +110,15 @@ for arg in "$fs1 $mntp1" "$clone $mntp2"; do cd $mntp log_mustnot $ZFS destroy $fs - log_must $ZFS destroy -f $fs - datasetexists $fs && \ - log_fail "'zfs destroy -f' fails to destroy busy filesystem." + if is_linux; then + log_mustnot $ZFS destroy -f $fs + datasetnonexists $fs && \ + log_fail "'zfs destroy -f' destroyed busy filesystem." + else + log_must $ZFS destroy -f $fs + datasetexists $fs && \ + log_fail "'zfs destroy -f' fail to destroy busy filesystem." + fi cd $olddir done |