summaryrefslogtreecommitdiffstats
path: root/sys/fs/coda/coda_fbsd.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2008-02-10 11:18:12 +0000
committerrwatson <rwatson@FreeBSD.org>2008-02-10 11:18:12 +0000
commit8a831a9f229e9937f69438b24d24d98c3724324d (patch)
tree06c9a6b7d2003593aeebef70f62add3f95c146af /sys/fs/coda/coda_fbsd.c
parent3474d93d402c549a8b2873e66ce3816f3747ecd2 (diff)
downloadFreeBSD-src-8a831a9f229e9937f69438b24d24d98c3724324d.zip
FreeBSD-src-8a831a9f229e9937f69438b24d24d98c3724324d.tar.gz
Since we're now actively maintaining the Coda module in the FreeBSD source
tree, restyle everything but coda.h (which is more explicitly shared across systems) into a closer approximation to style(9). Remove a few more unused function prototypes. Add or clarify some comments. MFC after: 1 month
Diffstat (limited to 'sys/fs/coda/coda_fbsd.c')
-rw-r--r--sys/fs/coda/coda_fbsd.c75
1 files changed, 41 insertions, 34 deletions
diff --git a/sys/fs/coda/coda_fbsd.c b/sys/fs/coda/coda_fbsd.c
index ab1e360..765c3fd 100644
--- a/sys/fs/coda/coda_fbsd.c
+++ b/sys/fs/coda/coda_fbsd.c
@@ -1,10 +1,10 @@
/*-
* Coda: an Experimental Distributed File System
* Release 3.1
- *
+ *
* Copyright (c) 1987-1998 Carnegie Mellon University
* All Rights Reserved
- *
+ *
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
@@ -13,18 +13,18 @@
* that credit is given to Carnegie Mellon University in all documents
* and publicity pertaining to direct or indirect use of this code or its
* derivatives.
- *
+ *
* CODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS KNOWN TO HAVE BUGS,
* SOME OF WHICH MAY HAVE SERIOUS CONSEQUENCES. CARNEGIE MELLON ALLOWS
* FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION. CARNEGIE MELLON
* DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
* RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE OR OF
* ANY DERIVATIVE WORK.
- *
+ *
* Carnegie Mellon encourages users of this software to return any
* improvements or extensions that they make, and to grant Carnegie
* Mellon the rights to redistribute these changes without encumbrance.
- *
+ *
* @(#) src/sys/coda/coda_fbsd.cr,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $
*/
@@ -66,17 +66,20 @@ static eventhandler_tag clonetag;
static LIST_HEAD(, coda_mntinfo) coda_mnttbl;
-int vcdebug = 1;
-#define VCDEBUG if (vcdebug) printf
-
-/* for DEVFS, using bpf & tun drivers as examples*/
+/*
+ * For DEVFS, using bpf & tun drivers as examples.
+ *
+ * XXX: Why use a cloned interface, aren't we really just interested in
+ * having a single /dev/cfs0? It's not clear the coda module knows what to
+ * do with more than one.
+ */
static void coda_fbsd_clone(void *arg, struct ucred *cred, char *name,
int namelen, struct cdev **dev);
static int
codadev_modevent(module_t mod, int type, void *data)
{
- struct coda_mntinfo *mnt;
+ struct coda_mntinfo *mnt;
switch (type) {
case MOD_LOAD:
@@ -84,7 +87,14 @@ codadev_modevent(module_t mod, int type, void *data)
clonetag = EVENTHANDLER_REGISTER(dev_clone, coda_fbsd_clone,
0, 1000);
break;
+
case MOD_UNLOAD:
+ /*
+ * XXXRW: At the very least, a busy check should occur here
+ * to prevent untimely unload. Much more serious collection
+ * of allocated memory needs to take place; right now we leak
+ * like a sieve.
+ */
EVENTHANDLER_DEREGISTER(dev_clone, clonetag);
while ((mnt = LIST_FIRST(&coda_mnttbl)) != NULL) {
LIST_REMOVE(mnt, mi_list);
@@ -96,8 +106,9 @@ codadev_modevent(module_t mod, int type, void *data)
default:
return (EOPNOTSUPP);
}
- return 0;
+ return (0);
}
+
static moduledata_t codadev_mod = {
"codadev",
codadev_modevent,
@@ -105,37 +116,33 @@ static moduledata_t codadev_mod = {
};
DECLARE_MODULE(codadev, codadev_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
-static void coda_fbsd_clone(arg, cred, name, namelen, dev)
- void *arg;
- struct ucred *cred;
- char *name;
- int namelen;
- struct cdev **dev;
+static void
+coda_fbsd_clone(void *arg, struct ucred *cred, char *name, int namelen,
+ struct cdev **dev)
{
- int u;
- struct coda_mntinfo *mnt;
-
- if (*dev != NULL)
- return;
- if (dev_stdclone(name,NULL,"cfs",&u) != 1)
- return;
-
- *dev = make_dev(&codadevsw,unit2minor(u),UID_ROOT,GID_WHEEL,0600,"cfs%d",u);
- dev_ref(*dev);
- mnt = malloc(sizeof(struct coda_mntinfo), M_CODA, M_WAITOK|M_ZERO);
- LIST_INSERT_HEAD(&coda_mnttbl, mnt, mi_list);
- mnt->dev = *dev;
+ struct coda_mntinfo *mnt;
+ int u;
+
+ if (*dev != NULL)
+ return;
+ if (dev_stdclone(name, NULL, "cfs", &u) != 1)
+ return;
+ *dev = make_dev(&codadevsw, unit2minor(u), UID_ROOT, GID_WHEEL, 0600,
+ "cfs%d", u);
+ dev_ref(*dev);
+ mnt = malloc(sizeof(struct coda_mntinfo), M_CODA, M_WAITOK|M_ZERO);
+ LIST_INSERT_HEAD(&coda_mnttbl, mnt, mi_list);
+ mnt->dev = *dev;
}
struct coda_mntinfo *
dev2coda_mntinfo(struct cdev *dev)
{
- struct coda_mntinfo *mnt;
+ struct coda_mntinfo *mnt;
LIST_FOREACH(mnt, &coda_mnttbl, mi_list) {
if (mnt->dev == dev)
- return mnt;
+ return (mnt);
}
-
- return NULL;
+ return (NULL);
}
OpenPOWER on IntegriCloud