freebsd-dev/module/zfs
Olaf Faaland 9d3f7b8791 Write label 2,3 uberblocks when vdev expands
When vdev_psize increases, the location of labels 2 and 3 changes
because their location is relative to the end of the device.

The configs for labels 2 and 3 are written during the next spa_sync()
because the vdev is added to the dirty config list.  However, the
uberblock rings are not re-written in their new location, leaving the
device vulnerable to the beginning of the device being overwritten or
damaged.

This patch copies the uberblock ring from label 0 to labels 2 and 3,
in their new locations, at the next sync after vdev_psize increases.

Also, add a test zpool_expand_004_pos.ksh to confirm the uberblocks
are copied.

Reviewed-by: BearBabyLiu <liu.huang@zte.com.cn>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Closes #5108
2017-05-02 13:55:24 -07:00
..
abd.c minor improvement to abd_free_pages() 2017-05-02 10:06:18 -07:00
arc.c Allow scaling of arc in proportion to pagecache 2017-05-02 15:50:49 -04:00
blkptr.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
bplist.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00
bpobj.c panic in bpobj_space(): null pointer dereference 2017-02-09 10:19:12 -08:00
bptree.c OpenZFS 7082 - bptree_iterate() passes wrong args to zfs_dbgmsg() 2017-01-17 14:49:24 -08:00
bqueue.c Fix coverity defects: CID 147565-147567 2016-10-07 13:19:43 -07:00
dbuf_stats.c OpenZFS 6950 - ARC should cache compressed data 2016-09-13 09:58:33 -07:00
dbuf.c OpenZFS 7252 - compressed zfs send / receive 2017-04-26 12:31:43 -07:00
ddt_zap.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00
ddt.c Cache ddt_get_dedup_dspace() value if there was no ddt changes 2016-12-02 16:59:35 -07:00
dmu_diff.c OpenZFS 6950 - ARC should cache compressed data 2016-09-13 09:58:33 -07:00
dmu_object.c Clean up by-dnode code in dmu_tx.c 2017-02-24 13:34:26 -08:00
dmu_objset.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
dmu_send.c OpenZFS 7252 - compressed zfs send / receive 2017-04-26 12:31:43 -07:00
dmu_traverse.c Add TASKQID_INVALID 2016-11-02 12:14:45 -07:00
dmu_tx.c OpenZFS 7801 - add more by-dnode routines (lint) 2017-03-20 12:33:17 -07:00
dmu_zfetch.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
dmu.c OpenZFS 7252 - compressed zfs send / receive 2017-04-26 12:31:43 -07:00
dnode_sync.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
dnode.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
dsl_bookmark.c OpenZFS 1300 - filename normalization doesn't work for removes 2017-02-02 14:13:41 -08:00
dsl_dataset.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
dsl_deadlist.c panic in bpobj_space(): null pointer dereference 2017-02-09 10:19:12 -08:00
dsl_deleg.c Performance optimization of AVL tree comparator functions 2016-08-31 14:35:34 -07:00
dsl_destroy.c OpenZFS 7254 - ztest failed assertion in ztest_dataset_dirobj_verify: dirobjs + 1 == usedobjs 2017-01-27 11:43:42 -08:00
dsl_dir.c OpenZFS 7793 - ztest fails assertion in dmu_tx_willuse_space 2017-03-07 09:51:59 -08:00
dsl_pool.c OpenZFS 8026 - retire zfs_throttle_delay and zfs_throttle_resolution 2017-04-14 11:11:20 -07:00
dsl_prop.c Fix dsl_props_set_sync_impl to work with nested nvlist 2016-12-20 18:46:59 -08:00
dsl_scan.c OpenZFS 7254 - ztest failed assertion in ztest_dataset_dirobj_verify: dirobjs + 1 == usedobjs 2017-01-27 11:43:42 -08:00
dsl_synctask.c Illumos 4951 - ZFS administrative commands should use reserved space 2015-05-04 09:41:10 -07:00
dsl_userhold.c OpenZFS 6314 - buffer overflow in dsl_dataset_name 2016-06-28 13:47:03 -07:00
edonr_zfs.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
fm.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
gzip.c GZIP compression offloading with QAT accelerator 2017-03-22 17:58:47 -07:00
lz4.c OpenZFS 7252 - compressed zfs send / receive 2017-04-26 12:31:43 -07:00
lzjb.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00
Makefile.in GZIP compression offloading with QAT accelerator 2017-03-22 17:58:47 -07:00
metaslab.c OpenZFS 8023 - Panic destroying a metaslab deferred range tree 2017-04-09 16:12:35 -07:00
multilist.c OpenZFS 7968 - multi-threaded spa_sync() 2017-03-20 18:36:00 -07:00
pathname.c Add pn_alloc()/pn_free() functions 2016-04-21 09:49:25 -07:00
policy.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
qat_compress.c Change U16 to U32 due to atomic_inc_32_nv 2017-04-25 17:41:58 -07:00
qat_compress.h GZIP compression offloading with QAT accelerator 2017-03-22 17:58:47 -07:00
range_tree.c Performance optimization of AVL tree comparator functions 2016-08-31 14:35:34 -07:00
refcount.c Linux 4.11 compat: avoid refcount_t name conflict 2017-02-28 16:10:18 -08:00
rrwlock.c Fix spelling 2017-01-03 11:31:18 -06:00
sa.c OpenZFS 8061 - sa_find_idx_tab can be declared more type-safely 2017-04-14 11:11:28 -07:00
sha256.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
skein_zfs.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
spa_boot.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
spa_config.c Fix spelling 2017-01-03 11:31:18 -06:00
spa_errlog.c Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t 2014-08-06 14:48:41 -07:00
spa_history.c Fix indefinite article 2016-08-11 11:23:49 -07:00
spa_misc.c Fix size inflation in spa_get_worst_case_asize() 2017-04-10 15:28:21 -07:00
spa_stats.c Fix spelling 2017-01-03 11:31:18 -06:00
spa.c OpenZFS 5120 - zfs should allow large block/gzip/raidz boot pool (loader project) 2017-04-13 09:40:00 -07:00
space_map.c OpenZFS 8023 - Panic destroying a metaslab deferred range tree 2017-04-09 16:12:35 -07:00
space_reftree.c OpenZFS 6328 - Fix cstyle errors in zfs codebase 2017-01-12 09:42:11 -08:00
trace.c OpenZFS 6531 - Provide mechanism to artificially limit disk performance 2016-05-26 10:11:51 -07:00
txg.c Refactor txg history kstat 2016-12-02 16:57:49 -07:00
uberblock.c Illumos 5347 - idle pool may run itself out of space 2015-07-14 10:35:21 -07:00
unique.c Performance optimization of AVL tree comparator functions 2016-08-31 14:35:34 -07:00
vdev_cache.c Fix wrong offset args in vdev_cache_write 2017-03-28 11:06:22 -07:00
vdev_disk.c OpenZFS 7448 - ZFS doesn't notice when disk vdevs have no write cache 2017-02-04 09:23:50 -08:00
vdev_file.c Use a dedicated taskq for vdev_file 2016-12-21 10:47:15 -08:00
vdev_label.c Write label 2,3 uberblocks when vdev expands 2017-05-02 13:55:24 -07:00
vdev_mirror.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
vdev_missing.c Illumos #5244 - zio pipeline callers should explicitly invoke next stage 2015-04-30 15:07:47 -07:00
vdev_queue.c Increase zfs_vdev_async_write_min_active to 2 2017-04-14 14:03:44 -07:00
vdev_raidz_math_aarch64_neon_common.h ABD raidz NEON support 2016-11-29 14:34:33 -08:00
vdev_raidz_math_aarch64_neon.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
vdev_raidz_math_aarch64_neonx2.c ABD raidz NEON support 2016-11-29 14:34:33 -08:00
vdev_raidz_math_avx2.c ABD raidz avx512f support 2016-11-29 14:34:33 -08:00
vdev_raidz_math_avx512bw.c ABD: Adapt avx512bw raidz assembly 2016-12-15 17:31:33 -08:00
vdev_raidz_math_avx512f.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
vdev_raidz_math_impl.h codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
vdev_raidz_math_scalar.c ABD Vectorized raidz 2016-11-29 14:34:33 -08:00
vdev_raidz_math_sse2.c ABD raidz avx512f support 2016-11-29 14:34:33 -08:00
vdev_raidz_math_ssse3.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
vdev_raidz_math.c codebase style improvements for OpenZFS 6459 port 2017-01-22 13:25:40 -08:00
vdev_raidz.c Remove dependency on linear ABD 2017-03-29 12:24:51 -07:00
vdev_root.c Illumos #3598 2013-10-31 14:58:04 -07:00
vdev.c Write label 2,3 uberblocks when vdev expands 2017-05-02 13:55:24 -07:00
zap_leaf.c OpenZFS 1300 - filename normalization doesn't work for removes 2017-02-02 14:13:41 -08:00
zap_micro.c OpenZFS 7793 - ztest fails assertion in dmu_tx_willuse_space 2017-03-07 09:51:59 -08:00
zap.c OpenZFS 7793 - ztest fails assertion in dmu_tx_willuse_space 2017-03-07 09:51:59 -08:00
zfeature_common.c OpenZFS 2932 - support crash dumps to raidz, etc. pools 2017-04-10 10:24:17 -07:00
zfeature.c OpenZFS 6328 - Fix cstyle errors in zfs codebase 2017-01-12 09:42:11 -08:00
zfs_acl.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zfs_byteswap.c Add linux kernel module support 2010-08-31 13:41:58 -07:00
zfs_ctldir.c Restructure mount option handling 2017-03-10 09:51:41 -08:00
zfs_debug.c OpenZFS 7503 - zfs-test should tail ::zfs_dbgmsg on test failure 2017-04-12 13:36:48 -07:00
zfs_dir.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zfs_fm.c Skip rate limiting events in zfs_ereport_post 2017-04-11 18:37:45 -07:00
zfs_fuid.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zfs_ioctl.c OpenZFS 6101 - attempt to lzc_create() a filesystem under a volume results in a panic 2017-04-14 11:11:28 -07:00
zfs_log.c OpenZFS 6328 - Fix cstyle errors in zfs codebase 2017-01-12 09:42:11 -08:00
zfs_onexit.c zfsdev_getminor() should check for invalid file handles 2015-06-22 17:02:13 -07:00
zfs_replay.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zfs_rlock.c Fix spelling 2017-01-03 11:31:18 -06:00
zfs_sa.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zfs_vfsops.c Linux 4.12 compat: super_setup_bdi_name() 2017-05-02 09:46:18 -07:00
zfs_vnops.c Fix lseek result when dnode is dirty 2017-04-24 09:38:31 -07:00
zfs_znode.c Retry zfs_znode_alloc() in zfs_mknode() 2017-03-23 18:26:50 -07:00
zil.c OpenZFS 3821 - Race in rollback, zil close, and zil flush 2017-03-23 18:20:58 -07:00
zio_checksum.c Remove dependency on linear ABD 2017-03-29 12:24:51 -07:00
zio_compress.c DLPX-44812 integrate EP-220 large memory scalability 2016-11-29 14:34:27 -08:00
zio_inject.c Compile zio.h and zio_impl.h mutual include 2016-12-01 16:36:25 -07:00
zio.c Guarantee PAGESIZE alignment for large zio buffers 2017-05-02 10:04:30 -07:00
zle.c Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
zpl_ctldir.c Linux 4.11 compat: iops.getattr and friends 2017-03-20 17:51:16 -07:00
zpl_export.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
zpl_file.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zpl_inode.c Linux 4.11 compat: iops.getattr and friends 2017-03-20 17:51:16 -07:00
zpl_super.c Restructure mount option handling 2017-03-10 09:51:41 -08:00
zpl_xattr.c Rename zfs_sb_t -> zfsvfs_t 2017-03-10 09:51:33 -08:00
zrlock.c OpenZFS 3746 - ZRLs are racy 2017-01-23 10:35:58 -08:00
zvol.c Reinstate zvol_taskq to fix aio on zvol 2017-04-26 13:54:40 -07:00