]> granicus.if.org Git - zfs/commitdiff
Merge commit 'refs/top-bases/gcc-cast' into gcc-cast
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 18 Feb 2009 21:12:35 +0000 (13:12 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 18 Feb 2009 21:12:35 +0000 (13:12 -0800)
1  2 
cmd/zfs/zfs_main.c
cmd/zpool/zpool_main.c
lib/libzfs/libzfs_pool.c
lib/libzfs/libzfs_sendrecv.c
lib/libzfs/libzfs_util.c
module/zfs/zfs_ioctl.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 500a2fb5f527c598fd69436a1b44291cc77ab8dc,d032648b54ebdb1850b4cb3cc5e4a7dc53aa12a4..aa7ffb59de25e0a6e1d8122bfaff27f845a574fd
@@@ -1665,12 -1695,22 +1695,22 @@@ zfs_ioc_pool_get_props(zfs_cmd_t *zc
        int error;
        nvlist_t *nvp = NULL;
  
-       if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0)
-               return (error);
-       error = spa_prop_get(spa, &nvp);
+       if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) {
+               /*
+                * If the pool is faulted, there may be properties we can still
+                * get (such as altroot and cachefile), so attempt to get them
+                * anyway.
+                */
+               mutex_enter(&spa_namespace_lock);
+               if ((spa = spa_lookup(zc->zc_name)) != NULL)
+                       error = spa_prop_get(spa, &nvp);
+               mutex_exit(&spa_namespace_lock);
+       } else {
+               error = spa_prop_get(spa, &nvp);
+               spa_close(spa, FTAG);
+       }
  
 -      if (error == 0 && zc->zc_nvlist_dst != NULL)
 +      if (error == 0 && zc->zc_nvlist_dst != 0)
                error = put_nvlist(zc, nvp);
        else
                error = EFAULT;