svn commit: r292387 - in projects/sendfile/sys: cam/ctl cddl/contrib/opensolaris/uts/common/fs/zfs cddl/dev/systrace compat/linux fs/fuse fs/nfsclient fs/smbfs kern netinet netinet6 security/mac vm
Gleb Smirnoff
glebius at FreeBSD.org
Wed Dec 16 23:53:19 UTC 2015
Author: glebius
Date: Wed Dec 16 23:53:16 2015
New Revision: 292387
URL: https://svnweb.freebsd.org/changeset/base/292387
Log:
Merge head r261119 through r292386.
Modified:
projects/sendfile/sys/cam/ctl/ctl_backend_block.c
projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
projects/sendfile/sys/cddl/dev/systrace/systrace.c
projects/sendfile/sys/compat/linux/linux_dtrace.h
projects/sendfile/sys/fs/fuse/fuse_vnops.c
projects/sendfile/sys/fs/nfsclient/nfs_clbio.c
projects/sendfile/sys/fs/smbfs/smbfs_io.c
projects/sendfile/sys/kern/kern_exec.c
projects/sendfile/sys/kern/kern_exit.c
projects/sendfile/sys/kern/kern_fork.c
projects/sendfile/sys/kern/kern_proc.c
projects/sendfile/sys/kern/kern_racct.c
projects/sendfile/sys/kern/kern_sig.c
projects/sendfile/sys/kern/kern_timeout.c
projects/sendfile/sys/kern/vfs_cache.c
projects/sendfile/sys/netinet/if_ether.c
projects/sendfile/sys/netinet/in_kdtrace.c
projects/sendfile/sys/netinet/in_kdtrace.h
projects/sendfile/sys/netinet/ip_carp.c
projects/sendfile/sys/netinet/sctp_cc_functions.c
projects/sendfile/sys/netinet6/nd6.c
projects/sendfile/sys/netinet6/nd6_nbr.c
projects/sendfile/sys/security/mac/mac_framework.c
projects/sendfile/sys/security/mac/mac_internal.h
projects/sendfile/sys/vm/vm_page.h
Directory Properties:
projects/sendfile/ (props changed)
projects/sendfile/sys/ (props changed)
projects/sendfile/sys/cddl/contrib/opensolaris/ (props changed)
Modified: projects/sendfile/sys/cam/ctl/ctl_backend_block.c
==============================================================================
--- projects/sendfile/sys/cam/ctl/ctl_backend_block.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/cam/ctl/ctl_backend_block.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -610,10 +610,10 @@ ctl_be_block_flush_file(struct ctl_be_bl
ctl_complete_beio(beio);
}
-SDT_PROBE_DEFINE1(cbb, kernel, read, file_start, "uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, write, file_start, "uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, read, file_done,"uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, write, file_done, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , read, file_start, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , write, file_start, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , read, file_done,"uint64_t");
+SDT_PROBE_DEFINE1(cbb, , write, file_done, "uint64_t");
static void
ctl_be_block_dispatch_file(struct ctl_be_block_lun *be_lun,
@@ -638,10 +638,10 @@ ctl_be_block_dispatch_file(struct ctl_be
bzero(&xuio, sizeof(xuio));
if (beio->bio_cmd == BIO_READ) {
- SDT_PROBE(cbb, kernel, read, file_start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, file_start);
xuio.uio_rw = UIO_READ;
} else {
- SDT_PROBE(cbb, kernel, write, file_start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, file_start);
xuio.uio_rw = UIO_WRITE;
}
xuio.uio_offset = beio->io_offset;
@@ -684,7 +684,7 @@ ctl_be_block_dispatch_file(struct ctl_be
error = VOP_READ(be_lun->vn, &xuio, flags, file_data->cred);
VOP_UNLOCK(be_lun->vn, 0);
- SDT_PROBE(cbb, kernel, read, file_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, file_done);
if (error == 0 && xuio.uio_resid > 0) {
/*
* If we red less then requested (EOF), then
@@ -733,7 +733,7 @@ ctl_be_block_dispatch_file(struct ctl_be
VOP_UNLOCK(be_lun->vn, 0);
vn_finished_write(mountpoint);
- SDT_PROBE(cbb, kernel, write, file_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, file_done);
}
mtx_lock(&be_lun->io_lock);
@@ -869,10 +869,10 @@ ctl_be_block_dispatch_zvol(struct ctl_be
bzero(&xuio, sizeof(xuio));
if (beio->bio_cmd == BIO_READ) {
- SDT_PROBE(cbb, kernel, read, file_start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, file_start);
xuio.uio_rw = UIO_READ;
} else {
- SDT_PROBE(cbb, kernel, write, file_start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, file_start);
xuio.uio_rw = UIO_WRITE;
}
xuio.uio_offset = beio->io_offset;
@@ -903,9 +903,9 @@ ctl_be_block_dispatch_zvol(struct ctl_be
error = ENXIO;
if (beio->bio_cmd == BIO_READ)
- SDT_PROBE(cbb, kernel, read, file_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, file_done);
else
- SDT_PROBE(cbb, kernel, write, file_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, file_done);
mtx_lock(&be_lun->io_lock);
devstat_end_transaction(beio->lun->disk_stats, beio->io_len,
@@ -1501,10 +1501,10 @@ ctl_be_block_cw_dispatch(struct ctl_be_b
}
}
-SDT_PROBE_DEFINE1(cbb, kernel, read, start, "uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, write, start, "uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, read, alloc_done, "uint64_t");
-SDT_PROBE_DEFINE1(cbb, kernel, write, alloc_done, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , read, start, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , write, start, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , read, alloc_done, "uint64_t");
+SDT_PROBE_DEFINE1(cbb, , write, alloc_done, "uint64_t");
static void
ctl_be_block_next(struct ctl_be_block_io *beio)
@@ -1549,9 +1549,9 @@ ctl_be_block_dispatch(struct ctl_be_bloc
lbalen = ARGS(io);
if (lbalen->flags & CTL_LLF_WRITE) {
- SDT_PROBE(cbb, kernel, write, start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, start);
} else {
- SDT_PROBE(cbb, kernel, read, start, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, start);
}
beio = ctl_alloc_beio(softc);
@@ -1638,10 +1638,10 @@ ctl_be_block_dispatch(struct ctl_be_bloc
* need to get the data from the user first.
*/
if (beio->bio_cmd == BIO_READ) {
- SDT_PROBE(cbb, kernel, read, alloc_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , read, alloc_done);
be_lun->dispatch(be_lun, beio);
} else {
- SDT_PROBE(cbb, kernel, write, alloc_done, 0, 0, 0, 0, 0);
+ SDT_PROBE0(cbb, , write, alloc_done);
#ifdef CTL_TIME_IO
getbinuptime(&io->io_hdr.dma_start_bt);
#endif
Modified: projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -5775,27 +5775,21 @@ zfs_getpages(struct vnode *vp, vm_page_t
off_t startoff, endoff;
int i, error;
vm_pindex_t reqstart, reqend;
- int pcount, lsize, reqsize, size;
+ int lsize, reqsize, size;
- if (rbehind)
- *rbehind = 0;
- if (rahead)
- *rahead = 0;
+ object = m[0]->object;
+ error = 0;
ZFS_ENTER(zfsvfs);
ZFS_VERIFY_ZP(zp);
- pcount = OFF_TO_IDX(round_page(count));
-
zfs_vmobject_wlock(object);
- if (m[pcount - 1]->valid != 0 && --pcount == 0) {
+ if (m[count - 1]->valid != 0 && --count == 0) {
zfs_vmobject_wunlock(object);
- ZFS_EXIT(zfsvfs);
- return (zfs_vm_pagerret_ok);
+ goto out;
}
- object = m[0]->object;
- mlast = m[pcount - 1];
+ mlast = m[count - 1];
if (IDX_TO_OFF(mlast->pindex) >=
object->un_pager.vnp.vnp_size) {
@@ -5813,10 +5807,9 @@ zfs_getpages(struct vnode *vp, vm_page_t
IDX_TO_OFF(mlast->pindex);
zfs_vmobject_wunlock(object);
- error = 0;
- for (i = 0; i < pcount; i++) {
+ for (i = 0; i < count; i++) {
size = PAGE_SIZE;
- if (i == pcount - 1)
+ if (i == count - 1)
size = lsize;
va = zfs_map_page(m[i], &sf);
error = dmu_read(os, zp->z_id, IDX_TO_OFF(m[i]->pindex),
@@ -5829,14 +5822,21 @@ zfs_getpages(struct vnode *vp, vm_page_t
}
zfs_vmobject_wlock(object);
- for (i = 0; i < pcount; i++)
+ for (i = 0; i < count; i++)
m[i]->valid = VM_PAGE_BITS_ALL;
zfs_vmobject_wunlock(object);
out:
ZFS_ACCESSTIME_STAMP(zfsvfs, zp);
ZFS_EXIT(zfsvfs);
- return (error ? zfs_vm_pagerret_error : zfs_vm_pagerret_ok);
+ if (error == 0) {
+ if (rbehind)
+ *rbehind = 0;
+ if (rahead)
+ *rahead = 0;
+ return (zfs_vm_pagerret_ok);
+ } else
+ return (zfs_vm_pagerret_error);
}
static int
Modified: projects/sendfile/sys/cddl/dev/systrace/systrace.c
==============================================================================
--- projects/sendfile/sys/cddl/dev/systrace/systrace.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/cddl/dev/systrace/systrace.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -19,9 +19,6 @@
* CDDL HEADER END
*
* Portions Copyright 2006-2008 John Birrell jb at freebsd.org
- *
- * $FreeBSD$
- *
*/
/*
@@ -30,6 +27,8 @@
*/
#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
@@ -50,8 +49,8 @@
#include <sys/proc.h>
#include <sys/selinfo.h>
#include <sys/smp.h>
-#include <sys/sysproto.h>
#include <sys/sysent.h>
+#include <sys/sysproto.h>
#include <sys/uio.h>
#include <sys/unistd.h>
#include <machine/stdarg.h>
@@ -134,26 +133,17 @@ extern const char *freebsd32_syscallname
#error 1 << SYSTRACE_SHIFT must exceed number of system calls
#endif
-static d_open_t systrace_open;
-static int systrace_unload(void);
-static void systrace_getargdesc(void *, dtrace_id_t, void *, dtrace_argdesc_t *);
+static void systrace_load(void *);
+static void systrace_unload(void *);
+
+static void systrace_getargdesc(void *, dtrace_id_t, void *,
+ dtrace_argdesc_t *);
static void systrace_provide(void *, dtrace_probedesc_t *);
static void systrace_destroy(void *, dtrace_id_t, void *);
static void systrace_enable(void *, dtrace_id_t, void *);
static void systrace_disable(void *, dtrace_id_t, void *);
-static void systrace_load(void *);
-
-static struct cdevsw systrace_cdevsw = {
- .d_version = D_VERSION,
- .d_open = systrace_open,
-#ifndef NATIVE_ABI
- .d_name = "systrace_" MODNAME,
-#else
- .d_name = "systrace",
-#endif
-};
-static union {
+static union {
const char **p_constnames;
char **pp_syscallnames;
} uglyhack = { SYSCALLNAMES };
@@ -179,7 +169,6 @@ static dtrace_pops_t systrace_pops = {
systrace_destroy
};
-static struct cdev *systrace_cdev;
static dtrace_provider_id_t systrace_id;
typedef void (*systrace_dtrace_probe_t)(dtrace_id_t, uintptr_t, uintptr_t,
@@ -194,29 +183,31 @@ typedef void (*systrace_dtrace_probe_t)(
* compat syscall from something like Linux.
*/
static void
-systrace_probe(u_int32_t id, int sysnum, struct sysent *sysent, void *params,
+systrace_probe(uint32_t id, int sysnum, struct sysent *sysent, void *params,
int ret)
{
+ uint64_t uargs[8];
systrace_dtrace_probe_t probe;
- int n_args = 0;
- u_int64_t uargs[8];
+ int n_args = 0;
memset(uargs, 0, sizeof(uargs));
+
/*
* Check if this syscall has an argument conversion function
* registered.
*/
- if (params && sysent->sy_systrace_args_func != NULL) {
+ if (params != NULL && sysent->sy_systrace_args_func != NULL) {
/*
* Convert the syscall parameters using the registered
* function.
*/
- (*sysent->sy_systrace_args_func)(sysnum, params, uargs, &n_args);
- } else if (params) {
+ (*sysent->sy_systrace_args_func)(sysnum, params, uargs,
+ &n_args);
+ } else if (params != NULL) {
/*
* Use the built-in system call argument conversion
* function to translate the syscall structure fields
- * into the array of 64-bit values that DTrace
+ * into the array of 64-bit values that DTrace
* expects.
*/
systrace_args(sysnum, params, uargs, &n_args);
@@ -237,21 +228,20 @@ systrace_probe(u_int32_t id, int sysnum,
#endif
static void
-systrace_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
+systrace_getargdesc(void *arg, dtrace_id_t id, void *parg,
+ dtrace_argdesc_t *desc)
{
int sysnum = SYSTRACE_SYSNUM((uintptr_t)parg);
if (SYSTRACE_ISENTRY((uintptr_t)parg))
- systrace_entry_setargdesc(sysnum, desc->dtargd_ndx,
+ systrace_entry_setargdesc(sysnum, desc->dtargd_ndx,
desc->dtargd_native, sizeof(desc->dtargd_native));
else
- systrace_return_setargdesc(sysnum, desc->dtargd_ndx,
+ systrace_return_setargdesc(sysnum, desc->dtargd_ndx,
desc->dtargd_native, sizeof(desc->dtargd_native));
if (desc->dtargd_native[0] == '\0')
desc->dtargd_ndx = DTRACE_ARGNONE;
-
- return;
}
static void
@@ -267,11 +257,13 @@ systrace_provide(void *arg, dtrace_probe
uglyhack.pp_syscallnames[i], "entry") != 0)
continue;
- (void) dtrace_probe_create(systrace_id, MODNAME, uglyhack.pp_syscallnames[i],
- "entry", SYSTRACE_ARTIFICIAL_FRAMES,
+ (void)dtrace_probe_create(systrace_id, MODNAME,
+ uglyhack.pp_syscallnames[i], "entry",
+ SYSTRACE_ARTIFICIAL_FRAMES,
(void *)((uintptr_t)SYSTRACE_ENTRY(i)));
- (void) dtrace_probe_create(systrace_id, MODNAME, uglyhack.pp_syscallnames[i],
- "return", SYSTRACE_ARTIFICIAL_FRAMES,
+ (void)dtrace_probe_create(systrace_id, MODNAME,
+ uglyhack.pp_syscallnames[i], "return",
+ SYSTRACE_ARTIFICIAL_FRAMES,
(void *)((uintptr_t)SYSTRACE_RETURN(i)));
}
}
@@ -318,14 +310,11 @@ systrace_disable(void *arg, dtrace_id_t
}
static void
-systrace_load(void *dummy)
+systrace_load(void *dummy __unused)
{
- /* Create the /dev/dtrace/systrace entry. */
- systrace_cdev = make_dev(&systrace_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600,
- DEVNAME);
- if (dtrace_register(PROVNAME, &systrace_attr, DTRACE_PRIV_USER,
- NULL, &systrace_pops, NULL, &systrace_id) != 0)
+ if (dtrace_register(PROVNAME, &systrace_attr, DTRACE_PRIV_USER, NULL,
+ &systrace_pops, NULL, &systrace_id) != 0)
return;
#ifdef NATIVE_ABI
@@ -333,29 +322,24 @@ systrace_load(void *dummy)
#endif
}
-
-static int
-systrace_unload()
+static void
+systrace_unload(void *dummy __unused)
{
- int error = 0;
-
- if ((error = dtrace_unregister(systrace_id)) != 0)
- return (error);
#ifdef NATIVE_ABI
systrace_probe_func = NULL;
#endif
- destroy_dev(systrace_cdev);
-
- return (error);
+ if (dtrace_unregister(systrace_id) != 0)
+ return;
}
static int
systrace_modevent(module_t mod __unused, int type, void *data __unused)
{
- int error = 0;
+ int error;
+ error = 0;
switch (type) {
case MOD_LOAD:
break;
@@ -374,14 +358,10 @@ systrace_modevent(module_t mod __unused,
return (error);
}
-static int
-systrace_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused, struct thread *td __unused)
-{
- return (0);
-}
-
-SYSINIT(systrace_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, systrace_load, NULL);
-SYSUNINIT(systrace_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, systrace_unload, NULL);
+SYSINIT(systrace_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY,
+ systrace_load, NULL);
+SYSUNINIT(systrace_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY,
+ systrace_unload, NULL);
#ifdef LINUX_SYSTRACE
DEV_MODULE(systrace_linux, systrace_modevent, NULL);
Modified: projects/sendfile/sys/compat/linux/linux_dtrace.h
==============================================================================
--- projects/sendfile/sys/compat/linux/linux_dtrace.h Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/compat/linux/linux_dtrace.h Wed Dec 16 23:53:16 2015 (r292387)
@@ -72,8 +72,8 @@
#define LIN_SDT_PROBE_DEFINE5(a, b, c, d, e, f, g, h) _LIN_SDT_PROBE_DEFINE5(\
LINUX_DTRACE, a, b, c, d, e, f, g, h)
-#define LIN_SDT_PROBE0(a, b, c) SDT_PROBE1(LINUX_DTRACE, a, b, \
- c, 0)
+#define LIN_SDT_PROBE0(a, b, c) SDT_PROBE0(LINUX_DTRACE, a, b, \
+ c)
#define LIN_SDT_PROBE1(a, b, c, d) SDT_PROBE1(LINUX_DTRACE, a, b, \
c, d)
#define LIN_SDT_PROBE2(a, b, c, d, e) SDT_PROBE2(LINUX_DTRACE, a, b, \
Modified: projects/sendfile/sys/fs/fuse/fuse_vnops.c
==============================================================================
--- projects/sendfile/sys/fs/fuse/fuse_vnops.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/fs/fuse/fuse_vnops.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -1752,17 +1752,12 @@ fuse_vnop_getpages(struct vop_getpages_a
td = curthread; /* XXX */
cred = curthread->td_ucred; /* XXX */
pages = ap->a_m;
- count = ap->a_count;
- if (ap->a_rbehind)
- *ap->a_rbehind = 0;
- if (ap->a_rahead)
- *ap->a_rahead = 0;
+ npages = ap->a_count;
if (!fsess_opt_mmap(vnode_mount(vp))) {
FS_DEBUG("called on non-cacheable vnode??\n");
return (VM_PAGER_ERROR);
}
- npages = btoc(count);
/*
* If the last page is partially valid, just return it and allow
@@ -1773,13 +1768,8 @@ fuse_vnop_getpages(struct vop_getpages_a
* but still somewhat disconnected from the kernel?
*/
VM_OBJECT_WLOCK(vp->v_object);
- if (pages[npages - 1]->valid != 0) {
- if (--npages == 0) {
- VM_OBJECT_WUNLOCK(vp->v_object);
- return (VM_PAGER_OK);
- }
- count = npages << PAGE_SHIFT;
- }
+ if (pages[npages - 1]->valid != 0 && --npages == 0)
+ goto out;
VM_OBJECT_WUNLOCK(vp->v_object);
/*
@@ -1793,6 +1783,7 @@ fuse_vnop_getpages(struct vop_getpages_a
PCPU_INC(cnt.v_vnodein);
PCPU_ADD(cnt.v_vnodepgsin, npages);
+ count = npages << PAGE_SHIFT;
iov.iov_base = (caddr_t)kva;
iov.iov_len = count;
uio.uio_iov = &iov;
@@ -1852,8 +1843,13 @@ fuse_vnop_getpages(struct vop_getpages_a
}
}
fuse_vm_page_unlock_queues();
+out:
VM_OBJECT_WUNLOCK(vp->v_object);
- return 0;
+ if (ap->a_rbehind)
+ *ap->a_rbehind = 0;
+ if (ap->a_rahead)
+ *ap->a_rahead = 0;
+ return (VM_PAGER_OK);
}
/*
Modified: projects/sendfile/sys/fs/nfsclient/nfs_clbio.c
==============================================================================
--- projects/sendfile/sys/fs/nfsclient/nfs_clbio.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/fs/nfsclient/nfs_clbio.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -100,11 +100,7 @@ ncl_getpages(struct vop_getpages_args *a
cred = curthread->td_ucred; /* XXX */
nmp = VFSTONFS(vp->v_mount);
pages = ap->a_m;
- count = ap->a_count;
- if (ap->a_rbehind)
- *ap->a_rbehind = 0;
- if (ap->a_rahead)
- *ap->a_rahead = 0;
+ npages = ap->a_count;
if ((object = vp->v_object) == NULL) {
ncl_printf("nfs_getpages: called with non-merged cache vnode??\n");
@@ -130,8 +126,6 @@ ncl_getpages(struct vop_getpages_args *a
} else
mtx_unlock(&nmp->nm_mtx);
- npages = btoc(count);
-
/*
* If the requested page is partially valid, just return it and
* allow the pager to zero-out the blanks. Partially valid pages
@@ -140,13 +134,8 @@ ncl_getpages(struct vop_getpages_args *a
* XXXGL: is that true for NFS, where short read can occur???
*/
VM_OBJECT_WLOCK(object);
- if (pages[npages - 1]->valid != 0) {
- if (--npages == 0) {
- VM_OBJECT_WUNLOCK(object);
- return (VM_PAGER_OK);
- }
- count = npages << PAGE_SHIFT;
- }
+ if (pages[npages - 1]->valid != 0 && --npages == 0)
+ goto out;
VM_OBJECT_WUNLOCK(object);
/*
@@ -160,6 +149,7 @@ ncl_getpages(struct vop_getpages_args *a
PCPU_INC(cnt.v_vnodein);
PCPU_ADD(cnt.v_vnodepgsin, npages);
+ count = npages << PAGE_SHIFT;
iov.iov_base = (caddr_t) kva;
iov.iov_len = count;
uio.uio_iov = &iov;
@@ -221,8 +211,13 @@ ncl_getpages(struct vop_getpages_args *a
;
}
}
+out:
VM_OBJECT_WUNLOCK(object);
- return (0);
+ if (ap->a_rbehind)
+ *ap->a_rbehind = 0;
+ if (ap->a_rahead)
+ *ap->a_rahead = 0;
+ return (VM_PAGER_OK);
}
/*
Modified: projects/sendfile/sys/fs/smbfs/smbfs_io.c
==============================================================================
--- projects/sendfile/sys/fs/smbfs/smbfs_io.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/fs/smbfs/smbfs_io.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -449,12 +449,7 @@ smbfs_getpages(ap)
np = VTOSMB(vp);
smp = VFSTOSMBFS(vp->v_mount);
pages = ap->a_m;
- count = ap->a_count;
- npages = btoc(count);
- if (ap->a_rbehind)
- *ap->a_rbehind = 0;
- if (ap->a_rahead)
- *ap->a_rahead = 0;
+ npages = ap->a_count;
/*
* If the requested page is partially valid, just return it and
@@ -464,13 +459,8 @@ smbfs_getpages(ap)
* XXXGL: is that true for SMB filesystem?
*/
VM_OBJECT_WLOCK(object);
- if (pages[npages - 1]->valid != 0) {
- if (--npages == 0) {
- VM_OBJECT_WUNLOCK(object);
- return (VM_PAGER_OK);
- }
- count = npages << PAGE_SHIFT;
- }
+ if (pages[npages - 1]->valid != 0 && --npages == 0)
+ goto out;
VM_OBJECT_WUNLOCK(object);
scred = smbfs_malloc_scred();
@@ -483,6 +473,7 @@ smbfs_getpages(ap)
PCPU_INC(cnt.v_vnodein);
PCPU_ADD(cnt.v_vnodepgsin, npages);
+ count = npages << PAGE_SHIFT;
iov.iov_base = (caddr_t) kva;
iov.iov_len = count;
uio.uio_iov = &iov;
@@ -536,8 +527,13 @@ smbfs_getpages(ap)
;
}
}
+out:
VM_OBJECT_WUNLOCK(object);
- return 0;
+ if (ap->a_rbehind)
+ *ap->a_rbehind = 0;
+ if (ap->a_rahead)
+ *ap->a_rahead = 0;
+ return (VM_PAGER_OK);
#endif /* SMBFS_RWGENERIC */
}
Modified: projects/sendfile/sys/kern/kern_exec.c
==============================================================================
--- projects/sendfile/sys/kern/kern_exec.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_exec.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -94,9 +94,9 @@ dtrace_execexit_func_t dtrace_fasttrap_e
#endif
SDT_PROVIDER_DECLARE(proc);
-SDT_PROBE_DEFINE1(proc, kernel, , exec, "char *");
-SDT_PROBE_DEFINE1(proc, kernel, , exec__failure, "int");
-SDT_PROBE_DEFINE1(proc, kernel, , exec__success, "char *");
+SDT_PROBE_DEFINE1(proc, , , exec, "char *");
+SDT_PROBE_DEFINE1(proc, , , exec__failure, "int");
+SDT_PROBE_DEFINE1(proc, , , exec__success, "char *");
MALLOC_DEFINE(M_PARGS, "proc-args", "Process arguments");
@@ -423,7 +423,7 @@ do_execve(td, args, mac_p)
| AUDITVNODE1, UIO_SYSSPACE, args->fname, td);
}
- SDT_PROBE1(proc, kernel, , exec, args->fname);
+ SDT_PROBE1(proc, , , exec, args->fname);
interpret:
if (args->fname != NULL) {
@@ -851,7 +851,7 @@ interpret:
vfs_mark_atime(imgp->vp, td->td_ucred);
- SDT_PROBE1(proc, kernel, , exec__success, args->fname);
+ SDT_PROBE1(proc, , , exec__success, args->fname);
VOP_UNLOCK(imgp->vp, 0);
done1:
@@ -923,7 +923,7 @@ exec_fail:
p->p_flag &= ~P_INEXEC;
PROC_UNLOCK(p);
- SDT_PROBE1(proc, kernel, , exec__failure, error);
+ SDT_PROBE1(proc, , , exec__failure, error);
done2:
#ifdef MAC
Modified: projects/sendfile/sys/kern/kern_exit.c
==============================================================================
--- projects/sendfile/sys/kern/kern_exit.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_exit.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -94,7 +94,7 @@ dtrace_execexit_func_t dtrace_fasttrap_e
#endif
SDT_PROVIDER_DECLARE(proc);
-SDT_PROBE_DEFINE1(proc, kernel, , exit, "int");
+SDT_PROBE_DEFINE1(proc, , , exit, "int");
/* Hook for NFS teardown procedure. */
void (*nlminfo_release_p)(struct proc *p);
@@ -569,7 +569,7 @@ exit1(struct thread *td, int rval, int s
reason = CLD_DUMPED;
else if (WIFSIGNALED(signo))
reason = CLD_KILLED;
- SDT_PROBE1(proc, kernel, , exit, reason);
+ SDT_PROBE1(proc, , , exit, reason);
#endif
/*
Modified: projects/sendfile/sys/kern/kern_fork.c
==============================================================================
--- projects/sendfile/sys/kern/kern_fork.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_fork.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -89,8 +89,7 @@ dtrace_fork_func_t dtrace_fasttrap_fork;
#endif
SDT_PROVIDER_DECLARE(proc);
-SDT_PROBE_DEFINE3(proc, kernel, , create, "struct proc *",
- "struct proc *", "int");
+SDT_PROBE_DEFINE3(proc, , , create, "struct proc *", "struct proc *", "int");
#ifndef _SYS_SYSPROTO_H_
struct fork_args {
@@ -748,7 +747,7 @@ do_fork(struct thread *td, int flags, st
* Tell any interested parties about the new process.
*/
knote_fork(&p1->p_klist, p2->p_pid);
- SDT_PROBE3(proc, kernel, , create, p2, p1, flags);
+ SDT_PROBE3(proc, , , create, p2, p1, flags);
/*
* Wait until debugger is attached to child.
Modified: projects/sendfile/sys/kern/kern_proc.c
==============================================================================
--- projects/sendfile/sys/kern/kern_proc.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_proc.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -92,18 +92,15 @@ __FBSDID("$FreeBSD$");
#endif
SDT_PROVIDER_DEFINE(proc);
-SDT_PROBE_DEFINE4(proc, kernel, ctor, entry, "struct proc *", "int",
- "void *", "int");
-SDT_PROBE_DEFINE4(proc, kernel, ctor, return, "struct proc *", "int",
- "void *", "int");
-SDT_PROBE_DEFINE4(proc, kernel, dtor, entry, "struct proc *", "int",
- "void *", "struct thread *");
-SDT_PROBE_DEFINE3(proc, kernel, dtor, return, "struct proc *", "int",
- "void *");
-SDT_PROBE_DEFINE3(proc, kernel, init, entry, "struct proc *", "int",
+SDT_PROBE_DEFINE4(proc, , ctor, entry, "struct proc *", "int", "void *",
"int");
-SDT_PROBE_DEFINE3(proc, kernel, init, return, "struct proc *", "int",
+SDT_PROBE_DEFINE4(proc, , ctor, return, "struct proc *", "int", "void *",
"int");
+SDT_PROBE_DEFINE4(proc, , dtor, entry, "struct proc *", "int", "void *",
+ "struct thread *");
+SDT_PROBE_DEFINE3(proc, , dtor, return, "struct proc *", "int", "void *");
+SDT_PROBE_DEFINE3(proc, , init, entry, "struct proc *", "int", "int");
+SDT_PROBE_DEFINE3(proc, , init, return, "struct proc *", "int", "int");
MALLOC_DEFINE(M_PGRP, "pgrp", "process group header");
MALLOC_DEFINE(M_SESSION, "session", "session header");
@@ -196,9 +193,9 @@ proc_ctor(void *mem, int size, void *arg
struct proc *p;
p = (struct proc *)mem;
- SDT_PROBE4(proc, kernel, ctor , entry, p, size, arg, flags);
+ SDT_PROBE4(proc, , ctor , entry, p, size, arg, flags);
EVENTHANDLER_INVOKE(process_ctor, p);
- SDT_PROBE4(proc, kernel, ctor , return, p, size, arg, flags);
+ SDT_PROBE4(proc, , ctor , return, p, size, arg, flags);
return (0);
}
@@ -214,7 +211,7 @@ proc_dtor(void *mem, int size, void *arg
/* INVARIANTS checks go here */
p = (struct proc *)mem;
td = FIRST_THREAD_IN_PROC(p);
- SDT_PROBE4(proc, kernel, dtor, entry, p, size, arg, td);
+ SDT_PROBE4(proc, , dtor, entry, p, size, arg, td);
if (td != NULL) {
#ifdef INVARIANTS
KASSERT((p->p_numthreads == 1),
@@ -227,7 +224,7 @@ proc_dtor(void *mem, int size, void *arg
EVENTHANDLER_INVOKE(process_dtor, p);
if (p->p_ksi != NULL)
KASSERT(! KSI_ONQ(p->p_ksi), ("SIGCHLD queue"));
- SDT_PROBE3(proc, kernel, dtor, return, p, size, arg);
+ SDT_PROBE3(proc, , dtor, return, p, size, arg);
}
/*
@@ -239,7 +236,7 @@ proc_init(void *mem, int size, int flags
struct proc *p;
p = (struct proc *)mem;
- SDT_PROBE3(proc, kernel, init, entry, p, size, flags);
+ SDT_PROBE3(proc, , init, entry, p, size, flags);
p->p_sched = (struct p_sched *)&p[1];
mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK | MTX_NEW);
mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN | MTX_NEW);
@@ -251,7 +248,7 @@ proc_init(void *mem, int size, int flags
TAILQ_INIT(&p->p_threads); /* all threads in proc */
EVENTHANDLER_INVOKE(process_init, p);
p->p_stats = pstats_alloc();
- SDT_PROBE3(proc, kernel, init, return, p, size, flags);
+ SDT_PROBE3(proc, , init, return, p, size, flags);
return (0);
}
Modified: projects/sendfile/sys/kern/kern_racct.c
==============================================================================
--- projects/sendfile/sys/kern/kern_racct.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_racct.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -102,30 +102,32 @@ static void racct_add_cred_locked(struct
uint64_t amount);
SDT_PROVIDER_DEFINE(racct);
-SDT_PROBE_DEFINE3(racct, kernel, rusage, add, "struct proc *", "int",
- "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, add__failure,
+SDT_PROBE_DEFINE3(racct, , rusage, add,
"struct proc *", "int", "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, add__cred, "struct ucred *",
- "int", "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, add__force, "struct proc *",
- "int", "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, set, "struct proc *", "int",
- "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, set__failure,
+SDT_PROBE_DEFINE3(racct, , rusage, add__failure,
"struct proc *", "int", "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, sub, "struct proc *", "int",
- "uint64_t");
-SDT_PROBE_DEFINE3(racct, kernel, rusage, sub__cred, "struct ucred *",
- "int", "uint64_t");
-SDT_PROBE_DEFINE1(racct, kernel, racct, create, "struct racct *");
-SDT_PROBE_DEFINE1(racct, kernel, racct, destroy, "struct racct *");
-SDT_PROBE_DEFINE2(racct, kernel, racct, join, "struct racct *",
+SDT_PROBE_DEFINE3(racct, , rusage, add__cred,
+ "struct ucred *", "int", "uint64_t");
+SDT_PROBE_DEFINE3(racct, , rusage, add__force,
+ "struct proc *", "int", "uint64_t");
+SDT_PROBE_DEFINE3(racct, , rusage, set,
+ "struct proc *", "int", "uint64_t");
+SDT_PROBE_DEFINE3(racct, , rusage, set__failure,
+ "struct proc *", "int", "uint64_t");
+SDT_PROBE_DEFINE3(racct, , rusage, sub,
+ "struct proc *", "int", "uint64_t");
+SDT_PROBE_DEFINE3(racct, , rusage, sub__cred,
+ "struct ucred *", "int", "uint64_t");
+SDT_PROBE_DEFINE1(racct, , racct, create,
"struct racct *");
-SDT_PROBE_DEFINE2(racct, kernel, racct, join__failure,
- "struct racct *", "struct racct *");
-SDT_PROBE_DEFINE2(racct, kernel, racct, leave, "struct racct *",
+SDT_PROBE_DEFINE1(racct, , racct, destroy,
"struct racct *");
+SDT_PROBE_DEFINE2(racct, , racct, join,
+ "struct racct *", "struct racct *");
+SDT_PROBE_DEFINE2(racct, , racct, join__failure,
+ "struct racct *", "struct racct *");
+SDT_PROBE_DEFINE2(racct, , racct, leave,
+ "struct racct *", "struct racct *");
int racct_types[] = {
[RACCT_CPU] =
@@ -445,7 +447,7 @@ racct_create(struct racct **racctp)
if (!racct_enable)
return;
- SDT_PROBE1(racct, kernel, racct, create, racctp);
+ SDT_PROBE1(racct, , racct, create, racctp);
KASSERT(*racctp == NULL, ("racct already allocated"));
@@ -460,7 +462,7 @@ racct_destroy_locked(struct racct **racc
ASSERT_RACCT_ENABLED();
- SDT_PROBE1(racct, kernel, racct, destroy, racctp);
+ SDT_PROBE1(racct, , racct, destroy, racctp);
mtx_assert(&racct_lock, MA_OWNED);
KASSERT(racctp != NULL, ("NULL racctp"));
@@ -538,7 +540,7 @@ racct_add_locked(struct proc *p, int res
ASSERT_RACCT_ENABLED();
- SDT_PROBE3(racct, kernel, rusage, add, p, resource, amount);
+ SDT_PROBE3(racct, , rusage, add, p, resource, amount);
/*
* We need proc lock to dereference p->p_ucred.
@@ -548,8 +550,7 @@ racct_add_locked(struct proc *p, int res
#ifdef RCTL
error = rctl_enforce(p, resource, amount);
if (error && RACCT_IS_DENIABLE(resource)) {
- SDT_PROBE3(racct, kernel, rusage, add__failure, p, resource,
- amount);
+ SDT_PROBE3(racct, , rusage, add__failure, p, resource, amount);
return (error);
}
#endif
@@ -584,7 +585,7 @@ racct_add_cred_locked(struct ucred *cred
ASSERT_RACCT_ENABLED();
- SDT_PROBE3(racct, kernel, rusage, add__cred, cred, resource, amount);
+ SDT_PROBE3(racct, , rusage, add__cred, cred, resource, amount);
racct_adjust_resource(cred->cr_ruidinfo->ui_racct, resource, amount);
for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent)
@@ -622,7 +623,7 @@ racct_add_force(struct proc *p, int reso
if (!racct_enable)
return;
- SDT_PROBE3(racct, kernel, rusage, add__force, p, resource, amount);
+ SDT_PROBE3(racct, , rusage, add__force, p, resource, amount);
/*
* We need proc lock to dereference p->p_ucred.
@@ -646,7 +647,7 @@ racct_set_locked(struct proc *p, int res
ASSERT_RACCT_ENABLED();
- SDT_PROBE3(racct, kernel, rusage, set, p, resource, amount);
+ SDT_PROBE3(racct, , rusage, set, p, resource, amount);
/*
* We need proc lock to dereference p->p_ucred.
@@ -678,8 +679,8 @@ racct_set_locked(struct proc *p, int res
if (diff_proc > 0) {
error = rctl_enforce(p, resource, diff_proc);
if (error && RACCT_IS_DENIABLE(resource)) {
- SDT_PROBE3(racct, kernel, rusage, set__failure, p,
- resource, amount);
+ SDT_PROBE3(racct, , rusage, set__failure, p, resource,
+ amount);
return (error);
}
}
@@ -722,7 +723,7 @@ racct_set_force_locked(struct proc *p, i
ASSERT_RACCT_ENABLED();
- SDT_PROBE3(racct, kernel, rusage, set, p, resource, amount);
+ SDT_PROBE3(racct, , rusage, set, p, resource, amount);
/*
* We need proc lock to dereference p->p_ucred.
@@ -833,7 +834,7 @@ racct_sub(struct proc *p, int resource,
if (!racct_enable)
return;
- SDT_PROBE3(racct, kernel, rusage, sub, p, resource, amount);
+ SDT_PROBE3(racct, , rusage, sub, p, resource, amount);
/*
* We need proc lock to dereference p->p_ucred.
@@ -860,7 +861,7 @@ racct_sub_cred_locked(struct ucred *cred
ASSERT_RACCT_ENABLED();
- SDT_PROBE3(racct, kernel, rusage, sub__cred, cred, resource, amount);
+ SDT_PROBE3(racct, , rusage, sub__cred, cred, resource, amount);
#ifdef notyet
KASSERT(RACCT_CAN_DROP(resource),
Modified: projects/sendfile/sys/kern/kern_sig.c
==============================================================================
--- projects/sendfile/sys/kern/kern_sig.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_sig.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -94,11 +94,11 @@ __FBSDID("$FreeBSD$");
#define ONSIG 32 /* NSIG for osig* syscalls. XXX. */
SDT_PROVIDER_DECLARE(proc);
-SDT_PROBE_DEFINE3(proc, kernel, , signal__send, "struct thread *",
- "struct proc *", "int");
-SDT_PROBE_DEFINE2(proc, kernel, , signal__clear, "int",
- "ksiginfo_t *");
-SDT_PROBE_DEFINE3(proc, kernel, , signal__discard,
+SDT_PROBE_DEFINE3(proc, , , signal__send,
+ "struct thread *", "struct proc *", "int");
+SDT_PROBE_DEFINE2(proc, , , signal__clear,
+ "int", "ksiginfo_t *");
+SDT_PROBE_DEFINE3(proc, , , signal__discard,
"struct thread *", "struct proc *", "int");
static int coredump(struct thread *);
@@ -1308,7 +1308,7 @@ kern_sigtimedwait(struct thread *td, sig
reschedule_signals(p, new_block, 0);
if (error == 0) {
- SDT_PROBE2(proc, kernel, , signal__clear, sig, ksi);
+ SDT_PROBE2(proc, , , signal__clear, sig, ksi);
if (ksi->ksi_code == SI_TIMER)
itimer_accept(p, ksi->ksi_timerid, ksi);
@@ -2121,7 +2121,7 @@ tdsendsignal(struct proc *p, struct thre
} else
sigqueue = &td->td_sigqueue;
- SDT_PROBE3(proc, kernel, , signal__send, td, p, sig);
+ SDT_PROBE3(proc, , , signal__send, td, p, sig);
/*
* If the signal is being ignored,
@@ -2132,7 +2132,7 @@ tdsendsignal(struct proc *p, struct thre
*/
mtx_lock(&ps->ps_mtx);
if (SIGISMEMBER(ps->ps_sigignore, sig)) {
- SDT_PROBE3(proc, kernel, , signal__discard, td, p, sig);
+ SDT_PROBE3(proc, , , signal__discard, td, p, sig);
mtx_unlock(&ps->ps_mtx);
if (ksi && (ksi->ksi_flags & KSI_INS))
Modified: projects/sendfile/sys/kern/kern_timeout.c
==============================================================================
--- projects/sendfile/sys/kern/kern_timeout.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/kern_timeout.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -69,10 +69,8 @@ DPCPU_DECLARE(sbintime_t, hardclocktime)
#endif
SDT_PROVIDER_DEFINE(callout_execute);
-SDT_PROBE_DEFINE1(callout_execute, kernel, , callout__start,
- "struct callout *");
-SDT_PROBE_DEFINE1(callout_execute, kernel, , callout__end,
- "struct callout *");
+SDT_PROBE_DEFINE1(callout_execute, , , callout__start, "struct callout *");
+SDT_PROBE_DEFINE1(callout_execute, , , callout__end, "struct callout *");
#ifdef CALLOUT_PROFILING
static int avg_depth;
@@ -721,9 +719,9 @@ softclock_call_cc(struct callout *c, str
sbt1 = sbinuptime();
#endif
THREAD_NO_SLEEPING();
- SDT_PROBE1(callout_execute, kernel, , callout__start, c);
+ SDT_PROBE1(callout_execute, , , callout__start, c);
c_func(c_arg);
- SDT_PROBE1(callout_execute, kernel, , callout__end, c);
+ SDT_PROBE1(callout_execute, , , callout__end, c);
THREAD_SLEEPING_OK();
#if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING)
sbt2 = sbinuptime();
Modified: projects/sendfile/sys/kern/vfs_cache.c
==============================================================================
--- projects/sendfile/sys/kern/vfs_cache.c Wed Dec 16 23:48:50 2015 (r292386)
+++ projects/sendfile/sys/kern/vfs_cache.c Wed Dec 16 23:53:16 2015 (r292387)
@@ -417,7 +417,6 @@ cache_zap(ncp)
rw_assert(&cache_lock, RA_WLOCKED);
CTR2(KTR_VFS, "cache_zap(%p) vp %p", ncp, ncp->nc_vp);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list