1. 03 Feb, 2015 1 commit
    • Trond Myklebust's avatar
      Merge tag 'nfs-rdma-for-3.20' of git://git.linux-nfs.org/projects/anna/nfs-rdma · cc3ea893
      Trond Myklebust authored
      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: default avatarAnna 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 Jan, 2015 3 commits
    • Dan Carpenter's avatar
      NFS: a couple off by ones · c7c545d4
      Dan Carpenter authored
      These tests are off by one because if len == sizeof(nfs_export_path)
      then we have truncated the name.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      c7c545d4
    • Omar Sandoval's avatar
      nfs: prevent truncate on active swapfile · 3a7ed3ff
      Omar Sandoval authored
      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: default avatarOmar Sandoval <osandov@osandov.com>
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      3a7ed3ff
    • Jeff Layton's avatar
      nfs: don't call blocking operations while !TASK_RUNNING · 6ffa30d3
      Jeff Layton authored
      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: default avatar"J. Bruce Fields" <bfields@fieldses.org>
      Signed-off-by: default avatarJeff Layton <jlayton@primarydata.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      6ffa30d3
  3. 30 Jan, 2015 21 commits
  4. 24 Jan, 2015 15 commits