PERFORCE change 142226 for review

John Birrell jb at FreeBSD.org
Sat May 24 19:54:49 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=142226

Change 142226 by jb at freebsd3 on 2008/05/24 19:54:03

	IFC

Affected files ...

.. //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#77 integrate
.. //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml#44 integrate
.. //depot/projects/dtrace/doc/en_US.ISO8859-1/share/sgml/authors.ent#36 integrate
.. //depot/projects/dtrace/doc/mn_MN.UTF-8/books/handbook/mac/chapter.sgml#2 integrate
.. //depot/projects/dtrace/doc/share/pgpkeys/manolis.key#1 branch
.. //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys-developers.sgml#36 integrate
.. //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys.ent#35 integrate
.. //depot/projects/dtrace/doc/share/sgml/freebsd.dsl#6 integrate
.. //depot/projects/dtrace/src/include/protocols/dumprestore.h#5 integrate
.. //depot/projects/dtrace/src/sbin/dump/dump.h#6 integrate
.. //depot/projects/dtrace/src/sbin/dump/itime.c#4 integrate
.. //depot/projects/dtrace/src/sbin/dump/main.c#7 integrate
.. //depot/projects/dtrace/src/share/misc/committers-doc.dot#6 integrate
.. //depot/projects/dtrace/src/sys/amd64/amd64/exception.S#10 integrate
.. //depot/projects/dtrace/src/sys/amd64/amd64/local_apic.c#15 integrate
.. //depot/projects/dtrace/src/sys/amd64/amd64/trap.c#25 integrate
.. //depot/projects/dtrace/src/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c#3 integrate
.. //depot/projects/dtrace/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#3 integrate
.. //depot/projects/dtrace/src/sys/dev/usb/uxb360gp_rdesc.h#4 integrate
.. //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc.h#4 integrate
.. //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc_vfsops.c#8 integrate
.. //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc_vnops.c#9 integrate
.. //depot/projects/dtrace/src/sys/i386/i386/exception.s#15 integrate
.. //depot/projects/dtrace/src/sys/i386/i386/local_apic.c#17 integrate
.. //depot/projects/dtrace/src/sys/i386/i386/trap.c#32 integrate
.. //depot/projects/dtrace/src/sys/i386/isa/clock.c#16 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_exec.c#28 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_exit.c#22 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_fork.c#31 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_proc.c#23 integrate
.. //depot/projects/dtrace/src/sys/kern/kern_sig.c#26 integrate
.. //depot/projects/dtrace/src/sys/modules/dtrace/Makefile#29 integrate
.. //depot/projects/dtrace/src/sys/netinet/udp_usrreq.c#17 integrate
.. //depot/projects/dtrace/src/sys/netinet6/ip6_input.c#10 integrate
.. //depot/projects/dtrace/src/sys/netinet6/ip6_var.h#7 integrate
.. //depot/projects/dtrace/src/sys/netipsec/ipsec.c#12 integrate
.. //depot/projects/dtrace/src/sys/netipsec/ipsec.h#9 integrate
.. //depot/projects/dtrace/src/sys/netipsec/ipsec_input.c#9 integrate
.. //depot/projects/dtrace/src/sys/netipsec/ipsec_output.c#7 integrate
.. //depot/projects/dtrace/src/sys/netipsec/xform_ah.c#7 integrate
.. //depot/projects/dtrace/src/sys/netipsec/xform_esp.c#7 integrate
.. //depot/projects/dtrace/src/sys/netipsec/xform_ipcomp.c#5 integrate
.. //depot/projects/dtrace/src/sys/netipsec/xform_ipip.c#6 integrate
.. //depot/projects/dtrace/src/sys/pc98/cbus/clock.c#11 integrate
.. //depot/projects/dtrace/src/usr.bin/calendar/calendars/calendar.freebsd#23 integrate
.. //depot/projects/dtrace/www/en/developers.sgml#35 integrate
.. //depot/projects/dtrace/www/share/sgml/commercial.consult.xml#13 integrate
.. //depot/projects/dtrace/www/share/sgml/news.xml#49 integrate

Differences ...

==== //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#77 (text+ko) ====

@@ -1,4 +1,4 @@
-<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml,v 1.796 2008/05/22 13:06:08 ed Exp $ -->
+<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml,v 1.798 2008/05/24 17:22:08 miwi Exp $ -->
 <!--
 	NOTE TO COMMITTERS: Contributors lists are sorted in alphabetical
 	order by first name.
@@ -5567,11 +5567,6 @@
     </listitem>
 
     <listitem>
-      <para>Manolis Kiagias
-	<email>sonicy at otenet.gr</email></para>
-    </listitem>
-
-    <listitem>
       <para>Mantas Kaulakys
 	<email>stone at tainet.lt</email></para>
     </listitem>
@@ -5889,6 +5884,11 @@
     </listitem>
 
     <listitem>
+      <para>Masahiro Teramoto
+	<email>markun at onohara.to</email></para>
+    </listitem>
+
+    <listitem>
       <para>Masakazu HIGAKI
 	<email>higamasa at dream.com</email></para>
     </listitem>

==== //depot/projects/dtrace/doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml#44 (text+ko) ====

@@ -1,4 +1,4 @@
-<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml,v 1.226 2008/05/22 19:27:34 ed Exp $ -->
+<!-- $FreeBSD: doc/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml,v 1.227 2008/05/24 08:41:30 manolis Exp $ -->
 <!--
 	NOTE TO NEW COMMITTERS: Core and committers lists are sorted in
 	alphabetical order by last name. Please keep in mind that fact while
@@ -587,6 +587,10 @@
     </listitem>
 
     <listitem>
+      <para>&a.manolis;</para>
+    </listitem> 
+
+    <listitem>
       <para>&a.kientzle;</para>
     </listitem>
 

==== //depot/projects/dtrace/doc/en_US.ISO8859-1/share/sgml/authors.ent#36 (text+ko) ====

@@ -13,7 +13,7 @@
                  builds for the other languages, and we will poke fun of you
                  in public.
 
-     $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.446 2008/05/22 12:58:17 ed Exp $
+     $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.447 2008/05/24 08:35:31 manolis Exp $
 -->
 
 <!ENTITY a.aaron "Aaron Dalton <email>aaron at FreeBSD.org</email>">
@@ -626,6 +626,8 @@
 
 <!ENTITY a.maho "Maho Nakata <email>maho at FreeBSD.org</email>">
 
+<!ENTITY a.manolis "Manolis Kiagias <email>manolis at FreeBSD.org</email>">
+
 <!ENTITY a.marcel "Marcel Moolenaar <email>marcel at FreeBSD.org</email>">
 
 <!ENTITY a.marck "Dmitry Morozovsky <email>marck at FreeBSD.org</email>">

==== //depot/projects/dtrace/doc/mn_MN.UTF-8/books/handbook/mac/chapter.sgml#2 (text+ko) ====

@@ -1,9 +1,9 @@
 <!--
      The FreeBSD Mongolian Documentation Project
 
-     Original revision 1.70
+     Original revision 1.71
 
-     $FreeBSD: doc/mn_MN.UTF-8/books/handbook/mac/chapter.sgml,v 1.3 2007/06/28 08:19:36 keramida Exp $
+     $FreeBSD: doc/mn_MN.UTF-8/books/handbook/mac/chapter.sgml,v 1.4 2008/05/24 14:48:29 ganbold Exp $
 -->
 
 <chapter id="mac">
@@ -1131,10 +1131,7 @@
     <itemizedlist>
       <listitem>
 	<para><literal>security.mac.portacl.enabled</literal> нь 
-	бодлогыг бүр мөсөн нээнэ/хаана. <footnote><para>Алдаанаас (bug) болоод 
-	<literal>security.mac.portacl.enabled</literal>
-	  <command>sysctl</command> хувьсагч нь &os;&nbsp;5.2.1 болон 
-	өмнөх хувилбаруудад ажилладаггүй.</para></footnote></para>
+	бодлогыг бүр мөсөн нээнэ/хаана.</para>
       </listitem>
 
       <listitem>

==== //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys-developers.sgml#36 (text+ko) ====

@@ -1,7 +1,7 @@
 <!--
      The FreeBSD Documentation Project
 
-     $FreeBSD: doc/share/pgpkeys/pgpkeys-developers.sgml,v 1.69 2008/05/22 13:16:39 ed Exp $
+     $FreeBSD: doc/share/pgpkeys/pgpkeys-developers.sgml,v 1.70 2008/05/24 08:47:55 manolis Exp $
 -->
 
     <sect2 id="pgpkey-ariff">
@@ -494,6 +494,11 @@
       &pgpkey.fjoe;
     </sect2>
 
+    <sect2 id="pgpkey-manolis">
+      <title>&a.manolis;</title>
+      &pgpkey.manolis;
+    </sect2>
+
     <sect2 id="pgpkey-jkim">
       <title>&a.jkim;</title>
       &pgpkey.jkim;

==== //depot/projects/dtrace/doc/share/pgpkeys/pgpkeys.ent#35 (text+ko) ====

@@ -1,5 +1,5 @@
 
-<!-- $FreeBSD: doc/share/pgpkeys/pgpkeys.ent,v 1.166 2008/05/22 13:16:39 ed Exp $ -->
+<!-- $FreeBSD: doc/share/pgpkeys/pgpkeys.ent,v 1.167 2008/05/24 08:47:55 manolis Exp $ -->
 <!-- PGP keyblocks -->
 <!ENTITY pgpkey.aaron SYSTEM "aaron.key">
 <!ENTITY pgpkey.ache SYSTEM "ache.key">
@@ -159,6 +159,7 @@
 <!ENTITY pgpkey.lwhsu SYSTEM "lwhsu.key">
 <!ENTITY pgpkey.lx SYSTEM "lx.key">
 <!ENTITY pgpkey.maho SYSTEM "maho.key">
+<!ENTITY pgpkey.manolis SYSTEM "manolis.key">
 <!ENTITY pgpkey.marcel SYSTEM "marcel.key">
 <!ENTITY pgpkey.marck SYSTEM "marck.key">
 <!ENTITY pgpkey.marcus SYSTEM "marcus.key">

==== //depot/projects/dtrace/doc/share/sgml/freebsd.dsl#6 (text+ko) ====

@@ -1,4 +1,4 @@
-<!-- $FreeBSD: doc/share/sgml/freebsd.dsl,v 1.93 2007/07/30 09:52:42 blackend Exp $ -->
+<!-- $FreeBSD: doc/share/sgml/freebsd.dsl,v 1.94 2008/05/24 16:16:20 blackend Exp $ -->
 
 <!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
 <!ENTITY % output.html		"IGNORE">
@@ -211,12 +211,12 @@
                  (u (string-append "http://www.FreeBSD.org/cgi/man.cgi?query="
                          (data r) "&" "amp;" "sektion=" (data m))))
             (case v
-              (("current") (string-append u "&" "amp;" "manpath=FreeBSD+7-current"))
+              (("current") (string-append u "&" "amp;" "manpath=FreeBSD+8-current"))
               (("xfree86") (string-append u "&" "amp;" "manpath=XFree86+4.5.0"))
               (("xorg")    (string-append u "&" "amp;" "manpath=X11R7.2"))
               (("netbsd")  (string-append u "&" "amp;" "manpath=NetBSD+3.0"))
               (("openbsd") (string-append u "&" "amp;" "manpath=OpenBSD+4.1"))
-              (("ports")   (string-append u "&" "amp;" "manpath=FreeBSD+6.2-RELEASE+and+Ports"))
+              (("ports")   (string-append u "&" "amp;" "manpath=FreeBSD+7.0-RELEASE+and+Ports"))
               (else u))))
 
         (element application ($bold-seq$))

==== //depot/projects/dtrace/src/include/protocols/dumprestore.h#5 (text+ko) ====

@@ -37,7 +37,7 @@
  *
  *	@(#)dumprestore.h	8.2 (Berkeley) 1/21/94
  *
- * $FreeBSD: src/include/protocols/dumprestore.h,v 1.11 2007/02/26 08:15:56 mckusick Exp $
+ * $FreeBSD: src/include/protocols/dumprestore.h,v 1.12 2008/05/24 05:20:46 mckusick Exp $
  */
 
 #ifndef _PROTOCOLS_DUMPRESTORE_H_
@@ -134,13 +134,4 @@
 #define TS_CLRI 	6	/* map of inodes deleted since last dump */
 #define TS_END  	5	/* end of volume marker */
 
-/*
- * flag values
- */
-/* None at the moment */
-
-#define	DUMPOUTFMT	"%-32s %c %s"		/* for printf */
-						/* name, level, ctime(date) */
-#define	DUMPINFMT	"%32s %c %[^\n]\n"	/* inverse for scanf */
-
 #endif /* !_DUMPRESTORE_H_ */

==== //depot/projects/dtrace/src/sbin/dump/dump.h#6 (text+ko) ====

@@ -28,7 +28,7 @@
  *
  *	@(#)dump.h	8.2 (Berkeley) 4/28/95
  *
- * $FreeBSD: src/sbin/dump/dump.h,v 1.29 2008/05/23 23:13:14 mckusick Exp $
+ * $FreeBSD: src/sbin/dump/dump.h,v 1.30 2008/05/24 05:20:46 mckusick Exp $
  */
 
 /*
@@ -59,8 +59,8 @@
 char	*popenout;	/* popen(3) per-"tape" command */
 char	*dumpdates;	/* name of the file containing dump date information*/
 char	*temp;		/* name of the file for doing rewrite of dumpdates */
-char	lastlevel;	/* dump level of previous dump */
-char	level;		/* dump level of this dump */
+int	lastlevel;	/* dump level of previous dump */
+int	level;		/* dump level of this dump */
 int	uflag;		/* update flag */
 int	diskfd;		/* disk file descriptor */
 int	tapefd;		/* tape file descriptor */
@@ -159,7 +159,7 @@
  */
 struct dumpdates {
 	char	dd_name[NAME_MAX+3];
-	char	dd_level;
+	int	dd_level;
 	time_t	dd_ddate;
 };
 int	nddates;		/* number of records (might be zero) */
@@ -171,6 +171,10 @@
     	if (ddatev != NULL) \
 		for (ddp = ddatev[i = 0]; i < nddates; ddp = ddatev[++i])
 
+#define	DUMPOUTFMT	"%-32s %d %s"		/* for printf */
+						/* name, level, ctime(date) */
+#define	DUMPINFMT	"%32s %d %[^\n]\n"	/* inverse for scanf */
+
 void	sig(int signo);
 
 #ifndef	_PATH_FSTAB

==== //depot/projects/dtrace/src/sbin/dump/itime.c#4 (text+ko) ====

@@ -32,7 +32,7 @@
 static char sccsid[] = "@(#)itime.c	8.1 (Berkeley) 6/5/93";
 #endif
 static const char rcsid[] =
-  "$FreeBSD: src/sbin/dump/itime.c,v 1.16 2004/12/02 13:56:53 maxim Exp $";
+  "$FreeBSD: src/sbin/dump/itime.c,v 1.17 2008/05/24 05:20:46 mckusick Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -132,11 +132,11 @@
 
 	fname = disk;
 #ifdef FDEBUG
-	msg("Looking for name %s in dumpdates = %s for level = %c\n",
+	msg("Looking for name %s in dumpdates = %s for level = %d\n",
 		fname, dumpdates, level);
 #endif
 	spcl.c_ddate = 0;
-	lastlevel = '0';
+	lastlevel = 0;
 
 	initdumptimes();
 	/*
@@ -213,7 +213,7 @@
 		time_t t = _time64_to_time(spcl.c_date);
 		tmsg = ctime(&t);
 	}
-	msg("level %c dump on %s", level, tmsg);
+	msg("level %d dump on %s", level, tmsg);
 }
 
 static void
@@ -241,7 +241,7 @@
 			dumpdates, recno);
 
 #ifdef FDEBUG
-	msg("getrecord: %s %c %s", ddatep->dd_name, ddatep->dd_level,
+	msg("getrecord: %s %d %s", ddatep->dd_name, ddatep->dd_level,
 	    ddatep->dd_ddate == 0 ? "the epoch\n" : ctime(&ddatep->dd_ddate));
 #endif
 	return(0);

==== //depot/projects/dtrace/src/sbin/dump/main.c#7 (text+ko) ====

@@ -38,7 +38,7 @@
 static char sccsid[] = "@(#)main.c	8.6 (Berkeley) 5/1/95";
 #endif
 static const char rcsid[] =
-  "$FreeBSD: src/sbin/dump/main.c,v 1.66 2008/05/23 23:13:14 mckusick Exp $";
+  "$FreeBSD: src/sbin/dump/main.c,v 1.67 2008/05/24 05:20:46 mckusick Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -116,7 +116,7 @@
 	temp = _PATH_DTMP;
 	if (TP_BSIZE / DEV_BSIZE == 0 || TP_BSIZE % DEV_BSIZE != 0)
 		quit("TP_BSIZE must be a multiple of DEV_BSIZE\n");
-	level = '0';
+	level = 0;
 	rsync_friendly = 0;
 
 	if (argc < 2)
@@ -129,7 +129,7 @@
 		/* dump level */
 		case '0': case '1': case '2': case '3': case '4':
 		case '5': case '6': case '7': case '8': case '9':
-			level = ch;
+			level = 10 * level + ch - '0';
 			break;
 
 		case 'a':		/* `auto-size', Write to EOM. */
@@ -216,7 +216,7 @@
 				exit(X_STARTUP);
 			}
 			Tflag = 1;
-			lastlevel = '?';
+			lastlevel = -1;
 			break;
 
 		case 'u':		/* update /etc/dumpdates */
@@ -247,7 +247,7 @@
 		(void)fprintf(stderr, "\n");
 		exit(X_STARTUP);
 	}
-	if (rsync_friendly && (level>'0')) {
+	if (rsync_friendly && (level > 0)) {
 		(void)fprintf(stderr, "%s %s\n", "rsync friendly options",
 		    "can be used only with level 0 dumps.");
 		exit(X_STARTUP);
@@ -398,7 +398,7 @@
 
 	(void)strcpy(spcl.c_label, "none");
 	(void)gethostname(spcl.c_host, NAMELEN);
-	spcl.c_level = level - '0';
+	spcl.c_level = level;
 	spcl.c_type = TS_TAPE;
 	if (rsync_friendly) {
 		/* don't store real dump times */
@@ -411,7 +411,7 @@
 		time_t t = _time64_to_time(spcl.c_date);
 		tmsg = ctime(&t);
 	}
-	msg("Date of this level %c dump: %s", level, tmsg);
+	msg("Date of this level %d dump: %s", level, tmsg);
 
 	if (!Tflag && (!rsync_friendly))
 	        getdumptime();		/* /etc/dumpdates snarfed */
@@ -421,7 +421,10 @@
 		time_t t = _time64_to_time(spcl.c_ddate);
 		tmsg = ctime(&t);
 	}
- 	msg("Date of last level %c dump: %s", lastlevel, tmsg);
+	if (lastlevel < 0)
+		msg("Date of last (level unknown) dump: %s", tmsg);
+	else
+		msg("Date of last level %d dump: %s", lastlevel, tmsg);
 
 	msg("Dumping %s%s ", snapdump ? "snapshot of ": "", disk);
 	if (dt != NULL)

==== //depot/projects/dtrace/src/share/misc/committers-doc.dot#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/misc/committers-doc.dot,v 1.23 2008/04/23 08:51:05 ganbold Exp $
+# $FreeBSD: src/share/misc/committers-doc.dot,v 1.24 2008/05/24 08:49:55 manolis Exp $
 
 # This file is meant to list all FreeBSD doc+www committers and describe the
 # mentor-mentee relationships between them.
@@ -57,6 +57,7 @@
 keramida [label="Giorgos Keramidas\nkeramida at FreeBSD.org\n2001/10/12"]
 loader [label="Fukang Chen\nloader at FreeBSD.org\n2007/07/30"]
 linimon [label="Mark Linimon\nlinimon at FreeBSD.org\n2004/03/31"]
+manolis [label="Manolis Kiagias\nmanolis at FreeBSD.org\n2008/05/24"]
 marck [label="Dmitry Morozovsky\nmarck at FreeBSD.org\n2004/08/10"]
 miwi [label="Martin Wilke\nmiwi at FreeBSD.org\n2007/10/26"]
 murray [label="Murray Stokely\nmurray at FreeBSD.org\n2000/04/05"]
@@ -88,6 +89,7 @@
 delphij -> loader
 
 gabor -> pgj
+gabor -> manolis
 
 jesusr -> jcamou
 

==== //depot/projects/dtrace/src/sys/amd64/amd64/exception.S#10 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.131 2007/12/07 08:20:15 jkoshy Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.132 2008/05/24 06:32:26 jb Exp $
  */
 
 #include "opt_atpic.h"

==== //depot/projects/dtrace/src/sys/amd64/amd64/local_apic.c#15 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.44 2008/03/16 10:58:02 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.45 2008/05/24 06:32:26 jb Exp $");
 
 #include "opt_hwpmc_hooks.h"
 #include "opt_kdtrace.h"

==== //depot/projects/dtrace/src/sys/amd64/amd64/trap.c#25 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.325 2008/03/12 10:11:54 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.326 2008/05/24 06:32:26 jb Exp $");
 
 /*
  * AMD64 Trap and System call handling

==== //depot/projects/dtrace/src/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c,v 1.4 2008/03/28 22:16:05 jb Exp $");
+__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c,v 1.5 2008/05/24 19:30:38 bz Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>

==== //depot/projects/dtrace/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#3 (text+ko) ====


==== //depot/projects/dtrace/src/sys/dev/usb/uxb360gp_rdesc.h#4 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2005 Ed Schouten <ed at fxq.nl>
+ * Copyright (c) 2005 Ed Schouten <ed at FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/usb/uxb360gp_rdesc.h,v 1.2 2005/12/31 04:38:50 mux Exp $
+ * $FreeBSD: src/sys/dev/usb/uxb360gp_rdesc.h,v 1.3 2008/05/24 18:35:55 ed Exp $
  */
 
 /*

==== //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc.h#4 (text+ko) ====

@@ -31,12 +31,15 @@
  *
  *	@(#)fdesc.h	8.5 (Berkeley) 1/21/94
  *
- * $FreeBSD: src/sys/fs/fdescfs/fdesc.h,v 1.20 2005/02/10 12:09:15 phk Exp $
+ * $FreeBSD: src/sys/fs/fdescfs/fdesc.h,v 1.21 2008/05/24 14:51:30 lulf Exp $
  */
 
 #ifdef _KERNEL
+/* Private mount flags for fdescfs. */
+#define FMNT_UNMOUNTF 0x01
 struct fdescmount {
 	struct vnode	*f_root;	/* Root node */
+	int flags;
 };
 
 #define FD_ROOT		1
@@ -55,10 +58,12 @@
 	int		fd_ix;		/* filesystem index */
 };
 
+extern struct mtx fdesc_hashmtx;
 #define VFSTOFDESC(mp)	((struct fdescmount *)((mp)->mnt_data))
 #define	VTOFDESC(vp) ((struct fdescnode *)(vp)->v_data)
 
 extern vfs_init_t fdesc_init;
-extern int fdesc_allocvp(fdntype, int, struct mount *, struct vnode **,
-			      struct thread *);
+extern vfs_uninit_t fdesc_uninit;
+extern int fdesc_allocvp(fdntype, unsigned, int, struct mount *,
+    struct vnode **, struct thread *);
 #endif /* _KERNEL */

==== //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc_vfsops.c#8 (text+ko) ====

@@ -31,7 +31,7 @@
  *
  *	@(#)fdesc_vfsops.c	8.4 (Berkeley) 1/21/94
  *
- * $FreeBSD: src/sys/fs/fdescfs/fdesc_vfsops.c,v 1.58 2008/01/10 01:10:45 attilio Exp $
+ * $FreeBSD: src/sys/fs/fdescfs/fdesc_vfsops.c,v 1.59 2008/05/24 14:51:30 lulf Exp $
  */
 
 /*
@@ -85,18 +85,30 @@
 	if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS))
 		return (EOPNOTSUPP);
 
-	error = fdesc_allocvp(Froot, FD_ROOT, mp, &rvp, td);
-	if (error)
-		return (error);
-
 	MALLOC(fmp, struct fdescmount *, sizeof(struct fdescmount),
 				M_FDESCMNT, M_WAITOK);	/* XXX */
+
+	/*
+	 * We need to initialize a few bits of our local mount point struct to
+	 * avoid confusion in allocvp.
+	 */
+	mp->mnt_data = (qaddr_t) fmp;
+	fmp->flags = 0;
+	error = fdesc_allocvp(Froot, -1, FD_ROOT, mp, &rvp, td);
+	if (error) {
+		free(fmp, M_FDESCMNT);
+		mp->mnt_data = 0;
+		return (error);
+	}
 	rvp->v_type = VDIR;
 	rvp->v_vflag |= VV_ROOT;
 	fmp->f_root = rvp;
+	VOP_UNLOCK(rvp, 0);
 	/* XXX -- don't mark as local to work around fts() problems */
 	/*mp->mnt_flag |= MNT_LOCAL;*/
-	mp->mnt_data =  fmp;
+	MNT_ILOCK(mp);
+	mp->mnt_kern_flag |= MNTK_MPSAFE;
+	MNT_IUNLOCK(mp);
 	vfs_getnewfsid(mp);
 
 	vfs_mountedfrom(mp, "fdescfs");
@@ -109,11 +121,19 @@
 	int mntflags;
 	struct thread *td;
 {
+	struct fdescmount *fmp;
+	caddr_t data;
 	int error;
 	int flags = 0;
 
-	if (mntflags & MNT_FORCE)
+	fmp = (struct fdescmount *)mp->mnt_data;
+	if (mntflags & MNT_FORCE) {
+		/* The hash mutex protects the private mount flags. */
+		mtx_lock(&fdesc_hashmtx);
+		fmp->flags |= FMNT_UNMOUNTF;
+		mtx_unlock(&fdesc_hashmtx);
 		flags |= FORCECLOSE;
+	}
 
 	/*
 	 * Clear out buffer cache.  I don't think we
@@ -127,10 +147,14 @@
 		return (error);
 
 	/*
-	 * Finally, throw away the fdescmount structure
+	 * Finally, throw away the fdescmount structure. Hold the hashmtx to
+	 * protect the fdescmount structure.
 	 */
-	free(mp->mnt_data, M_FDESCMNT);	/* XXX */
+	mtx_lock(&fdesc_hashmtx);
+	data = mp->mnt_data;
 	mp->mnt_data = 0;
+	mtx_unlock(&fdesc_hashmtx);
+	free(data, M_FDESCMNT);	/* XXX */
 
 	return (0);
 }
@@ -148,8 +172,7 @@
 	 * Return locked reference to root.
 	 */
 	vp = VFSTOFDESC(mp)->f_root;
-	VREF(vp);
-	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
+	vget(vp, LK_EXCLUSIVE | LK_RETRY, td);
 	*vpp = vp;
 	return (0);
 }
@@ -208,6 +231,7 @@
 	.vfs_mount =		fdesc_mount,
 	.vfs_root =		fdesc_root,
 	.vfs_statfs =		fdesc_statfs,
+	.vfs_uninit =		fdesc_uninit,
 	.vfs_unmount =		fdesc_unmount,
 };
 

==== //depot/projects/dtrace/src/sys/fs/fdescfs/fdesc_vnops.c#9 (text+ko) ====

@@ -31,7 +31,7 @@
  *
  *	@(#)fdesc_vnops.c	8.9 (Berkeley) 1/21/94
  *
- * $FreeBSD: src/sys/fs/fdescfs/fdesc_vnops.c,v 1.108 2008/04/04 09:37:57 kib Exp $
+ * $FreeBSD: src/sys/fs/fdescfs/fdesc_vnops.c,v 1.109 2008/05/24 14:51:30 lulf Exp $
  */
 
 /*
@@ -56,18 +56,15 @@
 
 #include <fs/fdescfs/fdesc.h>
 
-#define FDL_WANT	0x01
-#define FDL_LOCKED	0x02
-static int fdcache_lock;
-
 #define	NFDCACHE 4
 #define FD_NHASH(ix) \
 	(&fdhashtbl[(ix) & fdhash])
 static LIST_HEAD(fdhashhead, fdescnode) *fdhashtbl;
 static u_long fdhash;
 
+struct mtx fdesc_hashmtx;
+
 static vop_getattr_t	fdesc_getattr;
-static vop_inactive_t	fdesc_inactive;
 static vop_lookup_t	fdesc_lookup;
 static vop_open_t	fdesc_open;
 static vop_readdir_t	fdesc_readdir;
@@ -79,7 +76,6 @@
 
 	.vop_access =		VOP_NULL,
 	.vop_getattr =		fdesc_getattr,
-	.vop_inactive =		fdesc_inactive,
 	.vop_lookup =		fdesc_lookup,
 	.vop_open =		fdesc_open,
 	.vop_pathconf =		vop_stdpathconf,
@@ -88,6 +84,9 @@
 	.vop_setattr =		fdesc_setattr,
 };
 
+static void fdesc_insmntque_dtr(struct vnode *, void *);
+static void fdesc_remove_entry(struct fdescnode *);
+
 /*
  * Initialise cache headers
  */
@@ -96,81 +95,154 @@
 	struct vfsconf *vfsp;
 {
 
+	mtx_init(&fdesc_hashmtx, "fdescfs_hash", NULL, MTX_DEF);
 	fdhashtbl = hashinit(NFDCACHE, M_CACHE, &fdhash);
 	return (0);
 }
 
+/*
+ * Uninit ready for unload.
+ */
+int
+fdesc_uninit(vfsp)
+	struct vfsconf *vfsp;
+{
+
+	hashdestroy(fdhashtbl, M_CACHE, fdhash);
+	mtx_destroy(&fdesc_hashmtx);
+	return (0);
+}
+
+/*
+ * If allocating vnode fails, call this.
+ */
+static void
+fdesc_insmntque_dtr(struct vnode *vp, void *arg)
+{
+
+	vgone(vp);
+	vput(vp);
+}
+
+/*
+ * Remove an entry from the hash if it exists.
+ */
+static void
+fdesc_remove_entry(struct fdescnode *fd)
+{
+	struct fdhashhead *fc;
+	struct fdescnode *fd2;
+
+	fc = FD_NHASH(fd->fd_ix);
+	mtx_lock(&fdesc_hashmtx);
+	LIST_FOREACH(fd2, fc, fd_hash) {
+		if (fd == fd2) {
+			LIST_REMOVE(fd, fd_hash);
+			break;
+		}
+	}
+	mtx_unlock(&fdesc_hashmtx);
+}
+
 int
-fdesc_allocvp(ftype, ix, mp, vpp, td)
+fdesc_allocvp(ftype, fd_fd, ix, mp, vpp, td)
 	fdntype ftype;
+	unsigned fd_fd;
 	int ix;
 	struct mount *mp;
 	struct vnode **vpp;
 	struct thread *td;
 {
+	struct fdescmount *fmp;
 	struct fdhashhead *fc;
-	struct fdescnode *fd;
+	struct fdescnode *fd, *fd2;
+	struct vnode *vp, *vp2;
 	int error = 0;
 
 	fc = FD_NHASH(ix);
 loop:
+	mtx_lock(&fdesc_hashmtx);
+	/*
+	 * If a forced unmount is progressing, we need to drop it. The flags are
+	 * protected by the hashmtx.
+	 */
+	fmp = (struct fdescmount *)mp->mnt_data;
+	if (fmp == NULL || fmp->flags & FMNT_UNMOUNTF) {
+		mtx_unlock(&fdesc_hashmtx);
+		return (-1);
+	}
+
 	LIST_FOREACH(fd, fc, fd_hash) {
 		if (fd->fd_ix == ix && fd->fd_vnode->v_mount == mp) {
-			if (vget(fd->fd_vnode, LK_EXCLUSIVE | LK_CANRECURSE,
-			    td))
+			/* Get reference to vnode in case it's being free'd */
+			vp = fd->fd_vnode;
+			VI_LOCK(vp);
+			mtx_unlock(&fdesc_hashmtx);
+			if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK, td))
 				goto loop;
-			*vpp = fd->fd_vnode;
-			VOP_UNLOCK(*vpp, 0);
-			return (error);
+			*vpp = vp;
+			return (0);
 		}
 	}
+	mtx_unlock(&fdesc_hashmtx);
 
-	/*
-	 * otherwise lock the array while we call getnewvnode
-	 * since that can block.
-	 */
-	if (fdcache_lock & FDL_LOCKED) {
-		fdcache_lock |= FDL_WANT;
-		(void) tsleep( &fdcache_lock, PINOD, "fdalvp", 0);
-		goto loop;
-	}
-	fdcache_lock |= FDL_LOCKED;
-
-	/*
-	 * Do the MALLOC before the getnewvnode since doing so afterward
-	 * might cause a bogus v_data pointer to get dereferenced
-	 * elsewhere if MALLOC should block.
-	 */
 	MALLOC(fd, struct fdescnode *, sizeof(struct fdescnode), M_TEMP, M_WAITOK);
 
-	error = getnewvnode("fdescfs", mp, &fdesc_vnodeops, vpp);
+	error = getnewvnode("fdescfs", mp, &fdesc_vnodeops, &vp);
 	if (error) {
 		FREE(fd, M_TEMP);
-		goto out;
+		return (error);
 	}
-	(*vpp)->v_data = fd;
-	fd->fd_vnode = *vpp;
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
+	vp->v_data = fd;
+	fd->fd_vnode = vp;
 	fd->fd_type = ftype;
-	fd->fd_fd = -1;
+	fd->fd_fd = fd_fd;
 	fd->fd_ix = ix;
-	/* XXX: vnode should be locked here */
-	error = insmntque(*vpp, mp); /* XXX: Too early for mpsafe fs */
+	error = insmntque1(vp, mp, fdesc_insmntque_dtr, NULL);
 	if (error != 0) {
-		free(fd, M_TEMP);
 		*vpp = NULLVP;
-		goto out;
+		return (error);
 	}
-	LIST_INSERT_HEAD(fc, fd, fd_hash);
 
-out:
-	fdcache_lock &= ~FDL_LOCKED;
+	/* Make sure that someone didn't beat us when inserting the vnode. */
+	mtx_lock(&fdesc_hashmtx);
+	/*
+	 * If a forced unmount is progressing, we need to drop it. The flags are
+	 * protected by the hashmtx.
+	 */
+	fmp = (struct fdescmount *)mp->mnt_data;
+	if (fmp == NULL || fmp->flags & FMNT_UNMOUNTF) {
+		mtx_unlock(&fdesc_hashmtx);
+		vgone(vp);
+		vput(vp);
+		*vpp = NULLVP;
+		return (-1);
+	}
 
-	if (fdcache_lock & FDL_WANT) {
-		fdcache_lock &= ~FDL_WANT;
-		wakeup( &fdcache_lock);
+	LIST_FOREACH(fd2, fc, fd_hash) {
+		if (fd2->fd_ix == ix && fd2->fd_vnode->v_mount == mp) {
+			/* Get reference to vnode in case it's being free'd */
+			vp2 = fd2->fd_vnode;
+			VI_LOCK(vp2);
+			mtx_unlock(&fdesc_hashmtx);
+			error = vget(vp2, LK_EXCLUSIVE | LK_INTERLOCK, td);
+			/* Someone beat us, dec use count and wait for reclaim */
+			vgone(vp);
+			vput(vp);
+			/* If we didn't get it, return no vnode. */
+			if (error)
+				vp2 = NULLVP;
+			*vpp = vp2;
+			return (error);
+		}
 	}
 
-	return (error);
+	/* If we came here, we can insert it safely. */
+	LIST_INSERT_HEAD(fc, fd, fd_hash);
+	mtx_unlock(&fdesc_hashmtx);
+	*vpp = vp;
+	return (0);
 }
 
 /*
@@ -230,13 +302,43 @@
 	if ((error = fget(td, fd, &fp)) != 0)
 		goto bad;
 
-	error = fdesc_allocvp(Fdesc, FD_DESC+fd, dvp->v_mount, &fvp, td);
-	fdrop(fp, td);
+	/* Check if we're looking up ourselves. */
+	if (VTOFDESC(dvp)->fd_ix == FD_DESC + fd) {
+		/*
+		 * In case we're holding the last reference to the file, the dvp
+		 * will be re-acquired.
+		 */
+		vhold(dvp);
+		VOP_UNLOCK(dvp, 0);
+		fdrop(fp, td);
+
+		/* Re-aquire the lock afterwards. */
+		vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE);
+		vdrop(dvp);
+		fvp = dvp;
+	} else {
+		/*
+		 * Unlock our root node (dvp) when doing this, since we might
+		 * deadlock since the vnode might be locked by another thread
+		 * and the root vnode lock will be obtained afterwards (in case
+		 * we're looking up the fd of the root vnode), which will be the
+		 * opposite lock order. Vhold the root vnode first so we don't
+		 * loose it.
+		 */
+		vhold(dvp);
+		VOP_UNLOCK(dvp, 0);
+		error = fdesc_allocvp(Fdesc, fd, FD_DESC + fd, dvp->v_mount,
+		    &fvp, td);
+		fdrop(fp, td);
+		/*
+		 * The root vnode must be locked last to prevent deadlock condition.
+		 */
+		vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE);
+		vdrop(dvp);
+	}
+	
 	if (error)
 		goto bad;
-	VTOFDESC(fvp)->fd_fd = fd;
-	if (fvp != dvp)
-		vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY);
 	*vpp = fvp;
 	return (0);
 
@@ -505,34 +607,18 @@
 }
 
 static int
-fdesc_inactive(ap)
-	struct vop_inactive_args /* {
-		struct vnode *a_vp;
-		struct thread *a_td;
-	} */ *ap;
-{
-	struct vnode *vp = ap->a_vp;
-
-	/*
-	 * Clear out the v_type field to avoid
-	 * nasty things happening in vgone().
-	 */
-	vp->v_type = VNON;
-	return (0);
-}
-
-static int
 fdesc_reclaim(ap)
 	struct vop_reclaim_args /* {
 		struct vnode *a_vp;
 	} */ *ap;
 {
-	struct vnode *vp = ap->a_vp;
-	struct fdescnode *fd = VTOFDESC(vp);
+	struct vnode *vp;
+	struct fdescnode *fd;
 
-	LIST_REMOVE(fd, fd_hash);
+ 	vp = ap->a_vp;
+ 	fd = VTOFDESC(vp);
+	fdesc_remove_entry(fd);
 	FREE(vp->v_data, M_TEMP);
-	vp->v_data = 0;
-
+	vp->v_data = NULL;
 	return (0);
 }

==== //depot/projects/dtrace/src/sys/i386/i386/exception.s#15 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/i386/exception.s,v 1.118 2007/12/07 08:20:16 jkoshy Exp $
+ * $FreeBSD: src/sys/i386/i386/exception.s,v 1.120 2008/05/24 19:29:02 bz Exp $
  */
 
 #include "opt_apic.h"
@@ -112,6 +112,10 @@
 	pushl $0; TRAP(T_OFLOW)
 IDTVEC(bnd)
 	pushl $0; TRAP(T_BOUND)
+#ifndef KDTRACE_HOOKS

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list