diff options
author | Brian Behlendorf <[email protected]> | 2017-05-11 14:27:57 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2017-05-11 14:27:57 -0700 |
commit | 8c54ddd33af92e5defc587a10914493ca85ad60c (patch) | |
tree | 8ed3636766e2774ed49d656699a12315ea4215d8 /cmd | |
parent | 4747a7d3d48ee307176dbd4a70c3be42b9f10dc0 (diff) |
Enable additional test cases
Enable additional test cases, in most cases this required a few
minor modifications to the test scripts. In a few cases a real
bug was uncovered and fixed. And in a handful of cases where pools
are layered on pools the test case will be skipped until this is
supported. Details below for each test case.
* zpool_add_004_pos - Skip test on Linux until adding zvols to pools
is fully supported and deadlock free.
* zpool_add_005_pos.ksh - Skip dumpadm portion of the test which isn't
relevant for Linux. The find_vfstab_dev, find_mnttab_dev, and
save_dump_dev functions were updated accordingly for Linux. Add
O_EXCL to the in-use check to prevent the -f (force) option from
working for mounted filesystems and improve the resulting error.
* zpool_add_006_pos - Update test case such that it doesn't depend
on nested pools. Switch to truncate from mkfile to reduce space
requirements and speed up the test case.
* zpool_clear_001_pos - Speed up test case by filling filesystem to
25% capacity.
* zpool_create_002_pos, zpool_create_004_pos - Use sparse files for
file vdevs in order to avoid increasing the partition size.
* zpool_create_006_pos - 6ba1ce9 allows raidz+mirror configs with
similar redundancy. Updating the valid_args and forced_args cases.
* zpool_create_008_pos - Disable overlapping partition portion.
* zpool_create_011_neg - Fix to correctly create the extra partition.
Modified zpool_vdev.c to use fstat64_blk() wrapper which includes
the st_size even for block devices.
* zpool_create_012_neg - Updated to properly find swap devices.
* zpool_create_014_neg, zpool_create_015_neg - Updated to use
swap_setup() and swap_cleanup() wrappers which do the right thing
on Linux and Illumos. Removed '-n' option which succeeds under
Linux due to differences in the in-use checks.
* zpool_create_016_pos.ksh - Skipped test case isn't useful.
* zpool_create_020_pos - Added missing / to cleanup() function.
Remove cache file prior to test to ensure a clean environment
and avoid false positives.
* zpool_destroy_001_pos - Removed test case which creates a pool on
a zvol. This is more likely to deadlock under Linux and has never
been completely supported on any platform.
* zpool_destroy_002_pos - 'zpool destroy -f' is unsupported on Linux.
Mount point must not be busy in order to unmount them.
* zfs_destroy_001_pos - Handle EBUSY error which can occur with
volumes when racing with udev.
* zpool_expand_001_pos, zpool_expand_003_neg - Skip test on Linux
until adding zvols to pools is fully supported and deadlock free.
The test could be modified to use loop-back devices but it would
be preferable to use the test case as is for improved coverage.
* zpool_export_004_pos - Updated test case to such that it doesn't
depend on nested pools. Normal file vdev under /var/tmp are fine.
* zpool_import_all_001_pos - Updated to skip partition 1, which is
known as slice 2, on Illumos. This prevents overwriting the
default TESTPOOL which was causing the failure.
* zpool_import_002_pos, zpool_import_012_pos - No changes needed.
* zpool_remove_003_pos - No changes needed
* zpool_upgrade_002_pos, zpool_upgrade_004_pos - Root cause addressed
by upstream OpenZFS commit 3b7f360.
* zpool_upgrade_007_pos - Disabled in test case due to known failure.
Opened issue https://github.com/zfsonlinux/zfs/issues/6112
* zvol_misc_002_pos - Updated to to use ext2.
* zvol_misc_001_neg, zvol_misc_003_neg, zvol_misc_004_pos,
zvol_misc_005_neg, zvol_misc_006_pos - Moved to skip list, these
test case could be updated to use Linux's crash dump facility.
* zvol_swap_* - Updated to use swap_setup/swap_cleanup helpers.
File creation switched from /tmp to /var/tmp. Enabled minimal
useful tests for Linux, skip test cases which aren't applicable.
Reviewed-by: Giuseppe Di Natale <[email protected]>
Reviewed-by: loli10K <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #3484
Issue #5634
Issue #2437
Issue #5202
Issue #4034
Closes #6095
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/zpool/zpool_vdev.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/cmd/zpool/zpool_vdev.c b/cmd/zpool/zpool_vdev.c index d3c281704..74ba4455b 100644 --- a/cmd/zpool/zpool_vdev.c +++ b/cmd/zpool/zpool_vdev.c @@ -364,13 +364,6 @@ check_file(const char *file, boolean_t force, boolean_t isspare) return (ret); } -static void -check_error(int err) -{ - (void) fprintf(stderr, gettext("warning: device in use checking " - "failed: %s\n"), strerror(err)); -} - static int check_slice(const char *path, blkid_cache cache, int force, boolean_t isspare) { @@ -428,8 +421,10 @@ check_disk(const char *path, blkid_cache cache, int force, if (!iswholedisk) return (check_slice(path, cache, force, isspare)); - if ((fd = open(path, O_RDONLY|O_DIRECT)) < 0) { - check_error(errno); + if ((fd = open(path, O_RDONLY|O_DIRECT|O_EXCL)) < 0) { + char *value = blkid_get_tag_value(cache, "TYPE", path); + (void) fprintf(stderr, gettext("%s is in use and contains " + "a %s filesystem.\n"), path, value ? value : "unknown"); return (-1); } @@ -496,7 +491,8 @@ check_device(const char *path, boolean_t force, error = blkid_get_cache(&cache, NULL); if (error != 0) { - check_error(error); + (void) fprintf(stderr, gettext("unable to access the blkid " + "cache.\n")); return (-1); } @@ -919,7 +915,7 @@ get_replication(nvlist_t *nvroot, boolean_t fatal) * this device altogether. */ if ((fd = open(path, O_RDONLY)) >= 0) { - err = fstat64(fd, &statbuf); + err = fstat64_blk(fd, &statbuf); (void) close(fd); } else { err = stat64(path, &statbuf); |