Module Name: src
Committed By: pooka
Date: Sat Dec 5 20:54:10 UTC 2009
Modified Files:
src/lib/libpuffs: puffs.c puffs.h
Log Message:
Add an error handler which syslogs but does not abort() and make it
the default. Most servers just shovel bits from their backend to
the kernel without checking the contents and dumping core in case
the backend gives garbage is a bit harsh.
To generate a diff of this commit:
cvs rdiff -u -r1.100 -r1.101 src/lib/libpuffs/puffs.c
cvs rdiff -u -r1.112 -r1.113 src/lib/libpuffs/puffs.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libpuffs/puffs.c
diff -u src/lib/libpuffs/puffs.c:1.100 src/lib/libpuffs/puffs.c:1.101
--- src/lib/libpuffs/puffs.c:1.100 Sun Oct 18 19:09:20 2009
+++ src/lib/libpuffs/puffs.c Sat Dec 5 20:54:10 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs.c,v 1.100 2009/10/18 19:09:20 pooka Exp $ */
+/* $NetBSD: puffs.c,v 1.101 2009/12/05 20:54:10 pooka Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#if !defined(lint)
-__RCSID("$NetBSD: puffs.c,v 1.100 2009/10/18 19:09:20 pooka Exp $");
+__RCSID("$NetBSD: puffs.c,v 1.101 2009/12/05 20:54:10 pooka Exp $");
#endif /* !lint */
#include <sys/param.h>
@@ -121,8 +121,8 @@
}
/*ARGSUSED*/
-static void
-puffs_defaulterror(struct puffs_usermount *pu, uint8_t type,
+void
+puffs_kernerr_abort(struct puffs_usermount *pu, uint8_t type,
int error, const char *str, puffs_cookie_t cookie)
{
@@ -131,6 +131,16 @@
abort();
}
+/*ARGSUSED*/
+void
+puffs_kernerr_log(struct puffs_usermount *pu, uint8_t type,
+ int error, const char *str, puffs_cookie_t cookie)
+{
+
+ syslog(LOG_WARNING, "kernel: type %d, error %d, cookie %p (%s)\n",
+ type, error, cookie, str);
+}
+
int
puffs_getselectable(struct puffs_usermount *pu)
{
@@ -664,7 +674,7 @@
pu->pu_pathtransform = NULL;
pu->pu_namemod = NULL;
- pu->pu_errnotify = puffs_defaulterror;
+ pu->pu_errnotify = puffs_kernerr_log;
PU_SETSTATE(pu, PUFFS_STATE_BEFOREMOUNT);
Index: src/lib/libpuffs/puffs.h
diff -u src/lib/libpuffs/puffs.h:1.112 src/lib/libpuffs/puffs.h:1.113
--- src/lib/libpuffs/puffs.h:1.112 Sun Oct 18 19:09:20 2009
+++ src/lib/libpuffs/puffs.h Sat Dec 5 20:54:10 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs.h,v 1.112 2009/10/18 19:09:20 pooka Exp $ */
+/* $NetBSD: puffs.h,v 1.113 2009/12/05 20:54:10 pooka Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
@@ -591,6 +591,10 @@
void puffs_set_namemod(struct puffs_usermount *, pu_namemod_fn);
void puffs_set_errnotify(struct puffs_usermount *, pu_errnotify_fn);
+void puffs_kernerr_log(struct puffs_usermount *, uint8_t, int,
+ const char *, puffs_cookie_t);
+void puffs_kernerr_abort(struct puffs_usermount *, uint8_t, int,
+ const char *, puffs_cookie_t);
void puffs_set_prepost(struct puffs_usermount *,
pu_prepost_fn, pu_prepost_fn);
void puffs_set_cmap(struct puffs_usermount *, pu_cmap_fn);