Print this page
2619 asynchronous destruction of ZFS file systems
2747 SPA versioning with zfs feature flags
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <gwilson@delphix.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>
Approved by: Dan McDonald <danmcd@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libzpool/common/kernel.c
          +++ new/usr/src/lib/libzpool/common/kernel.c
↓ open down ↓ 418 lines elided ↑ open up ↑
 419  419  {
 420  420          ssize_t iolen, split;
 421  421  
 422  422          if (uio == UIO_READ) {
 423  423                  iolen = pread64(vp->v_fd, addr, len, offset);
 424  424          } else {
 425  425                  /*
 426  426                   * To simulate partial disk writes, we split writes into two
 427  427                   * system calls so that the process can be killed in between.
 428  428                   */
 429      -                split = (len > 0 ? rand() % len : 0);
      429 +                int sectors = len >> SPA_MINBLOCKSHIFT;
      430 +                split = (sectors > 0 ? rand() % sectors : 0) <<
      431 +                    SPA_MINBLOCKSHIFT;
 430  432                  iolen = pwrite64(vp->v_fd, addr, split, offset);
 431  433                  iolen += pwrite64(vp->v_fd, (char *)addr + split,
 432  434                      len - split, offset + split);
 433  435          }
 434  436  
 435  437          if (iolen == -1)
 436  438                  return (errno);
 437  439          if (residp)
 438  440                  *residp = len - iolen;
 439  441          else if (iolen != len)
↓ open down ↓ 544 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX