1. 04 2月, 2015 1 次提交
    • T
      Merge tag 'nfs-rdma-for-3.20' of git://git.linux-nfs.org/projects/anna/nfs-rdma · cc3ea893
      Trond Myklebust 提交于
      NFS: Client side changes for RDMA
      
      These patches improve the scalability of the NFSoRDMA client and take large
      variables off of the stack.  Additionally, the GFP_* flags are updated to
      match what TCP uses.
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      
      * tag 'nfs-rdma-for-3.20' of git://git.linux-nfs.org/projects/anna/nfs-rdma: (21 commits)
        xprtrdma: Update the GFP flags used in xprt_rdma_allocate()
        xprtrdma: Clean up after adding regbuf management
        xprtrdma: Allocate zero pad separately from rpcrdma_buffer
        xprtrdma: Allocate RPC/RDMA receive buffer separately from struct rpcrdma_rep
        xprtrdma: Allocate RPC/RDMA send buffer separately from struct rpcrdma_req
        xprtrdma: Allocate RPC send buffer separately from struct rpcrdma_req
        xprtrdma: Add struct rpcrdma_regbuf and helpers
        xprtrdma: Refactor rpcrdma_buffer_create() and rpcrdma_buffer_destroy()
        xprtrdma: Simplify synopsis of rpcrdma_buffer_create()
        xprtrdma: Take struct ib_qp_attr and ib_qp_init_attr off the stack
        xprtrdma: Take struct ib_device_attr off the stack
        xprtrdma: Free the pd if ib_query_qp() fails
        xprtrdma: Remove rpcrdma_ep::rep_func and ::rep_xprt
        xprtrdma: Move credit update to RPC reply handler
        xprtrdma: Remove rl_mr field, and the mr_chunk union
        xprtrdma: Remove rpcrdma_ep::rep_ia
        xprtrdma: Rename "xprt" and "rdma_connect" fields in struct rpcrdma_xprt
        xprtrdma: Clean up hdrlen
        xprtrdma: Display XIDs in host byte order
        xprtrdma: Modernize htonl and ntohl
        ...
      cc3ea893
  2. 31 1月, 2015 4 次提交
    • D
      NFS: a couple off by ones · c7c545d4
      Dan Carpenter 提交于
      These tests are off by one because if len == sizeof(nfs_export_path)
      then we have truncated the name.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      c7c545d4
    • O
      nfs: prevent truncate on active swapfile · 3a7ed3ff
      Omar Sandoval 提交于
      Most filesystems prevent truncation of an active swapfile by way of
      inode_newsize_ok, called from inode_change_ok. NFS doesn't call either
      from nfs_setattr, presumably because most of these checks are expected
      to be done server-side. However, the IS_SWAPFILE check can only be done
      client-side, and truncating a swapfile can't possibly be good.
      Signed-off-by: NOmar Sandoval <osandov@osandov.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      3a7ed3ff
    • J
      nfs: don't call blocking operations while !TASK_RUNNING · 6ffa30d3
      Jeff Layton 提交于
      Bruce reported seeing this warning pop when mounting using v4.1:
      
           ------------[ cut here ]------------
           WARNING: CPU: 1 PID: 1121 at kernel/sched/core.c:7300 __might_sleep+0xbd/0xd0()
          do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff810ff58f>] prepare_to_wait+0x2f/0x90
          Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace sunrpc fscache ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec snd_hwdep snd_pcm snd_timer ppdev joydev snd virtio_console virtio_balloon pcspkr serio_raw parport_pc parport pvpanic floppy soundcore i2c_piix4 virtio_blk virtio_net qxl drm_kms_helper ttm drm virtio_pci virtio_ring ata_generic virtio pata_acpi
          CPU: 1 PID: 1121 Comm: nfsv4.1-svc Not tainted 3.19.0-rc4+ #25
          Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140709_153950- 04/01/2014
           0000000000000000 000000004e5e3f73 ffff8800b998fb48 ffffffff8186ac78
           0000000000000000 ffff8800b998fba0 ffff8800b998fb88 ffffffff810ac9da
           ffff8800b998fb68 ffffffff81c923e7 00000000000004d9 0000000000000000
          Call Trace:
           [<ffffffff8186ac78>] dump_stack+0x4c/0x65
           [<ffffffff810ac9da>] warn_slowpath_common+0x8a/0xc0
           [<ffffffff810aca65>] warn_slowpath_fmt+0x55/0x70
           [<ffffffff810ff58f>] ? prepare_to_wait+0x2f/0x90
           [<ffffffff810ff58f>] ? prepare_to_wait+0x2f/0x90
           [<ffffffff810dd2ad>] __might_sleep+0xbd/0xd0
           [<ffffffff8124c973>] kmem_cache_alloc_trace+0x243/0x430
           [<ffffffff810d941e>] ? groups_alloc+0x3e/0x130
           [<ffffffff810d941e>] groups_alloc+0x3e/0x130
           [<ffffffffa0301b1e>] svcauth_unix_accept+0x16e/0x290 [sunrpc]
           [<ffffffffa0300571>] svc_authenticate+0xe1/0xf0 [sunrpc]
           [<ffffffffa02fc564>] svc_process_common+0x244/0x6a0 [sunrpc]
           [<ffffffffa02fd044>] bc_svc_process+0x1c4/0x260 [sunrpc]
           [<ffffffffa03d5478>] nfs41_callback_svc+0x128/0x1f0 [nfsv4]
           [<ffffffff810ff970>] ? wait_woken+0xc0/0xc0
           [<ffffffffa03d5350>] ? nfs4_callback_svc+0x60/0x60 [nfsv4]
           [<ffffffff810d45bf>] kthread+0x11f/0x140
           [<ffffffff810ea815>] ? local_clock+0x15/0x30
           [<ffffffff810d44a0>] ? kthread_create_on_node+0x250/0x250
           [<ffffffff81874bfc>] ret_from_fork+0x7c/0xb0
           [<ffffffff810d44a0>] ? kthread_create_on_node+0x250/0x250
          ---[ end trace 675220a11e30f4f2 ]---
      
      nfs41_callback_svc does most of its work while in TASK_INTERRUPTIBLE,
      which is just wrong. Fix that by finishing the wait immediately if we've
      found that the list has something on it.
      
      Also, we don't expect this kthread to accept signals, so we should be
      using a TASK_UNINTERRUPTIBLE sleep instead. That however, opens us up
      hung task warnings from the watchdog, so have the schedule_timeout
      wake up every 60s if there's no callback activity.
      Reported-by: N"J. Bruce Fields" <bfields@fieldses.org>
      Signed-off-by: NJeff Layton <jlayton@primarydata.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      6ffa30d3
    • C
      xprtrdma: Update the GFP flags used in xprt_rdma_allocate() · a0a1d50c
      Chuck Lever 提交于
      Reflect the more conservative approach used in the socket transport's
      version of this transport method. An RPC buffer allocation should
      avoid forcing not just FS activity, but any I/O.
      
      In particular, two recent changes missed updating xprtrdma:
      
       - Commit c6c8fe79 ("net, sunrpc: suppress allocation warning ...")
       - Commit a564b8f0 ("nfs: enable swap on NFS")
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
      a0a1d50c
  3. 30 1月, 2015 20 次提交
  4. 25 1月, 2015 10 次提交
  5. 24 1月, 2015 5 次提交