Print this page
expandable RAID-Z


 450 static void
 451 vdev_mirror_state_change(vdev_t *vd, int faulted, int degraded)
 452 {
 453         if (faulted == vd->vdev_children)
 454                 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN,
 455                     VDEV_AUX_NO_REPLICAS);
 456         else if (degraded + faulted != 0)
 457                 vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE);
 458         else
 459                 vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE);
 460 }
 461 
 462 vdev_ops_t vdev_mirror_ops = {
 463         vdev_mirror_open,
 464         vdev_mirror_close,
 465         NULL,
 466         vdev_default_asize,
 467         vdev_mirror_io_start,
 468         vdev_mirror_io_done,
 469         vdev_mirror_state_change,

 470         VDEV_TYPE_MIRROR,       /* name of this vdev type */
 471         B_FALSE                 /* not a leaf vdev */
 472 };
 473 
 474 vdev_ops_t vdev_replacing_ops = {
 475         vdev_mirror_open,
 476         vdev_mirror_close,
 477         NULL,
 478         vdev_default_asize,
 479         vdev_mirror_io_start,
 480         vdev_mirror_io_done,
 481         vdev_mirror_state_change,

 482         VDEV_TYPE_REPLACING,    /* name of this vdev type */
 483         B_FALSE                 /* not a leaf vdev */
 484 };
 485 
 486 vdev_ops_t vdev_spare_ops = {
 487         vdev_mirror_open,
 488         vdev_mirror_close,
 489         NULL,
 490         vdev_default_asize,
 491         vdev_mirror_io_start,
 492         vdev_mirror_io_done,
 493         vdev_mirror_state_change,

 494         VDEV_TYPE_SPARE,        /* name of this vdev type */
 495         B_FALSE                 /* not a leaf vdev */
 496 };


 450 static void
 451 vdev_mirror_state_change(vdev_t *vd, int faulted, int degraded)
 452 {
 453         if (faulted == vd->vdev_children)
 454                 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN,
 455                     VDEV_AUX_NO_REPLICAS);
 456         else if (degraded + faulted != 0)
 457                 vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE);
 458         else
 459                 vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE);
 460 }
 461 
 462 vdev_ops_t vdev_mirror_ops = {
 463         vdev_mirror_open,
 464         vdev_mirror_close,
 465         NULL,
 466         vdev_default_asize,
 467         vdev_mirror_io_start,
 468         vdev_mirror_io_done,
 469         vdev_mirror_state_change,
 470         NULL,
 471         VDEV_TYPE_MIRROR,       /* name of this vdev type */
 472         B_FALSE                 /* not a leaf vdev */
 473 };
 474 
 475 vdev_ops_t vdev_replacing_ops = {
 476         vdev_mirror_open,
 477         vdev_mirror_close,
 478         NULL,
 479         vdev_default_asize,
 480         vdev_mirror_io_start,
 481         vdev_mirror_io_done,
 482         vdev_mirror_state_change,
 483         NULL,
 484         VDEV_TYPE_REPLACING,    /* name of this vdev type */
 485         B_FALSE                 /* not a leaf vdev */
 486 };
 487 
 488 vdev_ops_t vdev_spare_ops = {
 489         vdev_mirror_open,
 490         vdev_mirror_close,
 491         NULL,
 492         vdev_default_asize,
 493         vdev_mirror_io_start,
 494         vdev_mirror_io_done,
 495         vdev_mirror_state_change,
 496         NULL,
 497         VDEV_TYPE_SPARE,        /* name of this vdev type */
 498         B_FALSE                 /* not a leaf vdev */
 499 };