Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: Documentation/feature-removal-schedule.txt drivers/scsi/fcoe/fcoe.c net/core/drop_monitor.c net/core/net-traces.c
Tento commit je obsažen v:
@@ -246,7 +246,7 @@ static int p9_virtio_probe(struct virtio_device *vdev)
|
||||
chan->vdev = vdev;
|
||||
|
||||
/* We expect one virtqueue, for requests. */
|
||||
chan->vq = vdev->config->find_vq(vdev, 0, req_done);
|
||||
chan->vq = virtio_find_single_vq(vdev, req_done, "requests");
|
||||
if (IS_ERR(chan->vq)) {
|
||||
err = PTR_ERR(chan->vq);
|
||||
goto out_free_vq;
|
||||
@@ -261,7 +261,7 @@ static int p9_virtio_probe(struct virtio_device *vdev)
|
||||
return 0;
|
||||
|
||||
out_free_vq:
|
||||
vdev->config->del_vq(chan->vq);
|
||||
vdev->config->del_vqs(vdev);
|
||||
fail:
|
||||
mutex_lock(&virtio_9p_lock);
|
||||
chan_index--;
|
||||
@@ -332,7 +332,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
|
||||
BUG_ON(chan->inuse);
|
||||
|
||||
if (chan->initialized) {
|
||||
vdev->config->del_vq(chan->vq);
|
||||
vdev->config->del_vqs(vdev);
|
||||
chan->initialized = false;
|
||||
}
|
||||
}
|
||||
|
@@ -126,7 +126,7 @@
|
||||
#include <linux/in.h>
|
||||
#include <linux/jhash.h>
|
||||
#include <linux/random.h>
|
||||
#include <trace/napi.h>
|
||||
#include <trace/events/napi.h>
|
||||
|
||||
#include "net-sysfs.h"
|
||||
|
||||
|
@@ -24,8 +24,8 @@
|
||||
#include <net/genetlink.h>
|
||||
#include <net/netevent.h>
|
||||
|
||||
#include <trace/skb.h>
|
||||
#include <trace/napi.h>
|
||||
#include <trace/events/skb.h>
|
||||
#include <trace/events/napi.h>
|
||||
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
|
@@ -19,15 +19,14 @@
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/net_dropmon.h>
|
||||
#include <trace/skb.h>
|
||||
#include <trace/napi.h>
|
||||
|
||||
#include <asm/unaligned.h>
|
||||
#include <asm/bitops.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/skb.h>
|
||||
#include <trace/events/napi.h>
|
||||
|
||||
DEFINE_TRACE(kfree_skb);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(kfree_skb);
|
||||
|
||||
DEFINE_TRACE(napi_poll);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll);
|
||||
|
@@ -24,7 +24,7 @@
|
||||
#include <net/tcp.h>
|
||||
#include <net/udp.h>
|
||||
#include <asm/unaligned.h>
|
||||
#include <trace/napi.h>
|
||||
#include <trace/events/napi.h>
|
||||
|
||||
/*
|
||||
* We maintain a small pool of fully-sized skbs, to make sure the
|
||||
|
@@ -65,7 +65,7 @@
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/system.h>
|
||||
#include <trace/skb.h>
|
||||
#include <trace/events/skb.h>
|
||||
|
||||
#include "kmap_skb.h"
|
||||
|
||||
|
@@ -168,7 +168,7 @@ config IPV6_SIT
|
||||
into IPv4 packets. This is useful if you want to connect two IPv6
|
||||
networks over an IPv4-only path.
|
||||
|
||||
Saying M here will produce a module called sit.ko. If unsure, say Y.
|
||||
Saying M here will produce a module called sit. If unsure, say Y.
|
||||
|
||||
config IPV6_NDISC_NODETYPE
|
||||
bool
|
||||
|
@@ -2766,7 +2766,7 @@ static void addrconf_dad_start(struct inet6_ifaddr *ifp, u32 flags)
|
||||
spin_unlock_bh(&ifp->lock);
|
||||
read_unlock_bh(&idev->lock);
|
||||
/*
|
||||
* If the defice is not ready:
|
||||
* If the device is not ready:
|
||||
* - keep it tentative if it is a permanent address.
|
||||
* - otherwise, kill it.
|
||||
*/
|
||||
|
@@ -327,7 +327,7 @@ config NETFILTER_XT_TARGET_CONNMARK
|
||||
|
||||
If you want to compile it as a module, say M here and read
|
||||
<file:Documentation/kbuild/modules.txt>. The module will be called
|
||||
ipt_CONNMARK.ko. If unsure, say `N'.
|
||||
ipt_CONNMARK. If unsure, say `N'.
|
||||
|
||||
config NETFILTER_XT_TARGET_CONNSECMARK
|
||||
tristate '"CONNSECMARK" target support'
|
||||
@@ -584,7 +584,7 @@ config NETFILTER_XT_MATCH_CONNMARK
|
||||
|
||||
If you want to compile it as a module, say M here and read
|
||||
<file:Documentation/kbuild/modules.txt>. The module will be called
|
||||
ipt_connmark.ko. If unsure, say `N'.
|
||||
ipt_connmark. If unsure, say `N'.
|
||||
|
||||
config NETFILTER_XT_MATCH_CONNTRACK
|
||||
tristate '"conntrack" connection tracking match support'
|
||||
|
@@ -116,7 +116,7 @@ int nf_conntrack_acct_init(struct net *net)
|
||||
if (net_eq(net, &init_net)) {
|
||||
#ifdef CONFIG_NF_CT_ACCT
|
||||
printk(KERN_WARNING "CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use\n");
|
||||
printk(KERN_WARNING "nf_conntrack.acct=1 kernel paramater, acct=1 nf_conntrack module option or\n");
|
||||
printk(KERN_WARNING "nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or\n");
|
||||
printk(KERN_WARNING "sysctl net.netfilter.nf_conntrack_acct=1 to enable it.\n");
|
||||
#endif
|
||||
|
||||
|
@@ -161,6 +161,9 @@ static int cls_cgroup_change(struct tcf_proto *tp, unsigned long base,
|
||||
struct tcf_exts e;
|
||||
int err;
|
||||
|
||||
if (!tca[TCA_OPTIONS])
|
||||
return -EINVAL;
|
||||
|
||||
if (head == NULL) {
|
||||
if (!handle)
|
||||
return -EINVAL;
|
||||
|
@@ -345,6 +345,7 @@ static void svc_sock_setbufsize(struct socket *sock, unsigned int snd,
|
||||
lock_sock(sock->sk);
|
||||
sock->sk->sk_sndbuf = snd * 2;
|
||||
sock->sk->sk_rcvbuf = rcv * 2;
|
||||
sock->sk->sk_userlocks |= SOCK_SNDBUF_LOCK|SOCK_RCVBUF_LOCK;
|
||||
release_sock(sock->sk);
|
||||
#endif
|
||||
}
|
||||
@@ -796,6 +797,23 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp)
|
||||
test_bit(XPT_CONN, &svsk->sk_xprt.xpt_flags),
|
||||
test_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags));
|
||||
|
||||
if (test_and_clear_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags))
|
||||
/* sndbuf needs to have room for one request
|
||||
* per thread, otherwise we can stall even when the
|
||||
* network isn't a bottleneck.
|
||||
*
|
||||
* We count all threads rather than threads in a
|
||||
* particular pool, which provides an upper bound
|
||||
* on the number of threads which will access the socket.
|
||||
*
|
||||
* rcvbuf just needs to be able to hold a few requests.
|
||||
* Normally they will be removed from the queue
|
||||
* as soon a a complete request arrives.
|
||||
*/
|
||||
svc_sock_setbufsize(svsk->sk_sock,
|
||||
(serv->sv_nrthreads+3) * serv->sv_max_mesg,
|
||||
3 * serv->sv_max_mesg);
|
||||
|
||||
clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
|
||||
|
||||
/* Receive data. If we haven't got the record length yet, get
|
||||
@@ -1043,6 +1061,15 @@ static void svc_tcp_init(struct svc_sock *svsk, struct svc_serv *serv)
|
||||
|
||||
tcp_sk(sk)->nonagle |= TCP_NAGLE_OFF;
|
||||
|
||||
/* initialise setting must have enough space to
|
||||
* receive and respond to one request.
|
||||
* svc_tcp_recvfrom will re-adjust if necessary
|
||||
*/
|
||||
svc_sock_setbufsize(svsk->sk_sock,
|
||||
3 * svsk->sk_xprt.xpt_server->sv_max_mesg,
|
||||
3 * svsk->sk_xprt.xpt_server->sv_max_mesg);
|
||||
|
||||
set_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags);
|
||||
set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
|
||||
if (sk->sk_state != TCP_ESTABLISHED)
|
||||
set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
|
||||
@@ -1112,14 +1139,8 @@ static struct svc_sock *svc_setup_socket(struct svc_serv *serv,
|
||||
/* Initialize the socket */
|
||||
if (sock->type == SOCK_DGRAM)
|
||||
svc_udp_init(svsk, serv);
|
||||
else {
|
||||
/* initialise setting must have enough space to
|
||||
* receive and respond to one request.
|
||||
*/
|
||||
svc_sock_setbufsize(svsk->sk_sock, 4 * serv->sv_max_mesg,
|
||||
4 * serv->sv_max_mesg);
|
||||
else
|
||||
svc_tcp_init(svsk, serv);
|
||||
}
|
||||
|
||||
dprintk("svc: svc_setup_socket created %p (inet %p)\n",
|
||||
svsk, svsk->sk_sk);
|
||||
|
@@ -128,7 +128,8 @@ static int fast_reg_xdr(struct svcxprt_rdma *xprt,
|
||||
page_bytes -= sge_bytes;
|
||||
|
||||
frmr->page_list->page_list[page_no] =
|
||||
ib_dma_map_page(xprt->sc_cm_id->device, page, 0,
|
||||
ib_dma_map_single(xprt->sc_cm_id->device,
|
||||
page_address(page),
|
||||
PAGE_SIZE, DMA_TO_DEVICE);
|
||||
if (ib_dma_mapping_error(xprt->sc_cm_id->device,
|
||||
frmr->page_list->page_list[page_no]))
|
||||
@@ -532,18 +533,17 @@ static int send_reply(struct svcxprt_rdma *rdma,
|
||||
clear_bit(RDMACTXT_F_FAST_UNREG, &ctxt->flags);
|
||||
|
||||
/* Prepare the SGE for the RPCRDMA Header */
|
||||
ctxt->sge[0].lkey = rdma->sc_dma_lkey;
|
||||
ctxt->sge[0].length = svc_rdma_xdr_get_reply_hdr_len(rdma_resp);
|
||||
ctxt->sge[0].addr =
|
||||
ib_dma_map_page(rdma->sc_cm_id->device,
|
||||
page, 0, PAGE_SIZE, DMA_TO_DEVICE);
|
||||
ib_dma_map_single(rdma->sc_cm_id->device, page_address(page),
|
||||
ctxt->sge[0].length, DMA_TO_DEVICE);
|
||||
if (ib_dma_mapping_error(rdma->sc_cm_id->device, ctxt->sge[0].addr))
|
||||
goto err;
|
||||
atomic_inc(&rdma->sc_dma_used);
|
||||
|
||||
ctxt->direction = DMA_TO_DEVICE;
|
||||
|
||||
ctxt->sge[0].length = svc_rdma_xdr_get_reply_hdr_len(rdma_resp);
|
||||
ctxt->sge[0].lkey = rdma->sc_dma_lkey;
|
||||
|
||||
/* Determine how many of our SGE are to be transmitted */
|
||||
for (sge_no = 1; byte_count && sge_no < vec->count; sge_no++) {
|
||||
sge_bytes = min_t(size_t, vec->sge[sge_no].iov_len, byte_count);
|
||||
|
@@ -500,8 +500,8 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt)
|
||||
BUG_ON(sge_no >= xprt->sc_max_sge);
|
||||
page = svc_rdma_get_page();
|
||||
ctxt->pages[sge_no] = page;
|
||||
pa = ib_dma_map_page(xprt->sc_cm_id->device,
|
||||
page, 0, PAGE_SIZE,
|
||||
pa = ib_dma_map_single(xprt->sc_cm_id->device,
|
||||
page_address(page), PAGE_SIZE,
|
||||
DMA_FROM_DEVICE);
|
||||
if (ib_dma_mapping_error(xprt->sc_cm_id->device, pa))
|
||||
goto err_put_ctxt;
|
||||
@@ -1315,8 +1315,8 @@ void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
|
||||
length = svc_rdma_xdr_encode_error(xprt, rmsgp, err, va);
|
||||
|
||||
/* Prepare SGE for local address */
|
||||
sge.addr = ib_dma_map_page(xprt->sc_cm_id->device,
|
||||
p, 0, PAGE_SIZE, DMA_FROM_DEVICE);
|
||||
sge.addr = ib_dma_map_single(xprt->sc_cm_id->device,
|
||||
page_address(p), PAGE_SIZE, DMA_FROM_DEVICE);
|
||||
if (ib_dma_mapping_error(xprt->sc_cm_id->device, sge.addr)) {
|
||||
put_page(p);
|
||||
return;
|
||||
@@ -1343,7 +1343,7 @@ void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp,
|
||||
if (ret) {
|
||||
dprintk("svcrdma: Error %d posting send for protocol error\n",
|
||||
ret);
|
||||
ib_dma_unmap_page(xprt->sc_cm_id->device,
|
||||
ib_dma_unmap_single(xprt->sc_cm_id->device,
|
||||
sge.addr, PAGE_SIZE,
|
||||
DMA_FROM_DEVICE);
|
||||
svc_rdma_put_context(ctxt, 1);
|
||||
|
@@ -1495,7 +1495,8 @@ rpcrdma_register_frmr_external(struct rpcrdma_mr_seg *seg,
|
||||
frmr_wr.wr.fast_reg.page_shift = PAGE_SHIFT;
|
||||
frmr_wr.wr.fast_reg.length = i << PAGE_SHIFT;
|
||||
frmr_wr.wr.fast_reg.access_flags = (writing ?
|
||||
IB_ACCESS_REMOTE_WRITE : IB_ACCESS_REMOTE_READ);
|
||||
IB_ACCESS_REMOTE_WRITE | IB_ACCESS_LOCAL_WRITE :
|
||||
IB_ACCESS_REMOTE_READ);
|
||||
frmr_wr.wr.fast_reg.rkey = seg1->mr_chunk.rl_mw->r.frmr.fr_mr->rkey;
|
||||
DECR_CQCOUNT(&r_xprt->rx_ep);
|
||||
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele