summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGeorge Wilson <[email protected]>2012-12-14 12:38:04 -0800
committerBrian Behlendorf <[email protected]>2013-01-08 10:35:42 -0800
commit3bc7e0fb0f3904eaf41e0b9768ebe2d042ae98aa (patch)
treea72896a0cabe59d930c2253078eca4877b5dbb27 /include
parent5ac0c30a94a0804080f0a89c9b7a31f8d4ab5708 (diff)
Illumos #3090 and #3102
3090 vdev_reopen() during reguid causes vdev to be treated as corrupt 3102 vdev_uberblock_load() and vdev_validate() may read the wrong label Reviewed by: Matthew Ahrens <[email protected]> Reviewed by: Christopher Siden <[email protected]> Reviewed by: Garrett D'Amore <[email protected]> Approved by: Eric Schrock <[email protected]> References: illumos/illumos-gate@dfbb943217bf8ab22a1a9d2e9dca01d4da95ee0b illumos changeset: 13777:b1e53580146d https://www.illumos.org/issues/3090 https://www.illumos.org/issues/3102 Ported-by: Brian Behlendorf <[email protected]> Closes #939
Diffstat (limited to 'include')
-rw-r--r--include/sys/fs/zfs.h1
-rw-r--r--include/sys/spa_impl.h1
-rw-r--r--include/sys/vdev.h2
3 files changed, 3 insertions, 1 deletions
diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h
index 61596f7d7..800eb7768 100644
--- a/include/sys/fs/zfs.h
+++ b/include/sys/fs/zfs.h
@@ -954,6 +954,7 @@ typedef enum history_internal_events {
LOG_DS_USER_HOLD,
LOG_DS_USER_RELEASE,
LOG_POOL_SPLIT,
+ LOG_POOL_GUID_CHANGE,
LOG_END
} history_internal_events_t;
diff --git a/include/sys/spa_impl.h b/include/sys/spa_impl.h
index 85a825d08..65edc97f5 100644
--- a/include/sys/spa_impl.h
+++ b/include/sys/spa_impl.h
@@ -141,6 +141,7 @@ struct spa {
vdev_t *spa_root_vdev; /* top-level vdev container */
uint64_t spa_config_guid; /* config pool guid */
uint64_t spa_load_guid; /* spa_load initialized guid */
+ uint64_t spa_last_synced_guid; /* last synced guid */
list_t spa_config_dirty_list; /* vdevs with dirty config */
list_t spa_state_dirty_list; /* vdevs with dirty state */
spa_aux_vdev_t spa_spares; /* hot spares */
diff --git a/include/sys/vdev.h b/include/sys/vdev.h
index 51eb855ee..8f297a917 100644
--- a/include/sys/vdev.h
+++ b/include/sys/vdev.h
@@ -141,7 +141,7 @@ extern nvlist_t *vdev_config_generate(spa_t *spa, vdev_t *vd,
struct uberblock;
extern uint64_t vdev_label_offset(uint64_t psize, int l, uint64_t offset);
extern int vdev_label_number(uint64_t psise, uint64_t offset);
-extern nvlist_t *vdev_label_read_config(vdev_t *vd, int label);
+extern nvlist_t *vdev_label_read_config(vdev_t *vd, uint64_t txg);
extern void vdev_uberblock_load(vdev_t *, struct uberblock *, nvlist_t **);
typedef enum {