Lines Matching refs:lfs
319 struct lfsnode *lfs; in makelfsnode() local
329 if ((lfs = lfsfind(vfsp, li)) == NULL) { in makelfsnode()
331 lfs = kmem_zalloc(sizeof (*lfs), KM_SLEEP); in makelfsnode()
334 kmem_free(lfs, sizeof (*lfs)); in makelfsnode()
335 lfs = tlfs; in makelfsnode()
338 lfs->lfs_realvfs = vfsp; in makelfsnode()
345 VFS_INIT(&lfs->lfs_vfs, lo_vfsops, (caddr_t)li); in makelfsnode()
346 lfs->lfs_vfs.vfs_fstype = li->li_mountvfs->vfs_fstype; in makelfsnode()
347 lfs->lfs_vfs.vfs_flag = in makelfsnode()
350 lfs->lfs_vfs.vfs_bsize = vfsp->vfs_bsize; in makelfsnode()
351 lfs->lfs_vfs.vfs_dev = vfsp->vfs_dev; in makelfsnode()
352 lfs->lfs_vfs.vfs_fsid = vfsp->vfs_fsid; in makelfsnode()
355 lfs->lfs_vfs.vfs_mntpt = vfs_getmntpoint(vfsp); in makelfsnode()
359 (void) VFS_ROOT(vfsp, &lfs->lfs_realrootvp); in makelfsnode()
367 VFS_HOLD(&lfs->lfs_vfs); in makelfsnode()
368 lfs->lfs_next = li->li_lfs; in makelfsnode()
369 li->li_lfs = lfs; in makelfsnode()
370 vfs_propagate_features(vfsp, &lfs->lfs_vfs); in makelfsnode()
374 VFS_HOLD(&lfs->lfs_vfs); in makelfsnode()
376 return (&lfs->lfs_vfs); in makelfsnode()
383 freelfsnode(struct lfsnode *lfs, struct loinfo *li) in freelfsnode() argument
391 if (this == lfs) { in freelfsnode()
392 ASSERT(lfs->lfs_vfs.vfs_count == 1); in freelfsnode()
394 li->li_lfs = lfs->lfs_next; in freelfsnode()
396 prev->lfs_next = lfs->lfs_next; in freelfsnode()
397 if (lfs->lfs_realrootvp != NULL) { in freelfsnode()
398 VN_RELE(lfs->lfs_realrootvp); in freelfsnode()
400 if (lfs->lfs_vfs.vfs_mntpt != NULL) in freelfsnode()
401 refstr_rele(lfs->lfs_vfs.vfs_mntpt); in freelfsnode()
402 if (lfs->lfs_vfs.vfs_implp != NULL) { in freelfsnode()
403 ASSERT(lfs->lfs_vfs.vfs_femhead == NULL); in freelfsnode()
404 ASSERT(lfs->lfs_vfs.vfs_vskap == NULL); in freelfsnode()
405 ASSERT(lfs->lfs_vfs.vfs_fstypevsp == NULL); in freelfsnode()
406 kmem_free(lfs->lfs_vfs.vfs_implp, in freelfsnode()
409 sema_destroy(&lfs->lfs_vfs.vfs_reflock); in freelfsnode()
410 kmem_free(lfs, sizeof (struct lfsnode)); in freelfsnode()
425 struct lfsnode *lfs; in lfsfind() local
444 for (lfs = li->li_lfs; lfs != NULL; lfs = lfs->lfs_next) { in lfsfind()
445 if (lfs->lfs_realvfs == vfsp) { in lfsfind()
448 realvp = lfs->lfs_realrootvp; in lfsfind()
453 return (lfs); in lfsfind()
466 struct lfsnode *lfs; in lo_realvfs() local
475 for (lfs = li->li_lfs; lfs != NULL; lfs = lfs->lfs_next) { in lo_realvfs()
476 if (vfsp == &lfs->lfs_vfs) { in lo_realvfs()
478 *realrootvpp = lfs->lfs_realrootvp; in lo_realvfs()
480 return (lfs->lfs_realvfs); in lo_realvfs()
630 lfs_rele(struct lfsnode *lfs, struct loinfo *li) in lfs_rele() argument
632 vfs_t *vfsp = &lfs->lfs_vfs; in lfs_rele()
637 freelfsnode(lfs, li); in lfs_rele()
648 struct lfsnode *lfs, *nextlfs; in freelonode() local
684 lfs = li->li_lfs; in freelonode()
685 while (lfs != NULL) { in freelonode()
686 nextlfs = lfs->lfs_next; in freelonode()
687 if (vfsp == &lfs->lfs_vfs) { in freelonode()
688 lfs_rele(lfs, li); in freelonode()
691 if (lfs->lfs_vfs.vfs_count == 1) { in freelonode()
695 freelfsnode(lfs, li); in freelonode()
697 lfs = nextlfs; in freelonode()