Print this page
OS-4191 blown assert on lx zone with delegated dataset

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/dev/sdev_zvolops.c
          +++ new/usr/src/uts/common/fs/dev/sdev_zvolops.c
↓ open down ↓ 464 lines elided ↑ open up ↑
 465  465                  devzvol_zclist = NULL;
 466  466                  devzvol_zclist_size = 0;
 467  467                  goto out;
 468  468          }
 469  469          mutex_exit(&devzvol_mtx);
 470  470          while ((elem = nvlist_next_nvpair(nv, elem)) != NULL) {
 471  471                  struct vnode *vp;
 472  472                  ASSERT(dvp->v_count > 0);
 473  473                  rc = VOP_LOOKUP(dvp, nvpair_name(elem), &vp, NULL, 0,
 474  474                      NULL, kcred, NULL, 0, NULL);
 475      -                /* should either work, or not be visible from a zone */
 476      -                ASSERT(rc == 0 || rc == ENOENT);
      475 +                /*
      476 +                 * should either work or we should get an error if this should
      477 +                 * not be visible from the zone, or disallowed in the zone
      478 +                 */
 477  479                  if (rc == 0)
 478  480                          VN_RELE(vp);
 479  481                  pools++;
 480  482          }
 481  483          nvlist_free(nv);
 482  484          mutex_enter(&devzvol_mtx);
 483  485          if (devzvol_isopen && pools == 0) {
 484  486                  /* clean up so zfs can be unloaded */
 485  487                  devzvol_close_zfs();
 486  488                  devzvol_isopen = B_FALSE;
↓ open down ↓ 462 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX