448 struct vnode *rvp;
449
450 vp = VTONM(vp)->nm_filevp;
451 if (VOP_REALVP(vp, &rvp, ct) == 0)
452 vp = rvp;
453 *vpp = vp;
454 return (0);
455 }
456
457 static int
458 nm_poll(vnode_t *vp, short events, int anyyet, short *reventsp,
459 pollhead_t **phpp, caller_context_t *ct)
460 {
461 return (VOP_POLL(VTONM(vp)->nm_filevp, events, anyyet, reventsp,
462 phpp, ct));
463 }
464
465 struct vnodeops *nm_vnodeops;
466
467 const fs_operation_def_t nm_vnodeops_template[] = {
468 VOPNAME_OPEN, { .vop_open = nm_open },
469 VOPNAME_CLOSE, { .vop_close = nm_close },
470 VOPNAME_READ, { .vop_read = nm_read },
471 VOPNAME_WRITE, { .vop_write = nm_write },
472 VOPNAME_IOCTL, { .vop_ioctl = nm_ioctl },
473 VOPNAME_GETATTR, { .vop_getattr = nm_getattr },
474 VOPNAME_SETATTR, { .vop_setattr = nm_setattr },
475 VOPNAME_ACCESS, { .vop_access = nm_access },
476 VOPNAME_CREATE, { .vop_create = nm_create },
477 VOPNAME_LINK, { .vop_link = nm_link },
478 VOPNAME_FSYNC, { .vop_fsync = nm_fsync },
479 VOPNAME_INACTIVE, { .vop_inactive = nm_inactive },
480 VOPNAME_FID, { .vop_fid = nm_fid },
481 VOPNAME_RWLOCK, { .vop_rwlock = nm_rwlock },
482 VOPNAME_RWUNLOCK, { .vop_rwunlock = nm_rwunlock },
483 VOPNAME_SEEK, { .vop_seek = nm_seek },
484 VOPNAME_REALVP, { .vop_realvp = nm_realvp },
485 VOPNAME_POLL, { .vop_poll = nm_poll },
486 VOPNAME_DISPOSE, { .error = fs_error },
487 NULL, NULL
488 };
|
448 struct vnode *rvp;
449
450 vp = VTONM(vp)->nm_filevp;
451 if (VOP_REALVP(vp, &rvp, ct) == 0)
452 vp = rvp;
453 *vpp = vp;
454 return (0);
455 }
456
457 static int
458 nm_poll(vnode_t *vp, short events, int anyyet, short *reventsp,
459 pollhead_t **phpp, caller_context_t *ct)
460 {
461 return (VOP_POLL(VTONM(vp)->nm_filevp, events, anyyet, reventsp,
462 phpp, ct));
463 }
464
465 struct vnodeops *nm_vnodeops;
466
467 const fs_operation_def_t nm_vnodeops_template[] = {
468 { VOPNAME_OPEN, { .vop_open = nm_open } },
469 { VOPNAME_CLOSE, { .vop_close = nm_close } },
470 { VOPNAME_READ, { .vop_read = nm_read } },
471 { VOPNAME_WRITE, { .vop_write = nm_write } },
472 { VOPNAME_IOCTL, { .vop_ioctl = nm_ioctl } },
473 { VOPNAME_GETATTR, { .vop_getattr = nm_getattr } },
474 { VOPNAME_SETATTR, { .vop_setattr = nm_setattr } },
475 { VOPNAME_ACCESS, { .vop_access = nm_access } },
476 { VOPNAME_CREATE, { .vop_create = nm_create } },
477 { VOPNAME_LINK, { .vop_link = nm_link } },
478 { VOPNAME_FSYNC, { .vop_fsync = nm_fsync } },
479 { VOPNAME_INACTIVE, { .vop_inactive = nm_inactive } },
480 { VOPNAME_FID, { .vop_fid = nm_fid } },
481 { VOPNAME_RWLOCK, { .vop_rwlock = nm_rwlock } },
482 { VOPNAME_RWUNLOCK, { .vop_rwunlock = nm_rwunlock } },
483 { VOPNAME_SEEK, { .vop_seek = nm_seek } },
484 { VOPNAME_REALVP, { .vop_realvp = nm_realvp } },
485 { VOPNAME_POLL, { .vop_poll = nm_poll } },
486 { VOPNAME_DISPOSE, { .error = fs_error } },
487 { NULL, { NULL } }
488 };
|