622
623 vp = exip->exi_vp;
624 VN_HOLD(vp);
625 exportdir = 1;
626
627 for (;;) {
628
629 bzero(&fid, sizeof (fid));
630 fid.fid_len = MAXFIDSZ;
631 error = vop_fid_pseudo(vp, &fid);
632 if (error)
633 break;
634
635 if (! exportdir) {
636 /*
637 * Check if this exportroot is a VROOT dir. If so,
638 * then attach the pseudonodes. If not, then
639 * continue .. traversal until we hit a VROOT
640 * export (pseudo or real).
641 */
642 exi = checkexport4(&vp->v_vfsp->vfs_fsid, &fid, vp);
643 if (exi != NULL && vp->v_flag & VROOT) {
644 /*
645 * Found an export info
646 *
647 * Extend the list of visible
648 * directories whether it's a pseudo
649 * or a real export.
650 */
651 more_visible(exi, tree_head);
652 break; /* and climb no further */
653 }
654 }
655
656 /*
657 * If at the root of the filesystem, need
658 * to traverse across the mountpoint
659 * and continue the climb on the mounted-on
660 * filesystem.
661 */
662 if (vp->v_flag & VROOT) {
|
622
623 vp = exip->exi_vp;
624 VN_HOLD(vp);
625 exportdir = 1;
626
627 for (;;) {
628
629 bzero(&fid, sizeof (fid));
630 fid.fid_len = MAXFIDSZ;
631 error = vop_fid_pseudo(vp, &fid);
632 if (error)
633 break;
634
635 if (! exportdir) {
636 /*
637 * Check if this exportroot is a VROOT dir. If so,
638 * then attach the pseudonodes. If not, then
639 * continue .. traversal until we hit a VROOT
640 * export (pseudo or real).
641 */
642 exi = checkexport_nohold(&vp->v_vfsp->vfs_fsid, &fid,
643 vp);
644 if (exi != NULL && vp->v_flag & VROOT) {
645 /*
646 * Found an export info
647 *
648 * Extend the list of visible
649 * directories whether it's a pseudo
650 * or a real export.
651 */
652 more_visible(exi, tree_head);
653 break; /* and climb no further */
654 }
655 }
656
657 /*
658 * If at the root of the filesystem, need
659 * to traverse across the mountpoint
660 * and continue the climb on the mounted-on
661 * filesystem.
662 */
663 if (vp->v_flag & VROOT) {
|