]> granicus.if.org Git - zfs/commitdiff
Merge commit 'refs/top-bases/gcc-c90' into gcc-c90
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 18 Aug 2009 18:55:36 +0000 (11:55 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 18 Aug 2009 18:55:36 +0000 (11:55 -0700)
Conflicts:

module/zfs/spa_misc.c
module/zfs/vdev_label.c

14 files changed:
1  2 
cmd/zdb/zdb.c
cmd/zfs/zfs_main.c
cmd/ztest/ztest.c
module/zfs/dmu_objset.c
module/zfs/dsl_dataset.c
module/zfs/dsl_dir.c
module/zfs/dsl_scrub.c
module/zfs/spa.c
module/zfs/spa_misc.c
module/zfs/vdev.c
module/zfs/vdev_label.c
module/zfs/vdev_mirror.c
module/zfs/vdev_queue.c
module/zfs/vdev_raidz.c

diff --cc cmd/zdb/zdb.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 33b4ad8db48f30608cb40d89728f616b576a3eef,d7ed23e6fa552e1dabec40dffa3c478380ce9638..705dda4df6e653a1937bef6b15417b1c852854a1
@@@ -1583,12 -1574,15 +1583,15 @@@ spa_load(spa_t *spa, nvlist_t *config, 
                /*
                 * If the config cache is stale, or we have uninitialized
                 * metaslabs (see spa_vdev_add()), then update the config.
+                *
+                * If spa_load_verbatim is true, trust the current
+                * in-core spa_config and update the disk labels.
                 */
                if (config_cache_txg != spa->spa_config_txg ||
-                   state == SPA_LOAD_IMPORT)
+                   state == SPA_LOAD_IMPORT || spa->spa_load_verbatim)
                        need_update = B_TRUE;
  
 -              for (int c = 0; c < rvd->vdev_children; c++)
 +              for (c = 0; c < rvd->vdev_children; c++)
                        if (rvd->vdev_child[c]->vdev_ms_array == 0)
                                need_update = B_TRUE;
  
index ec0c8cc8fa41a0c3b5580dbcd7dcee0d389ac575,8150ac937e962292962725cd417a568619fdefad..88ae172b45304256ff3fa104a430c890871d0ff8
@@@ -316,10 -310,12 +316,13 @@@ spa_config_tryenter(spa_t *spa, int loc
  void
  spa_config_enter(spa_t *spa, int locks, void *tag, krw_t rw)
  {
+       int wlocks_held = 0;
 +      int i;
  
 -      for (int i = 0; i < SCL_LOCKS; i++) {
 +      for (i = 0; i < SCL_LOCKS; i++) {
                spa_config_lock_t *scl = &spa->spa_config_lock[i];
+               if (scl->scl_writer == curthread)
+                       wlocks_held |= (1 << i);
                if (!(locks & (1 << i)))
                        continue;
                mutex_enter(&scl->scl_lock);
index 5a3aabbad41faceadc78120d8574e1735fe20e9f,bb5024f985f566e7ab12f1dba70ab1655bc16d26..92b995894056712d295debb6f235b0876704d6e1
@@@ -1013,10 -1034,9 +1043,10 @@@ vdev_open(vdev_t *vd
        uint64_t osize = 0;
        uint64_t asize, psize;
        uint64_t ashift = 0;
 +      int c;
  
-       ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL);
+       ASSERT(vd->vdev_open_thread == curthread ||
+           spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL);
        ASSERT(vd->vdev_state == VDEV_STATE_CLOSED ||
            vd->vdev_state == VDEV_STATE_CANT_OPEN ||
            vd->vdev_state == VDEV_STATE_OFFLINE);
index b858edef18d17636a158125e686d2952fba173f6,06cb720128b6d0cc7b1dd75c891dabacc9601ea4..d280367cd541da43fae02538eb6a86a071ee6420
@@@ -507,8 -508,6 +509,8 @@@ vdev_label_init(vdev_t *vd, uint64_t cr
        int error;
        uint64_t spare_guid, l2cache_guid;
        int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL;
-       int c, l, n;
++      int c, l;
 +      vdev_t *pvd;
  
        ASSERT(spa_config_held(spa, SCL_ALL, RW_WRITER) == SCL_ALL);
  
Simple merge
Simple merge
Simple merge