Print this page
expandable RAID-Z

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/metaslab.c
          +++ new/usr/src/uts/common/fs/zfs/metaslab.c
↓ open down ↓ 835 lines elided ↑ open up ↑
 836  836                                      (int64_t)mg->mg_aliquot) / (1024 * 4);
 837  837                          }
 838  838  
 839  839                          if (atomic_add_64_nv(&mc->mc_allocated, asize) >=
 840  840                              mg->mg_aliquot + mg->mg_bias) {
 841  841                                  mc->mc_rotor = mg->mg_next;
 842  842                                  mc->mc_allocated = 0;
 843  843                          }
 844  844  
 845  845                          DVA_SET_VDEV(&dva[d], vd->vdev_id);
 846      -                        DVA_SET_OFFSET(&dva[d], offset);
 847      -                        DVA_SET_GANG(&dva[d], 0);
      846 +                        if (vd->vdev_ops->vdev_op_grid != NULL)
      847 +                                DVA_SET_GRID(&dva[d],
      848 +                                    vd->vdev_ops->vdev_op_grid(vd);
 848  849                          DVA_SET_ASIZE(&dva[d], asize);
      850 +                        DVA_SET_GANG(&dva[d], 0);
      851 +                        DVA_SET_OFFSET(&dva[d], offset);
 849  852  
 850  853                          return (0);
 851  854                  }
 852  855  next:
 853  856                  mc->mc_rotor = mg->mg_next;
 854  857                  mc->mc_allocated = 0;
 855  858          } while ((mg = mg->mg_next) != rotor);
 856  859  
 857  860          if (!all_zero) {
 858  861                  dshift++;
↓ open down ↓ 195 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX