1. 29 6月, 2013 13 次提交
  2. 20 6月, 2013 1 次提交
  3. 19 6月, 2013 5 次提交
    • T
      NFSv4.1: Clean up layout segment comparison helper names · 7dc0ac70
      Trond Myklebust 提交于
      Give them names that are a bit more consistent with the general
      pNFS naming scheme.
      
       - lo_seg_contained -> pnfs_lseg_range_contained
       - lo_seg_intersecting -> pnfs_lseg_range_intersecting
       - cmp_layout -> pnfs_lseg_range_cmp
       - is_matching_lseg -> pnfs_lseg_range_match
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      7dc0ac70
    • T
      NFSv4.1: layout segment comparison helpers should take 'const' parameters · 3cb2df17
      Trond Myklebust 提交于
      Also strip off the unnecessary 'inline' declarations.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      3cb2df17
    • T
      NFSv4: Move the DNS resolver into the NFSv4 module · c8d74d9b
      Trond Myklebust 提交于
      The other protocols don't use it, so make it local to NFSv4, and
      remove the EXPORT.
      Also ensure that we only compile in cache_lib.o if we're using
      the legacy DNS resolver.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Bryan Schumaker <bjschuma@netapp.com>
      c8d74d9b
    • J
      rpc_pipefs: only set rpc_dentry_ops if d_op isn't already set · e401452d
      Jeff Layton 提交于
      We had a report of a reproducible WARNING:
      
      [ 1360.039358] ------------[ cut here ]------------
      [ 1360.043978] WARNING: at fs/dcache.c:1355 d_set_d_op+0x8d/0xc0()
      [ 1360.049880] Hardware name: HP Z200 Workstation
      [ 1360.054308] Modules linked in: nfsv4 nfs dns_resolver fscache nfsd
      auth_rpcgss nfs_acl lockd sunrpc sg acpi_cpufreq mperf coretemp kvm_intel kvm
      snd_hda_codec_realtek snd_hda_intel snd_hda_codec hp_wmi crc32c_intel
      snd_hwdep e1000e snd_seq snd_seq_device snd_pcm snd_page_alloc snd_timer snd
      sparse_keymap rfkill soundcore serio_raw ptp iTCO_wdt pps_core pcspkr
      iTCO_vendor_support mei microcode lpc_ich mfd_core wmi xfs libcrc32c sr_mod
      sd_mod cdrom crc_t10dif radeon i2c_algo_bit drm_kms_helper ttm ahci libahci
      drm i2c_core libata dm_mirror dm_region_hash dm_log dm_mod [last unloaded:
      auth_rpcgss]
      [ 1360.107406] Pid: 8814, comm: mount.nfs4 Tainted: G         I --------------   3.9.0-0.55.el7.x86_64 #1
      [ 1360.116771] Call Trace:
      [ 1360.119219]  [<ffffffff810610c0>] warn_slowpath_common+0x70/0xa0
      [ 1360.125208]  [<ffffffff810611aa>] warn_slowpath_null+0x1a/0x20
      [ 1360.131025]  [<ffffffff811af46d>] d_set_d_op+0x8d/0xc0
      [ 1360.136159]  [<ffffffffa05a7d6f>] __rpc_lookup_create_exclusive+0x4f/0x80 [sunrpc]
      [ 1360.143710]  [<ffffffffa05a8cc6>] rpc_mkpipe_dentry+0x86/0x170 [sunrpc]
      [ 1360.150311]  [<ffffffffa062a7b6>] nfs_idmap_new+0x96/0x130 [nfsv4]
      [ 1360.156475]  [<ffffffffa062e7cd>] nfs4_init_client+0xad/0x2d0 [nfsv4]
      [ 1360.162902]  [<ffffffff812f02df>] ? idr_get_empty_slot+0x16f/0x3c0
      [ 1360.169062]  [<ffffffff812f0582>] ? idr_mark_full+0x52/0x60
      [ 1360.174615]  [<ffffffff812f0699>] ? idr_alloc+0x79/0xe0
      [ 1360.179826]  [<ffffffffa0598081>] ? __rpc_init_priority_wait_queue+0x81/0xc0 [sunrpc]
      [ 1360.187635]  [<ffffffffa05980f3>] ? rpc_init_wait_queue+0x13/0x20 [sunrpc]
      [ 1360.194493]  [<ffffffffa05d05da>] nfs_get_client+0x27a/0x350 [nfs]
      [ 1360.200666]  [<ffffffffa062e438>] nfs4_set_client.isra.8+0x78/0x100 [nfsv4]
      [ 1360.207624]  [<ffffffffa062f2f3>] nfs4_create_server+0xf3/0x3a0 [nfsv4]
      [ 1360.214222]  [<ffffffffa06284be>] nfs4_remote_mount+0x2e/0x60 [nfsv4]
      [ 1360.220644]  [<ffffffff8119ea79>] mount_fs+0x39/0x1b0
      [ 1360.225691]  [<ffffffff81153880>] ? __alloc_percpu+0x10/0x20
      [ 1360.231348]  [<ffffffff811b7ccf>] vfs_kern_mount+0x5f/0xf0
      [ 1360.236822]  [<ffffffffa0628396>] nfs_do_root_mount+0x86/0xc0 [nfsv4]
      [ 1360.243246]  [<ffffffffa06287b4>] nfs4_try_mount+0x44/0xc0 [nfsv4]
      [ 1360.249410]  [<ffffffffa05d1457>] ? get_nfs_version+0x27/0x80 [nfs]
      [ 1360.255659]  [<ffffffffa05db985>] nfs_fs_mount+0x5c5/0xd10 [nfs]
      [ 1360.261650]  [<ffffffffa05dc550>] ? nfs_clone_super+0x140/0x140 [nfs]
      [ 1360.268074]  [<ffffffffa05da8e0>] ? param_set_portnr+0x60/0x60 [nfs]
      [ 1360.274406]  [<ffffffff8119ea79>] mount_fs+0x39/0x1b0
      [ 1360.279443]  [<ffffffff81153880>] ? __alloc_percpu+0x10/0x20
      [ 1360.285088]  [<ffffffff811b7ccf>] vfs_kern_mount+0x5f/0xf0
      [ 1360.290556]  [<ffffffff811b9f5d>] do_mount+0x1fd/0xa00
      [ 1360.295677]  [<ffffffff81137dee>] ? __get_free_pages+0xe/0x50
      [ 1360.301405]  [<ffffffff811b9be6>] ? copy_mount_options+0x36/0x170
      [ 1360.307479]  [<ffffffff811ba7e3>] sys_mount+0x83/0xc0
      [ 1360.312515]  [<ffffffff8160ad59>] system_call_fastpath+0x16/0x1b
      [ 1360.318503] ---[ end trace 8fa1f4cbc36094a7 ]---
      
      The problem is that we're ending up in __rpc_lookup_create_exclusive
      with a negative dentry that already has d_op set. A little debugging
      has shown that when we hit this, the d_ops are already set to
      simple_dentry_operations.
      
      I believe that what's happening is that during a mount, idmapd is racing
      in and doing a lookup of /var/lib/nfs/rpc_pipefs/nfs/clnt???/idmap.
      Before that dentry reference is released, the kernel races in to create
      that file and finds the new negative dentry, which already has the
      d_op set.
      
      This patch just avoids setting the d_op if it's already set.
      simple_dentry_operations and rpc_dentry_operations are functionally
      equivalent so it shouldn't matter which one it's set to.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      e401452d
    • D
      NFSv4: SETCLIENTID add the format string for the NETID · fe2d5395
      Djalal Harouni 提交于
      Make sure that NFSv4 SETCLIENTID does not parse the NETID as a
      format string.
      Signed-off-by: NDjalal Harouni <tixxdz@opendz.org>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      fe2d5395
  4. 07 6月, 2013 17 次提交
  5. 31 5月, 2013 1 次提交
    • C
      NFS: Fix security flavor negotiation with legacy binary mounts · eb54d437
      Chuck Lever 提交于
      Darrick J. Wong <darrick.wong@oracle.com> reports:
      > I have a kvm-based testing setup that netboots VMs over NFS, the
      > client end of which seems to have broken somehow in 3.10-rc1.  The
      > server's exports file looks like this:
      >
      > /storage/mtr/x64	192.168.122.0/24(ro,sync,no_root_squash,no_subtree_check)
      >
      > On the client end (inside the VM), the initrd runs the following
      > command to try to mount the rootfs over NFS:
      >
      > # mount -o nolock -o ro -o retrans=10 192.168.122.1:/storage/mtr/x64/ /root
      >
      > (Note: This is the busybox mount command.)
      >
      > The mount fails with -EINVAL.
      
      Commit 4580a92d "NFS: Use server-recommended security flavor by
      default (NFSv3)" introduced a behavior regression for NFS mounts
      done via a legacy binary mount(2) call.
      
      Ensure that a default security flavor is specified for legacy binary
      mount requests, since they do not invoke nfs_select_flavor() in the
      kernel.
      
      Busybox uses klibc's nfsmount command, which performs NFS mounts
      using the legacy binary mount data format.  /sbin/mount.nfs is not
      affected by this regression.
      Reported-by: NDarrick J. Wong <darrick.wong@oracle.com>
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Tested-by: NDarrick J. Wong <darrick.wong@oracle.com>
      Acked-by: NWeston Andros Adamson <dros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      eb54d437
  6. 30 5月, 2013 1 次提交
  7. 24 5月, 2013 1 次提交
  8. 23 5月, 2013 1 次提交
    • T
      SUNRPC: Prevent an rpc_task wakeup race · a3c3cac5
      Trond Myklebust 提交于
      The lockless RPC_IS_QUEUED() test in __rpc_execute means that we need to
      be careful about ordering the calls to rpc_test_and_set_running(task) and
      rpc_clear_queued(task). If we get the order wrong, then we may end up
      testing the RPC_TASK_RUNNING flag after __rpc_execute() has looped
      and changed the state of the rpc_task.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: stable@vger.kernel.org
      a3c3cac5