PERFORCE change 195000 for review
John Baldwin
jhb at FreeBSD.org
Mon Jun 20 00:53:59 UTC 2011
http://p4web.freebsd.org/@@195000?ac=10
Change 195000 by jhb at jhb_jhbbsd on 2011/06/20 00:53:15
IFC @194999
Affected files ...
.. //depot/projects/pci/sys/amd64/ia32/ia32_sigtramp.S#3 integrate
.. //depot/projects/pci/sys/boot/common/load_elf_obj.c#3 integrate
.. //depot/projects/pci/sys/boot/i386/libi386/biosacpi.c#2 integrate
.. //depot/projects/pci/sys/cam/ata/ata_da.c#4 integrate
.. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h#2 integrate
.. //depot/projects/pci/sys/conf/files.powerpc#4 integrate
.. //depot/projects/pci/sys/dev/acpica/acpi.c#6 integrate
.. //depot/projects/pci/sys/dev/acpica/acpi_pci.c#4 integrate
.. //depot/projects/pci/sys/dev/pccbb/pccbb.c#2 integrate
.. //depot/projects/pci/sys/dev/usb/net/if_udav.c#3 integrate
.. //depot/projects/pci/sys/dev/usb/usbdevs#4 integrate
.. //depot/projects/pci/sys/fs/nfs/nfs_commonkrpc.c#4 integrate
.. //depot/projects/pci/sys/fs/nfs/nfsport.h#3 integrate
.. //depot/projects/pci/sys/fs/nfs/nfsproto.h#3 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clbio.c#4 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clkdtrace.c#1 branch
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clkrpc.c#3 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clnode.c#3 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clport.c#5 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clsubs.c#4 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_clvnops.c#4 integrate
.. //depot/projects/pci/sys/fs/nfsclient/nfs_kdtrace.h#1 branch
.. //depot/projects/pci/sys/fs/nfsserver/nfs_nfsdcache.c#2 integrate
.. //depot/projects/pci/sys/fs/nfsserver/nfs_nfsdkrpc.c#3 integrate
.. //depot/projects/pci/sys/kern/sys_process.c#3 integrate
.. //depot/projects/pci/sys/kgssapi/gss_impl.c#2 integrate
.. //depot/projects/pci/sys/modules/Makefile#5 integrate
.. //depot/projects/pci/sys/modules/dtrace/Makefile#3 integrate
.. //depot/projects/pci/sys/modules/dtrace/dtnfscl/Makefile#1 branch
.. //depot/projects/pci/sys/modules/dtrace/dtraceall/dtraceall.c#3 integrate
.. //depot/projects/pci/sys/modules/kgssapi_krb5/Makefile#2 integrate
.. //depot/projects/pci/sys/net/if_gre.c#2 integrate
.. //depot/projects/pci/sys/net/if_gre.h#2 integrate
.. //depot/projects/pci/sys/netinet/if_ether.c#3 integrate
.. //depot/projects/pci/sys/nfsclient/nfs_krpc.c#3 integrate
.. //depot/projects/pci/sys/nfsserver/nfs_srvkrpc.c#2 integrate
.. //depot/projects/pci/sys/powerpc/ps3/ohci_ps3.c#1 branch
.. //depot/projects/pci/sys/powerpc/ps3/ps3bus.c#3 integrate
.. //depot/projects/pci/sys/powerpc/ps3/ps3bus.h#2 integrate
.. //depot/projects/pci/sys/powerpc/ps3/ps3disk.c#1 branch
.. //depot/projects/pci/sys/rpc/rpc_generic.c#2 integrate
.. //depot/projects/pci/sys/rpc/rpcsec_gss.h#2 integrate
.. //depot/projects/pci/sys/sparc64/sparc64/intr_machdep.c#3 integrate
.. //depot/projects/pci/sys/sys/diskpc98.h#2 integrate
.. //depot/projects/pci/sys/sys/dtrace_bsd.h#3 integrate
.. //depot/projects/pci/sys/sys/param.h#5 integrate
.. //depot/projects/pci/sys/ufs/ffs/ffs_snapshot.c#3 integrate
.. //depot/projects/pci/sys/vm/vm_fault.c#3 integrate
.. //depot/projects/pci/sys/vm/vm_page.c#4 integrate
.. //depot/projects/pci/sys/vm/vm_page.h#4 integrate
.. //depot/projects/pci/sys/x86/x86/tsc.c#6 integrate
Differences ...
==== //depot/projects/pci/sys/amd64/ia32/ia32_sigtramp.S#3 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/ia32/ia32_sigtramp.S,v 1.6 2011/04/01 11:16:29 kib Exp $
+ * $FreeBSD: src/sys/amd64/ia32/ia32_sigtramp.S,v 1.7 2011/06/18 12:13:28 kib Exp $
*/
#include "opt_compat.h"
@@ -79,8 +79,20 @@
jmp 1b
+/*
+ * The lcall $7,$0 emulator cannot use the call gate that does an
+ * inter-privilege transition. The reason is that the call gate
+ * does not disable interrupts, and, before the swapgs is
+ * executed, we would have a window where the ring 0 code is
+ * executed with the wrong gsbase.
+ *
+ * Instead, reflect the lcall $7,$0 back to ring 3 trampoline
+ * which sets up the frame for int $0x80.
+ */
ALIGN_TEXT
lcall_tramp:
+ cmpl $SYS_vfork,%eax
+ je 2f
pushl %ebp
movl %esp,%ebp
pushl 0x24(%ebp) /* arg 6 */
@@ -91,8 +103,19 @@
pushl 0x10(%ebp) /* arg 1 */
pushl 0xc(%ebp) /* gap */
int $0x80
- leave
+ leavel
+1:
lretl
+2:
+ /*
+ * vfork handling is special and relies on the libc stub saving
+ * the return ip in %ecx. If vfork failed, then there is no
+ * child which can corrupt the frame created by call gate.
+ */
+ int $0x80
+ jb 1b
+ addl $8,%esp
+ jmpl *%ecx
#endif
ALIGN_TEXT
==== //depot/projects/pci/sys/boot/common/load_elf_obj.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/common/load_elf_obj.c,v 1.4 2011/04/03 22:31:51 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/common/load_elf_obj.c,v 1.5 2011/06/19 13:35:41 kan Exp $");
#include <sys/param.h>
#include <sys/exec.h>
@@ -196,7 +196,7 @@
__elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, u_int64_t off)
{
Elf_Ehdr *hdr;
- Elf_Shdr *shdr;
+ Elf_Shdr *shdr, *cshdr, *lshdr;
vm_offset_t firstaddr, lastaddr;
int i, nsym, res, ret, shdrbytes, symstrindex;
@@ -294,12 +294,35 @@
/* Clear the whole area, including bss regions. */
kern_bzero(firstaddr, lastaddr - firstaddr);
- /* Now read it all in. */
- for (i = 0; i < hdr->e_shnum; i++) {
- if (shdr[i].sh_addr == 0 || shdr[i].sh_type == SHT_NOBITS)
- continue;
- if (kern_pread(ef->fd, (vm_offset_t)shdr[i].sh_addr,
- shdr[i].sh_size, (off_t)shdr[i].sh_offset) != 0) {
+ /* Figure section with the lowest file offset we haven't loaded yet. */
+ for (cshdr = NULL; /* none */; /* none */)
+ {
+ /*
+ * Find next section to load. The complexity of this loop is
+ * O(n^2), but with the number of sections being typically
+ * small, we do not care.
+ */
+ lshdr = cshdr;
+
+ for (i = 0; i < hdr->e_shnum; i++) {
+ if (shdr[i].sh_addr == 0 ||
+ shdr[i].sh_type == SHT_NOBITS)
+ continue;
+ /* Skip sections that were loaded already. */
+ if (lshdr != NULL &&
+ lshdr->sh_offset >= shdr[i].sh_offset)
+ continue;
+ /* Find section with smallest offset. */
+ if (cshdr == lshdr ||
+ cshdr->sh_offset > shdr[i].sh_offset)
+ cshdr = &shdr[i];
+ }
+
+ if (cshdr == lshdr)
+ break;
+
+ if (kern_pread(ef->fd, (vm_offset_t)cshdr->sh_addr,
+ cshdr->sh_size, (off_t)cshdr->sh_offset) != 0) {
printf("\nelf" __XSTRING(__ELF_WORD_SIZE)
"_obj_loadimage: read failed\n");
goto out;
==== //depot/projects/pci/sys/boot/i386/libi386/biosacpi.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/biosacpi.c,v 1.15 2010/11/08 21:50:45 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/biosacpi.c,v 1.16 2011/06/18 13:56:33 benl Exp $");
#include <stand.h>
#include <machine/stdarg.h>
@@ -61,7 +61,7 @@
return;
/* export values from the RSDP */
- sprintf(buf, "%p", VTOP(rsdp));
+ sprintf(buf, "%u", VTOP(rsdp));
setenv("hint.acpi.0.rsdp", buf, 1);
revision = rsdp->Revision;
if (revision == 0)
==== //depot/projects/pci/sys/cam/ata/ata_da.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.34 2011/06/14 17:10:32 gibbs Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.35 2011/06/18 22:26:58 kib Exp $");
#include "opt_ada.h"
#include "opt_ata.h"
@@ -818,7 +818,7 @@
int ret = -1;
struct cam_periph *periph;
- if (bp->bio_disk == NULL || bp->bio_disk->d_drv1)
+ if (bp->bio_disk == NULL || bp->bio_disk->d_drv1 == NULL)
return ENXIO;
periph = (struct cam_periph *)bp->bio_disk->d_drv1;
if (periph->path == NULL)
==== //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h#2 (text+ko) ====
@@ -65,7 +65,7 @@
* filling in ctf_sect_t structures and passing them to ctf_bufopen():
*/
typedef struct ctf_sect {
- char *cts_name; /* section name (if any) */
+ const char *cts_name; /* section name (if any) */
ulong_t cts_type; /* section type (ELF SHT_... value) */
ulong_t cts_flags; /* section flags (ELF SHF_... value) */
#if defined(sun)
==== //depot/projects/pci/sys/conf/files.powerpc#4 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.powerpc,v 1.130 2011/06/04 15:17:35 andreast Exp $
+# $FreeBSD: src/sys/conf/files.powerpc,v 1.132 2011/06/20 00:46:07 nwhitehorn Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -203,11 +203,13 @@
powerpc/powerpc/sys_machdep.c standard
powerpc/powerpc/uio_machdep.c standard
powerpc/ps3/ehci_ps3.c optional ps3 ehci
+powerpc/ps3/ohci_ps3.c optional ps3 ohci
powerpc/ps3/if_glc.c optional ps3 glc
powerpc/ps3/mmu_ps3.c optional ps3
powerpc/ps3/platform_ps3.c optional ps3
powerpc/ps3/ps3ata.c optional ps3 ps3ata
powerpc/ps3/ps3bus.c optional ps3
+powerpc/ps3/ps3disk.c optional ps3
powerpc/ps3/ps3pic.c optional ps3
powerpc/ps3/ps3_syscons.c optional ps3 sc
powerpc/ps3/ps3-hvcall.S optional ps3 sc
==== //depot/projects/pci/sys/dev/acpica/acpi.c#6 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.302 2011/06/10 12:30:16 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.303 2011/06/17 21:19:01 jhb Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
==== //depot/projects/pci/sys/dev/acpica/acpi_pci.c#4 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci.c,v 1.38 2011/01/18 14:58:44 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pci.c,v 1.39 2011/06/17 21:19:01 jhb Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/pci/sys/dev/pccbb/pccbb.c#2 (text+ko) ====
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.184 2011/01/12 19:53:56 mdf Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.186 2011/06/18 03:16:51 imp Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -800,24 +800,36 @@
* We have a shortish timeout of 500ms here. Some bridges do
* not generate a POWER_CYCLE event for 16-bit cards. In
* those cases, we have to cope the best we can, and having
- * only a short delay is better than the alternatives.
+ * only a short delay is better than the alternatives. Others
+ * raise the power cycle a smidge before it is really ready.
+ * We deal with those below.
*/
sane = 10;
while (!(cbb_get(sc, CBB_SOCKET_STATE) & CBB_STATE_POWER_CYCLE) &&
cnt == sc->powerintr && sane-- > 0)
msleep(&sc->powerintr, &sc->mtx, 0, "-", hz / 20);
mtx_unlock(&sc->mtx);
+
+ /*
+ * Relax for 100ms. Some bridges appear to assert this signal
+ * right away, but before the card has stabilized. Other
+ * cards need need more time to cope up reliabily.
+ * Experiments with troublesome setups show this to be a
+ * "cheap" way to enhance reliabilty. We need not do this for
+ * "off" since we don't touch the card after we turn it off.
+ */
+ pause("cbbPwr", min(hz / 10, 1));
+
/*
* The TOPIC95B requires a little bit extra time to get its
* act together, so delay for an additional 100ms. Also as
* documented below, it doesn't seem to set the POWER_CYCLE
* bit, so don't whine if it never came on.
*/
- if (sc->chipset == CB_TOPIC95) {
+ if (sc->chipset == CB_TOPIC95)
pause("cbb95B", hz / 10);
- } else if (sane <= 0) {
+ else if (sane <= 0)
device_printf(sc->dev, "power timeout, doom?\n");
- }
}
/*
==== //depot/projects/pci/sys/dev/usb/net/if_udav.c#3 (text+ko) ====
@@ -1,6 +1,6 @@
/* $NetBSD: if_udav.c,v 1.2 2003/09/04 15:17:38 tsutsui Exp $ */
/* $nabe: if_udav.c,v 1.3 2003/08/21 16:57:19 nabe Exp $ */
-/* $FreeBSD: src/sys/dev/usb/net/if_udav.c,v 1.17 2011/05/03 19:51:29 marius Exp $ */
+/* $FreeBSD: src/sys/dev/usb/net/if_udav.c,v 1.18 2011/06/19 08:34:10 hselasky Exp $ */
/*-
* Copyright (c) 2003
* Shingo WATANABE <nabe at nabechan.org>. All rights reserved.
@@ -44,7 +44,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/net/if_udav.c,v 1.17 2011/05/03 19:51:29 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/net/if_udav.c,v 1.18 2011/06/19 08:34:10 hselasky Exp $");
#include <sys/stdint.h>
#include <sys/stddef.h>
@@ -210,6 +210,7 @@
{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_ADM8515, 0)},
/* Kontron AG USB Ethernet */
{USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_DM9601, 0)},
+ {USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_JP1082, 0)},
};
static void
==== //depot/projects/pci/sys/dev/usb/usbdevs#4 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.511 2011/06/01 17:58:27 hselasky Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.512 2011/06/19 08:34:10 hselasky Exp $
/* $NetBSD: usbdevs,v 1.392 2004/12/29 08:38:44 imp Exp $ */
/*-
@@ -2014,6 +2014,7 @@
/* Kontron AG products */
product KONTRON DM9601 0x8101 USB Ethernet
+product KONTRON JP1082 0x9700 USB Ethernet
/* Konica Corp. Products */
product KONICA CAMERA 0x0720 Digital Color Camera
==== //depot/projects/pci/sys/fs/nfs/nfs_commonkrpc.c#4 (text+ko) ====
@@ -32,13 +32,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfs/nfs_commonkrpc.c,v 1.11 2011/05/15 20:52:43 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfs/nfs_commonkrpc.c,v 1.13 2011/06/19 22:08:55 rmacklem Exp $");
/*
* Socket operations for use by nfs
*/
#include "opt_inet6.h"
+#include "opt_kdtrace.h"
#include "opt_kgssapi.h"
#include "opt_nfs.h"
@@ -64,6 +65,28 @@
#include <fs/nfs/nfsport.h>
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+
+dtrace_nfsclient_nfs23_start_probe_func_t
+ dtrace_nfscl_nfs234_start_probe;
+
+dtrace_nfsclient_nfs23_done_probe_func_t
+ dtrace_nfscl_nfs234_done_probe;
+
+/*
+ * Registered probes by RPC type.
+ */
+uint32_t nfscl_nfs2_start_probes[NFS_NPROCS + 1];
+uint32_t nfscl_nfs2_done_probes[NFS_NPROCS + 1];
+
+uint32_t nfscl_nfs3_start_probes[NFS_NPROCS + 1];
+uint32_t nfscl_nfs3_done_probes[NFS_NPROCS + 1];
+
+uint32_t nfscl_nfs4_start_probes[NFS_NPROCS + 1];
+uint32_t nfscl_nfs4_done_probes[NFS_NPROCS + 1];
+#endif
+
NFSSTATESPINLOCK;
NFSREQSPINLOCK;
extern struct nfsstats newnfsstats;
@@ -300,9 +323,7 @@
client = nrp->nr_client;
nrp->nr_client = NULL;
mtx_unlock(&nrp->nr_mtx);
-#ifdef KGSSAPI
- rpc_gss_secpurge(client);
-#endif
+ rpc_gss_secpurge_call(client);
CLNT_CLOSE(client);
CLNT_RELEASE(client);
} else {
@@ -314,21 +335,18 @@
nfs_getauth(struct nfssockreq *nrp, int secflavour, char *clnt_principal,
char *srv_principal, gss_OID mech_oid, struct ucred *cred)
{
-#ifdef KGSSAPI
rpc_gss_service_t svc;
AUTH *auth;
#ifdef notyet
rpc_gss_options_req_t req_options;
#endif
-#endif
switch (secflavour) {
-#ifdef KGSSAPI
case RPCSEC_GSS_KRB5:
case RPCSEC_GSS_KRB5I:
case RPCSEC_GSS_KRB5P:
if (!mech_oid) {
- if (!rpc_gss_mech_to_oid("kerberosv5", &mech_oid))
+ if (!rpc_gss_mech_to_oid_call("kerberosv5", &mech_oid))
return (NULL);
}
if (secflavour == RPCSEC_GSS_KRB5)
@@ -344,7 +362,7 @@
req_options.input_channel_bindings = NULL;
req_options.enc_type = nfs_keytab_enctype;
- auth = rpc_gss_secfind(nrp->nr_client, cred,
+ auth = rpc_gss_secfind_call(nrp->nr_client, cred,
clnt_principal, srv_principal, mech_oid, svc,
&req_options);
#else
@@ -354,7 +372,7 @@
* principals. As such, that case cannot yet be handled.
*/
if (clnt_principal == NULL)
- auth = rpc_gss_secfind(nrp->nr_client, cred,
+ auth = rpc_gss_secfind_call(nrp->nr_client, cred,
srv_principal, mech_oid, svc);
else
auth = NULL;
@@ -362,7 +380,6 @@
if (auth != NULL)
return (auth);
/* fallthrough */
-#endif /* KGSSAPI */
case AUTH_SYS:
default:
return (authunix_create(cred));
@@ -568,6 +585,29 @@
if ((nd->nd_flag & ND_NFSV4) && procnum == NFSV4PROC_COMPOUND)
MALLOC(rep, struct nfsreq *, sizeof(struct nfsreq),
M_NFSDREQ, M_WAITOK);
+#ifdef KDTRACE_HOOKS
+ if (dtrace_nfscl_nfs234_start_probe != NULL) {
+ uint32_t probe_id;
+ int probe_procnum;
+
+ if (nd->nd_flag & ND_NFSV4) {
+ probe_id =
+ nfscl_nfs4_start_probes[nd->nd_procnum];
+ probe_procnum = nd->nd_procnum;
+ } else if (nd->nd_flag & ND_NFSV3) {
+ probe_id = nfscl_nfs3_start_probes[procnum];
+ probe_procnum = procnum;
+ } else {
+ probe_id =
+ nfscl_nfs2_start_probes[nd->nd_procnum];
+ probe_procnum = procnum;
+ }
+ if (probe_id != 0)
+ (dtrace_nfscl_nfs234_start_probe)
+ (probe_id, vp, nd->nd_mreq, cred,
+ probe_procnum);
+ }
+#endif
}
trycnt = 0;
tryagain:
@@ -762,6 +802,27 @@
}
}
+#ifdef KDTRACE_HOOKS
+ if (nmp != NULL && dtrace_nfscl_nfs234_done_probe != NULL) {
+ uint32_t probe_id;
+ int probe_procnum;
+
+ if (nd->nd_flag & ND_NFSV4) {
+ probe_id = nfscl_nfs4_done_probes[nd->nd_procnum];
+ probe_procnum = nd->nd_procnum;
+ } else if (nd->nd_flag & ND_NFSV3) {
+ probe_id = nfscl_nfs3_done_probes[procnum];
+ probe_procnum = procnum;
+ } else {
+ probe_id = nfscl_nfs2_done_probes[nd->nd_procnum];
+ probe_procnum = procnum;
+ }
+ if (probe_id != 0)
+ (dtrace_nfscl_nfs234_done_probe)(probe_id, vp,
+ nd->nd_mreq, cred, probe_procnum, 0);
+ }
+#endif
+
m_freem(nd->nd_mreq);
AUTH_DESTROY(auth);
if (rep != NULL)
==== //depot/projects/pci/sys/fs/nfs/nfsport.h#3 (text+ko) ====
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.23 2011/04/25 13:09:32 rmacklem Exp $
+ * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.24 2011/06/18 23:02:53 rmacklem Exp $
*/
#ifndef _NFS_NFSPORT_H_
@@ -267,6 +267,7 @@
* NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is
* one greater than the last number.
*/
+#ifndef NFS_V3NPROCS
#define NFS_V3NPROCS 22
#define NFSPROC_LOOKUPP 22
@@ -293,6 +294,7 @@
* Must be defined as one higher than the last Proc# above.
*/
#define NFSV4_NPROCS 41
+#endif /* NFS_V3NPROCS */
/*
* Stats structure
@@ -358,7 +360,9 @@
/*
* Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code.
*/
+#ifndef NFS_NPROCS
#define NFS_NPROCS NFSV4_NPROCS
+#endif
#include <fs/nfs/nfskpiport.h>
#include <fs/nfs/nfsdport.h>
==== //depot/projects/pci/sys/fs/nfs/nfsproto.h#3 (text+ko) ====
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/fs/nfs/nfsproto.h,v 1.3 2011/05/04 22:02:33 rmacklem Exp $
+ * $FreeBSD: src/sys/fs/nfs/nfsproto.h,v 1.4 2011/06/18 23:02:53 rmacklem Exp $
*/
#ifndef _NFS_NFSPROTO_H_
@@ -226,6 +226,48 @@
#define NFSPROC_COMMIT 21
/*
+ * The lower numbers -> 21 are used by NFSv2 and v3. These define higher
+ * numbers used by NFSv4.
+ * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is
+ * one greater than the last number.
+ */
+#ifndef NFS_V3NPROCS
+#define NFS_V3NPROCS 22
+
+#define NFSPROC_LOOKUPP 22
+#define NFSPROC_SETCLIENTID 23
+#define NFSPROC_SETCLIENTIDCFRM 24
+#define NFSPROC_LOCK 25
+#define NFSPROC_LOCKU 26
+#define NFSPROC_OPEN 27
+#define NFSPROC_CLOSE 28
+#define NFSPROC_OPENCONFIRM 29
+#define NFSPROC_LOCKT 30
+#define NFSPROC_OPENDOWNGRADE 31
+#define NFSPROC_RENEW 32
+#define NFSPROC_PUTROOTFH 33
+#define NFSPROC_RELEASELCKOWN 34
+#define NFSPROC_DELEGRETURN 35
+#define NFSPROC_RETDELEGREMOVE 36
+#define NFSPROC_RETDELEGRENAME1 37
+#define NFSPROC_RETDELEGRENAME2 38
+#define NFSPROC_GETACL 39
+#define NFSPROC_SETACL 40
+
+/*
+ * Must be defined as one higher than the last Proc# above.
+ */
+#define NFSV4_NPROCS 41
+#endif /* NFS_V3NPROCS */
+
+/*
+ * Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code.
+ */
+#ifndef NFS_NPROCS
+#define NFS_NPROCS NFSV4_NPROCS
+#endif
+
+/*
* NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure
* or Operation#. Since the NFS V4 Op #s go higher, use NFSV4OP_NOPS, which
* is one greater than the highest Op#.
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clbio.c#4 (text+ko) ====
@@ -33,7 +33,9 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.23 2011/06/01 21:00:28 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.24 2011/06/18 23:02:53 rmacklem Exp $");
+
+#include "opt_kdtrace.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -55,6 +57,7 @@
#include <fs/nfsclient/nfsmount.h>
#include <fs/nfsclient/nfs.h>
#include <fs/nfsclient/nfsnode.h>
+#include <fs/nfsclient/nfs_kdtrace.h>
extern int newnfs_directio_allow_mmap;
extern struct nfsstats newnfsstats;
@@ -399,6 +402,7 @@
goto out;
}
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
error = VOP_GETATTR(vp, &vattr, cred);
if (error)
goto out;
@@ -915,6 +919,7 @@
#endif
flush_and_restart:
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
error = ncl_vinvalbuf(vp, V_SAVE, td, 1);
if (error)
return (error);
@@ -928,6 +933,7 @@
*/
if (ioflag & IO_APPEND) {
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
error = VOP_GETATTR(vp, &vattr, cred);
if (error)
return (error);
@@ -1748,6 +1754,7 @@
mtx_lock(&np->n_mtx);
np->n_flag |= NWRITEERR;
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
mtx_unlock(&np->n_mtx);
}
bp->b_dirtyoff = bp->b_dirtyend = 0;
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clkrpc.c#3 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clkrpc.c,v 1.5 2011/05/15 20:52:43 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clkrpc.c,v 1.6 2011/06/19 22:08:55 rmacklem Exp $");
#include "opt_inet6.h"
#include "opt_kgssapi.h"
@@ -215,12 +215,9 @@
int
nfscbd_nfsd(struct thread *td, struct nfsd_nfscbd_args *args)
{
-#ifdef KGSSAPI
char principal[128];
int error;
-#endif
-#ifdef KGSSAPI
if (args != NULL) {
error = copyinstr(args->principal, principal,
sizeof(principal), NULL);
@@ -229,7 +226,6 @@
} else {
principal[0] = '\0';
}
-#endif
/*
* Only the first nfsd actually does any work. The RPC code
@@ -244,20 +240,16 @@
NFSD_UNLOCK();
-#ifdef KGSSAPI
if (principal[0] != '\0')
- rpc_gss_set_svc_name(principal, "kerberosv5",
+ rpc_gss_set_svc_name_call(principal, "kerberosv5",
GSS_C_INDEFINITE, NFS_CALLBCKPROG, NFSV4_CBVERS);
-#endif
nfscbd_pool->sp_minthreads = 4;
nfscbd_pool->sp_maxthreads = 4;
svc_run(nfscbd_pool);
-#ifdef KGSSAPI
- rpc_gss_clear_svc_name(NFS_CALLBCKPROG, NFSV4_CBVERS);
-#endif
+ rpc_gss_clear_svc_name_call(NFS_CALLBCKPROG, NFSV4_CBVERS);
NFSD_LOCK();
nfs_numnfscbd--;
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clnode.c#3 (text+ko) ====
@@ -33,7 +33,9 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clnode.c,v 1.13 2011/04/16 23:20:21 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clnode.c,v 1.14 2011/06/18 23:02:53 rmacklem Exp $");
+
+#include "opt_kdtrace.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -53,6 +55,7 @@
#include <fs/nfsclient/nfsnode.h>
#include <fs/nfsclient/nfsmount.h>
#include <fs/nfsclient/nfs.h>
+#include <fs/nfsclient/nfs_kdtrace.h>
#include <nfs/nfs_lock.h>
@@ -300,7 +303,9 @@
mtx_lock(&np->n_mtx);
for (i = 0; i < NFS_ACCESSCACHESIZE; i++)
np->n_accesscache[i].stamp = 0;
+ KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp);
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
mtx_unlock(&np->n_mtx);
}
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clport.c#5 (text+ko) ====
@@ -32,7 +32,9 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clport.c,v 1.24 2011/06/05 20:22:56 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clport.c,v 1.25 2011/06/18 23:02:53 rmacklem Exp $");
+
+#include "opt_kdtrace.h"
/*
* generally, I don't like #includes inside .h files, but it seems to
@@ -43,6 +45,26 @@
#include <netinet/if_ether.h>
#include <net/if_types.h>
+#include <fs/nfsclient/nfs_kdtrace.h>
+
+#ifdef KDTRACE_HOOKS
+dtrace_nfsclient_attrcache_flush_probe_func_t
+ dtrace_nfscl_attrcache_flush_done_probe;
+uint32_t nfscl_attrcache_flush_done_id;
+
+dtrace_nfsclient_attrcache_get_hit_probe_func_t
+ dtrace_nfscl_attrcache_get_hit_probe;
+uint32_t nfscl_attrcache_get_hit_id;
+
+dtrace_nfsclient_attrcache_get_miss_probe_func_t
+ dtrace_nfscl_attrcache_get_miss_probe;
+uint32_t nfscl_attrcache_get_miss_id;
+
+dtrace_nfsclient_attrcache_load_probe_func_t
+ dtrace_nfscl_attrcache_load_done_probe;
+uint32_t nfscl_attrcache_load_done_id;
+#endif /* !KDTRACE_HOOKS */
+
extern u_int32_t newnfs_true, newnfs_false, newnfs_xdrneg1;
extern struct vop_vector newnfs_vnodeops;
extern struct vop_vector newnfs_fifoops;
@@ -407,6 +429,7 @@
*/
vap->va_size = np->n_size;
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
} else if (np->n_flag & NMODIFIED) {
/*
* We've modified the file: Use the larger
@@ -439,9 +462,11 @@
* We detect this by for the mtime moving back. We invalidate the
* attrcache when this happens.
*/
- if (timespeccmp(&mtime_save, &vap->va_mtime, >))
+ if (timespeccmp(&mtime_save, &vap->va_mtime, >)) {
/* Size changed or mtime went backwards */
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
+ }
if (vaper != NULL) {
NFSBCOPY((caddr_t)vap, (caddr_t)vaper, sizeof(*vap));
if (np->n_flag & NCHG) {
@@ -451,6 +476,10 @@
vaper->va_mtime = np->n_mtim;
}
}
+#ifdef KDTRACE_HOOKS
+ if (np->n_attrstamp != 0)
+ KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, 0);
+#endif
NFSUNLOCKNODE(np);
return (0);
}
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clsubs.c#4 (text+ko) ====
@@ -33,7 +33,9 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clsubs.c,v 1.13 2011/05/15 20:52:43 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clsubs.c,v 1.14 2011/06/18 23:02:53 rmacklem Exp $");
+
+#include "opt_kdtrace.h"
/*
* These functions support the macros and help fiddle mbuf chains for
@@ -68,6 +70,7 @@
#include <fs/nfsclient/nfsnode.h>
#include <fs/nfsclient/nfsmount.h>
#include <fs/nfsclient/nfs.h>
+#include <fs/nfsclient/nfs_kdtrace.h>
#include <netinet/in.h>
@@ -238,6 +241,7 @@
#ifdef NFS_ACDEBUG
mtx_unlock(&Giant); /* ncl_printf() */
#endif
+ KDTRACE_NFS_ATTRCACHE_GET_MISS(vp);
return( ENOENT);
}
newnfsstats.attrcache_hits++;
@@ -267,6 +271,7 @@
#ifdef NFS_ACDEBUG
mtx_unlock(&Giant); /* ncl_printf() */
#endif
+ KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap);
return (0);
}
==== //depot/projects/pci/sys/fs/nfsclient/nfs_clvnops.c#4 (text+ko) ====
@@ -33,12 +33,13 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clvnops.c,v 1.44 2011/06/05 20:22:56 rmacklem Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clvnops.c,v 1.45 2011/06/18 23:02:53 rmacklem Exp $");
/*
* vnode op calls for Sun NFS version 2, 3 and 4
*/
+#include "opt_kdtrace.h"
#include "opt_inet.h"
#include <sys/param.h>
@@ -70,6 +71,7 @@
#include <fs/nfsclient/nfsnode.h>
#include <fs/nfsclient/nfsmount.h>
#include <fs/nfsclient/nfs.h>
+#include <fs/nfsclient/nfs_kdtrace.h>
#include <net/if.h>
#include <netinet/in.h>
@@ -77,6 +79,24 @@
#include <nfs/nfs_lock.h>
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+
+dtrace_nfsclient_accesscache_flush_probe_func_t
+ dtrace_nfscl_accesscache_flush_done_probe;
+uint32_t nfscl_accesscache_flush_done_id;
+
+dtrace_nfsclient_accesscache_get_probe_func_t
+ dtrace_nfscl_accesscache_get_hit_probe,
+ dtrace_nfscl_accesscache_get_miss_probe;
+uint32_t nfscl_accesscache_get_hit_id;
+uint32_t nfscl_accesscache_get_miss_id;
+
+dtrace_nfsclient_accesscache_load_probe_func_t
+ dtrace_nfscl_accesscache_load_done_probe;
+uint32_t nfscl_accesscache_load_done_id;
+#endif /* !KDTRACE_HOOKS */
+
/* Defs */
#define TRUE 1
#define FALSE 0
@@ -298,9 +318,15 @@
mtx_unlock(&np->n_mtx);
if (retmode != NULL)
*retmode = rmode;
+ KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, cred->cr_uid, rmode, 0);
} else if (NFS_ISV4(vp)) {
error = nfscl_maperr(td, error, (uid_t)0, (gid_t)0);
}
+#ifdef KDTRACE_HOOKS
+ if (error != 0)
+ KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, cred->cr_uid, 0,
+ error);
+#endif
return (error);
}
@@ -397,6 +423,14 @@
}
}
mtx_unlock(&np->n_mtx);
+#ifdef KDTRACE_HOOKS
+ if (gotahit != 0)
+ KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp,
+ ap->a_cred->cr_uid, mode);
+ else
+ KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp,
+ ap->a_cred->cr_uid, mode);
+#endif
if (gotahit == 0) {
/*
* Either a no, or a don't know. Go to the wire.
@@ -507,6 +541,7 @@
}
mtx_lock(&np->n_mtx);
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
if (vp->v_type == VDIR)
np->n_direofoffset = 0;
mtx_unlock(&np->n_mtx);
@@ -692,8 +727,10 @@
* is the cause of some caching/coherency issue that might
* crop up.)
*/
- if (VFSTONFS(vp->v_mount)->nm_negnametimeo == 0)
+ if (VFSTONFS(vp->v_mount)->nm_negnametimeo == 0) {
np->n_attrstamp = 0;
+ KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp);
+ }
if (np->n_flag & NWRITEERR) {
np->n_flag &= ~NWRITEERR;
error = np->n_error;
@@ -949,6 +986,7 @@
np->n_accesscache[i].stamp = 0;
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list