Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/lib/libpuffs/puffs.c,v rcsdiff: /ftp/cvs/cvsroot/src/lib/libpuffs/puffs.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.92.4.7 retrieving revision 1.93 diff -u -p -r1.92.4.7 -r1.93 --- src/lib/libpuffs/puffs.c 2012/01/25 18:22:10 1.92.4.7 +++ src/lib/libpuffs/puffs.c 2008/12/12 18:59:53 1.93 @@ -1,4 +1,4 @@ -/* $NetBSD: puffs.c,v 1.92.4.7 2012/01/25 18:22:10 riz Exp $ */ +/* $NetBSD: puffs.c,v 1.93 2008/12/12 18:59:53 pooka Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. @@ -31,7 +31,7 @@ #include #if !defined(lint) -__RCSID("$NetBSD: puffs.c,v 1.92.4.7 2012/01/25 18:22:10 riz Exp $"); +__RCSID("$NetBSD: puffs.c,v 1.93 2008/12/12 18:59:53 pooka Exp $"); #endif /* !lint */ #include @@ -99,14 +99,6 @@ fillvnopmask(struct puffs_ops *pops, uin FILLOP(print, PRINT); FILLOP(read, READ); FILLOP(write, WRITE); - FILLOP(advlock, ADVLOCK); - FILLOP(abortop, ABORTOP); - FILLOP(pathconf, PATHCONF); - - FILLOP(getextattr, GETEXTATTR); - FILLOP(setextattr, SETEXTATTR); - FILLOP(listextattr, LISTEXTATTR); - FILLOP(deleteextattr, DELETEEXTATTR); } #undef FILLOP @@ -283,18 +275,6 @@ puffs_setspecific(struct puffs_usermount pu->pu_privdata = privdata; } -void -puffs_setmntinfo(struct puffs_usermount *pu, - const char *mntfromname, const char *puffsname) -{ - struct puffs_kargs *pargs = pu->pu_kargp; - - (void)strlcpy(pargs->pa_mntfromname, mntfromname, - sizeof(pargs->pa_mntfromname)); - (void)strlcpy(pargs->pa_typename, puffsname, - sizeof(pargs->pa_typename)); -} - size_t puffs_getmaxreqlen(struct puffs_usermount *pu) { @@ -483,23 +463,12 @@ puffs_daemon(struct puffs_usermount *pu, return -1; } -static void -shutdaemon(struct puffs_usermount *pu, int error) -{ - ssize_t n; - - n = write(pu->pu_dpipe[1], &error, sizeof(int)); - assert(n == 4); - close(pu->pu_dpipe[0]); - close(pu->pu_dpipe[1]); - pu->pu_state &= ~PU_PUFFSDAEMON; -} - int puffs_mount(struct puffs_usermount *pu, const char *dir, int mntflags, puffs_cookie_t cookie) { char rp[MAXPATHLEN]; + ssize_t n; int rv, fd, sverrno; char *comfd; @@ -597,29 +566,31 @@ do { \ free(pu->pu_kargp); pu->pu_kargp = NULL; - if (pu->pu_state & PU_PUFFSDAEMON) - shutdaemon(pu, sverrno); + if (pu->pu_state & PU_PUFFSDAEMON) { + n = write(pu->pu_dpipe[1], &sverrno, sizeof(int)); + assert(n == 4); + close(pu->pu_dpipe[0]); + close(pu->pu_dpipe[1]); + } errno = sverrno; return rv; } - -/*ARGSUSED*/ struct puffs_usermount * -_puffs_init52(int dummy, struct puffs_ops *pops, const char *mntfromname, +_puffs_init(int develv, struct puffs_ops *pops, const char *mntfromname, const char *puffsname, void *priv, uint32_t pflags) { struct puffs_usermount *pu; struct puffs_kargs *pargs; int sverrno; - if (puffsname == PUFFS_DEFER) - puffsname = "n/a"; - if (mntfromname == PUFFS_DEFER) - mntfromname = "n/a"; - if (priv == PUFFS_DEFER) - priv = NULL; + if (develv != PUFFS_DEVEL_LIBVERSION) { + warnx("puffs_init: mounting with lib version %d, need %d", + develv, PUFFS_DEVEL_LIBVERSION); + errno = EINVAL; + return NULL; + } pu = malloc(sizeof(struct puffs_usermount)); if (pu == NULL) @@ -634,7 +605,10 @@ _puffs_init52(int dummy, struct puffs_op pargs->pa_vers = PUFFSDEVELVERS | PUFFSVERSION; pargs->pa_flags = PUFFS_FLAG_KERN(pflags); fillvnopmask(pops, pargs->pa_vnopmask); - puffs_setmntinfo(pu, mntfromname, puffsname); + (void)strlcpy(pargs->pa_typename, puffsname, + sizeof(pargs->pa_typename)); + (void)strlcpy(pargs->pa_mntfromname, mntfromname, + sizeof(pargs->pa_mntfromname)); puffs_zerostatvfs(&pargs->pa_svfsb); pargs->pa_root_cookie = NULL; @@ -684,64 +658,6 @@ _puffs_init52(int dummy, struct puffs_op return NULL; } -struct puffs_usermount * -_puffs_init(int dummy, struct puffs_ops51 *pops51, const char *mntfromname, - const char *puffsname, void *priv, uint32_t pflags) -{ - struct puffs_ops *pops; - - PUFFSOP_INIT(pops); - - pops->puffs_fs_unmount = pops51->puffs_fs_unmount; - pops->puffs_fs_statvfs = pops51->puffs_fs_statvfs; - pops->puffs_fs_sync = pops51->puffs_fs_sync; - pops->puffs_fs_fhtonode = pops51->puffs_fs_fhtonode; - pops->puffs_fs_nodetofh = pops51->puffs_fs_nodetofh; - pops->puffs_node_lookup = pops51->puffs_node_lookup; - pops->puffs_node_create = pops51->puffs_node_create; - pops->puffs_node_mknod = pops51->puffs_node_mknod; - pops->puffs_node_open = pops51->puffs_node_open; - pops->puffs_node_close = pops51->puffs_node_close; - pops->puffs_node_access = pops51->puffs_node_access; - pops->puffs_node_getattr = pops51->puffs_node_getattr; - pops->puffs_node_setattr = pops51->puffs_node_setattr; - pops->puffs_node_poll = pops51->puffs_node_poll; - pops->puffs_node_mmap = pops51->puffs_node_mmap; - pops->puffs_node_fsync = pops51->puffs_node_fsync; - pops->puffs_node_seek = pops51->puffs_node_seek; - pops->puffs_node_remove = pops51->puffs_node_remove; - pops->puffs_node_link = pops51->puffs_node_link; - pops->puffs_node_rename = pops51->puffs_node_rename; - pops->puffs_node_mkdir = pops51->puffs_node_mkdir; - pops->puffs_node_rmdir = pops51->puffs_node_rmdir; - pops->puffs_node_symlink = pops51->puffs_node_symlink; - pops->puffs_node_readdir = pops51->puffs_node_readdir; - pops->puffs_node_readlink = pops51->puffs_node_readlink; - pops->puffs_node_reclaim = pops51->puffs_node_reclaim; - pops->puffs_node_inactive = pops51->puffs_node_inactive; - pops->puffs_node_print = pops51->puffs_node_print; - pops->puffs_node_pathconf = pops51->puffs_node_pathconf; - pops->puffs_node_advlock = pops51->puffs_node_advlock; - pops->puffs_node_read = pops51->puffs_node_read; - pops->puffs_node_write = pops51->puffs_node_write; - pops->puffs_node_abortop = pops51->puffs_node_abortop; - - free(pops51); - - return _puffs_init52(dummy, pops, mntfromname, - puffsname, priv, pflags); -} - - -void -puffs_cancel(struct puffs_usermount *pu, int error) -{ - - assert(puffs_getstate(pu) < PUFFS_STATE_RUNNING); - shutdaemon(pu, error); - free(pu); -} - /* * XXX: there's currently no clean way to request unmount from * within the user server, so be very brutal about it. @@ -753,7 +669,6 @@ puffs_exit(struct puffs_usermount *pu, i struct puffs_node *pn; force = 1; /* currently */ - assert((pu->pu_state & PU_PUFFSDAEMON) == 0); if (pu->pu_fd) close(pu->pu_fd);