Print this page
10592 misc. metaslab and vdev related ZoL bug fixes
Portions contributed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed by: Giuseppe Di Natale <guss80@gmail.com>
Reviewed by: George Melikov <mail@gmelikov.ru>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Tony Hutter <hutter2@llnl.gov>
Reviewed by: Kody Kantor <kody.kantor@joyent.com>
Approved by: Dan McDonald <danmcd@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/vdev_initialize.c
          +++ new/usr/src/uts/common/fs/zfs/vdev_initialize.c
↓ open down ↓ 434 lines elided ↑ open up ↑
 435  435          ASSERT(vd->vdev_leaf_zap != 0);
 436  436  
 437  437          vd->vdev_initialize_bytes_est = 0;
 438  438          vd->vdev_initialize_bytes_done = 0;
 439  439  
 440  440          for (uint64_t i = 0; i < vd->vdev_top->vdev_ms_count; i++) {
 441  441                  metaslab_t *msp = vd->vdev_top->vdev_ms[i];
 442  442                  mutex_enter(&msp->ms_lock);
 443  443  
 444  444                  uint64_t ms_free = msp->ms_size -
 445      -                    space_map_allocated(msp->ms_sm);
      445 +                    metaslab_allocated_space(msp);
 446  446  
 447  447                  if (vd->vdev_top->vdev_ops == &vdev_raidz_ops)
 448  448                          ms_free /= vd->vdev_top->vdev_children;
 449  449  
 450  450                  /*
 451  451                   * Convert the metaslab range to a physical range
 452  452                   * on our vdev. We use this to determine if we are
 453  453                   * in the middle of this metaslab range.
 454  454                   */
 455  455                  range_seg_t logical_rs, physical_rs;
↓ open down ↓ 326 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX