Lines Matching defs:sn
237 * spec_io_enter(vp, &sn, &dev)
243 * On success, set sn to the specnode pointer and dev to the dev_t
254 struct specnode *sn;
269 (sn = vp->v_specnode) == NULL ||
285 iocnt = atomic_load_relaxed(&sn->sn_dev->sd_iocnt);
301 } while (atomic_cas_uint(&sn->sn_dev->sd_iocnt, iocnt, iocnt + 1)
305 *snp = sn;
314 * spec_io_exit(vp, sn)
317 * allow concurrent spec_node_revoke to proceed. The argument sn
322 spec_io_exit(struct vnode *vp, struct specnode *sn)
324 struct specdev *sd = sn->sn_dev;
327 KASSERT(vp->v_specnode == sn);
376 specnode_t *sn;
390 sn = kmem_alloc(sizeof(*sn), KM_SLEEP);
410 sn->sn_dev = sd;
414 sn->sn_dev = vp2->v_specnode->sn_dev;
415 sn->sn_dev->sd_refcnt++;
418 sn->sn_opencnt = 0;
419 sn->sn_rdev = rdev;
420 sn->sn_gone = false;
421 vp->v_specnode = sn;
569 struct specnode *sn;
575 error = spec_io_enter(devvp, &sn, &dev);
579 KASSERT(sn->sn_dev->sd_mountpoint == NULL || mp == NULL);
580 sn->sn_dev->sd_mountpoint = mp;
591 out: spec_io_exit(devvp, sn);
601 specnode_t *sn;
607 sn = vp->v_specnode;
608 sd = sn->sn_dev;
612 KASSERT(sn->sn_gone == false);
615 KASSERTMSG(sn->sn_opencnt <= sd->sd_opencnt,
617 sn->sn_opencnt, sd->sd_opencnt);
618 sn->sn_gone = true;
619 if (sn->sn_opencnt != 0) {
620 sd->sd_opencnt -= (sn->sn_opencnt - 1);
621 sn->sn_opencnt = 1;
627 KASSERT(sn->sn_opencnt == 0);
645 KASSERT(sn->sn_gone);
646 KASSERT(sn->sn_opencnt == 0);
665 specnode_t *sn;
669 sn = vp->v_specnode;
670 sd = sn->sn_dev;
674 KASSERT(sn->sn_opencnt == 0);
677 sn = vp->v_specnode;
690 kmem_free(sn, sizeof(*sn));
728 specnode_t *sn, *sn1;
741 sn = vp->v_specnode;
742 sd = sn->sn_dev;
771 KASSERT(!sn->sn_gone);
788 sn->sn_opencnt++;
789 KASSERTMSG(sn->sn_opencnt <= sd->sd_opencnt,
791 sn->sn_opencnt, sd->sd_opencnt);
811 KASSERTMSG(sn->sn_opencnt == 0, "sn_opencnt=%u",
812 sn->sn_opencnt);
813 sn->sn_opencnt = 1;
864 KASSERT(sn1 == sn);
931 * have been revoked, so we must tread carefully. However, sn
934 spec_io_exit(vp, sn);
936 KASSERT(vp->v_specnode == sn);
969 if (sn->sn_gone) {
980 KASSERT(sn->sn_opencnt);
981 KASSERTMSG(sn->sn_opencnt <= sd->sd_opencnt,
983 sn->sn_opencnt, sd->sd_opencnt);
993 KASSERT(sn->sn_opencnt == 1);
997 KASSERT(sn->sn_opencnt);
998 KASSERTMSG(sn->sn_opencnt <= sd->sd_opencnt,
1000 sn->sn_opencnt, sd->sd_opencnt);
1002 sn->sn_opencnt--;
1085 struct specnode *sn;
1124 error = spec_io_enter(vp, &sn, &dev);
1128 spec_io_exit(vp, sn);
1207 struct specnode *sn;
1239 error = spec_io_enter(vp, &sn, &dev);
1243 spec_io_exit(vp, sn);
1338 struct specnode *sn;
1342 error = spec_io_enter(vp, &sn, &dev);
1361 spec_io_exit(vp, sn);
1374 struct specnode *sn;
1378 if (spec_io_enter(vp, &sn, &dev) != 0)
1390 spec_io_exit(vp, sn);
1403 struct specnode *sn;
1407 error = spec_io_enter(vp, &sn, &dev);
1424 spec_io_exit(vp, sn);
1440 struct specnode *sn;
1446 error = spec_io_enter(vp, &sn, &dev);
1452 spec_io_exit(vp, sn);
1497 struct specnode *sn = NULL;
1501 error = spec_io_enter(vp, &sn, &dev);
1529 out: if (sn)
1530 spec_io_exit(vp, sn);
1609 specnode_t *sn;
1615 sn = vp->v_specnode;
1617 sd = sn->sn_dev;
1643 if (sn->sn_opencnt == 1 && vp == sess->s_ttyvp) {
1722 KASSERT(sn->sn_opencnt);
1724 KASSERTMSG(sn->sn_opencnt <= sd->sd_opencnt,
1726 sn->sn_opencnt, sd->sd_opencnt);
1727 sn->sn_opencnt--;
1735 KASSERTMSG(sn->sn_opencnt == 0, "sn_opencnt=%u",
1736 sn->sn_opencnt);