Lines Matching refs:p2m

180 gethash(struct p2k_mount *p2m, struct vnode *vp)
185 return &p2m->p2m_vphash[hash % NHASHBUCK];
197 getp2n(struct p2k_mount *p2m, struct vnode *vp, bool initial,
206 hl = gethash(p2m, vp);
212 hl = gethash(p2m, vp);
262 struct p2k_mount *p2m;
265 p2m = malloc(sizeof(*p2m));
266 if (p2m == NULL)
268 memset(p2m, 0, sizeof(*p2m));
271 LIST_INIT(&p2m->p2m_vphash[i]);
273 return p2m;
280 struct p2k_mount *p2m;
370 p2m = allocp2m();
371 if (p2m == NULL)
373 p2m->p2m_pu = puffs_init(pops, PUFFS_DEFER, PUFFS_DEFER,
375 if (p2m->p2m_pu == NULL) {
377 free(p2m);
381 p2m->p2m_hasdebug = hasdebug;
384 if (puffs_daemon(p2m->p2m_pu, 1, 1) == -1) {
386 p2k_cancel(p2m, sverrno);
388 p2m = NULL;
391 if (p2m)
396 return p2m;
400 p2k_cancel(struct p2k_mount *p2m, int error)
403 puffs_cancel(p2m->p2m_pu, error);
404 free(p2m);
408 setupfs(struct p2k_mount *p2m, const char *vfsname, const char *devpath,
415 struct puffs_usermount *pu = p2m->p2m_pu;
446 if ((rv = rump_pub_vfs_getmp("/", &p2m->p2m_mp)) != 0) {
460 ukfs_setspecific(ukfs, p2m);
461 p2m->p2m_ukfs = ukfs;
462 p2m->p2m_mp = ukfs_getmp(ukfs);
464 if ((rv = rump_pub_vfs_root(p2m->p2m_mp, &p2m->p2m_rvp, 0)) != 0) {
470 p2m->p2m_pu = pu;
480 p2m->p2m_imtmpfsman = strcmp(vfsname, MOUNT_TMPFS) == 0;
482 p2n_root = getp2n(p2m, p2m->p2m_rvp, true, NULL);
488 if (p2m->p2m_hasdebug) {
501 puffs_setspecific(pu, p2m);
509 ukfs_release(p2m->p2m_ukfs, UKFS_RELFLAG_FORCE);
510 free(p2m);
518 p2k_mainloop(struct p2k_mount *p2m)
522 rv = puffs_mainloop(p2m->p2m_pu);
524 puffs_exit(p2m->p2m_pu, 1);
525 if (p2m->p2m_ukfs)
526 ukfs_release(p2m->p2m_ukfs, UKFS_RELFLAG_FORCE);
527 free(p2m);
538 struct p2k_mount *p2m;
541 p2m = p2k_init(puffs_flags);
542 if (p2m == NULL)
544 rv = setupfs(p2m, vfsname, devpath, ukfs_part_na, mountpath,
548 return p2k_mainloop(p2m);
556 struct p2k_mount *p2m;
559 p2m = p2k_init(puffs_flags);
560 if (p2m == NULL)
562 rv = setupfs(p2m, vfsname, devpath, part, mountpath, mntflags,
566 return p2k_mainloop(p2m);
570 p2k_setup_fs(struct p2k_mount *p2m, const char *vfsname, const char *devpath,
574 return setupfs(p2m, vfsname, devpath, ukfs_part_na, mountpath,
579 p2k_setup_diskfs(struct p2k_mount *p2m, const char *vfsname,
584 return setupfs(p2m, vfsname, devpath, part, mountpath, mntflags,
591 struct p2k_mount *p2m = puffs_getspecific(pu);
592 struct mount *mp = p2m->p2m_mp;
603 struct p2k_mount *p2m = puffs_getspecific(pu);
604 struct ukfs *fs = p2m->p2m_ukfs;
607 rump_pub_vp_rele(p2m->p2m_rvp);
613 if (p2m->p2m_hasdebug
622 p2m->p2m_ukfs = NULL;
624 if (p2m->p2m_hasdebug) {
637 struct p2k_mount *p2m = puffs_getspecific(pu);
638 struct mount *mp = p2m->p2m_mp;
654 struct p2k_mount *p2m = puffs_getspecific(pu);
655 struct mount *mp = p2m->p2m_mp;
668 p2n = getp2n(p2m, vp, false, NULL);
697 struct p2k_mount *p2m = puffs_getspecific(pu);
698 struct mount *mp = p2m->p2m_mp;
717 struct p2k_mount *p2m = puffs_getspecific(pu);
739 p2n = getp2n(p2m, vp, false, NULL);
789 struct p2k_mount *p2m = puffs_getspecific(pu);
815 p2n = getp2n(p2m, vp, true, p2n);
1371 struct p2k_mount *p2m = puffs_getspecific(pu);
1388 if (!p2m->p2m_imtmpfsman) {