Print this page
expandable RAID-Z

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/vdev_raidz.c
          +++ new/usr/src/uts/common/fs/zfs/vdev_raidz.c
↓ open down ↓ 1218 lines elided ↑ open up ↑
1219 1219  {
1220 1220          if (faulted > vd->vdev_nparity)
1221 1221                  vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN,
1222 1222                      VDEV_AUX_NO_REPLICAS);
1223 1223          else if (degraded + faulted != 0)
1224 1224                  vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE);
1225 1225          else
1226 1226                  vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE);
1227 1227  }
1228 1228  
     1229 +static uint8_t
     1230 +vdev_raidz_grid(vdev_t *vd)
     1231 +{
     1232 +        ASSERT(vd->vdev_nparity - 1 <= 1);
     1233 +        return (((vd->vdev_nparity - 1) << 6) | vd->vdev_children);
     1234 +}
     1235 +
1229 1236  vdev_ops_t vdev_raidz_ops = {
1230 1237          vdev_raidz_open,
1231 1238          vdev_raidz_close,
1232 1239          NULL,
1233 1240          vdev_raidz_asize,
1234 1241          vdev_raidz_io_start,
1235 1242          vdev_raidz_io_done,
1236 1243          vdev_raidz_state_change,
     1244 +        vdev_raidz_grid,
1237 1245          VDEV_TYPE_RAIDZ,        /* name of this vdev type */
1238 1246          B_FALSE                 /* not a leaf vdev */
1239 1247  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX