1. 15 5月, 2012 1 次提交
    • B
      NFS: Create a single nfs_get_root() · bae36241
      Bryan Schumaker 提交于
      This patch splits out the NFS v4 specific functionality of
      nfs4_get_root() into its own rpc_op called by the generic client, and
      leaves nfs4_proc_get_rootfh() as its own stand alone function.  This
      also allows me to change nfs4_remote_mount(), nfs4_xdev_mount() and
      nfs4_remote_referral_mount() to use the generic client's nfs_get_root()
      function.  Later patches in this series will collapse these functions
      into one common function, so using the same get_root() function
      everywhere simplifies future changes.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      bae36241
  2. 28 4月, 2012 1 次提交
  3. 21 4月, 2012 1 次提交
    • J
      nfs: Enclose hostname in brackets when needed in nfs_do_root_mount · 98a2139f
      Jan Kara 提交于
      When hostname contains colon (e.g. when it is an IPv6 address) it needs
      to be enclosed in brackets to make parsing of NFS device string possible.
      Fix nfs_do_root_mount() to enclose hostname properly when needed. NFS code
      actually does not need this as it does not parse the string passed by
      nfs_do_root_mount() but the device string is exposed to userspace in
      /proc/mounts.
      
      CC: Josh Boyer <jwboyer@redhat.com>
      CC: Trond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: NJan Kara <jack@suse.cz>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      98a2139f
  4. 29 3月, 2012 1 次提交
  5. 21 3月, 2012 1 次提交
    • V
      NFS: fix sb->s_id in nfs debug prints · 5a7c9eec
      Vivek Trivedi 提交于
      NFS bdi flush thread in ps output is printed like "flush-<major number
      in decimal>:<minor number in decimal>"
      For example:
      $ ps aux | grep flush
       2079 root         0 SW   [flush-0:18]
                                       ^^^^
      
      nfs_bdi_register()
      ==> bdi_register_dev()
      ==> bdi_register(bdi, NULL, "%u:%u", MAJOR(dev), MINOR(dev));
                                   ^^^^^
      
      However, NFS sb->s_id store major:minor number in hex:
      
      nfs_initialise_sb()
      ==>         snprintf(sb->s_id, sizeof(sb->s_id),
                       "%x:%x", MAJOR(sb->s_dev), MINOR(sb->s_dev));
                        ^^^^^
      
      If we enable nfs debug prints using command:
      $ rpcdebug -m nfs -s all
      
      write to a file:
      $ dd if=/dev/zero of=<NFS Mount>/testfile.txt bs=32768 count=1
      
      Without Patch:
      [ 2431.032000] NFS:     0 initiated write call (req 0:12/40, 32768 bytes
      @ offset 0)                                         ^^^^
      
      With Patch:
      [ 2431.032000] NFS:     0 initiated write call (req 0:18/40, 32768 bytes
      @ offset 0)                                         ^^^^
      
      We should store NFS "s->s_id" in decimal to avoid confusion between NFS
      flush thread name(in ps output) and NFS debug prints.
      Signed-off-by: NVivek Trivedi <vtrivedi018@gmail.com>
      Signed-off-by: NNamjae Jeon <linkinjeon@gmail.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      5a7c9eec
  6. 06 3月, 2012 1 次提交
  7. 03 3月, 2012 5 次提交
  8. 02 3月, 2012 1 次提交
  9. 19 2月, 2012 1 次提交
  10. 15 2月, 2012 2 次提交
  11. 07 2月, 2012 1 次提交
  12. 01 2月, 2012 4 次提交
  13. 07 1月, 2012 4 次提交
  14. 05 1月, 2012 1 次提交
    • J
      nfs: fix regression in handling of context= option in NFSv4 · 8a0d551a
      Jeff Layton 提交于
      Setting the security context of a NFSv4 mount via the context= mount
      option is currently broken. The NFSv4 codepath allocates a parsed
      options struct, and then parses the mount options to fill it. It
      eventually calls nfs4_remote_mount which calls security_init_mnt_opts.
      That clobbers the lsm_opts struct that was populated earlier. This bug
      also looks like it causes a small memory leak on each v4 mount where
      context= is used.
      
      Fix this by moving the initialization of the lsm_opts into
      nfs_alloc_parsed_mount_data. Also, add a destructor for
      nfs_parsed_mount_data to make it easier to free all of the allocations
      hanging off of it, and to ensure that the security_free_mnt_opts is
      called whenever security_init_mnt_opts is.
      
      I believe this regression was introduced quite some time ago, probably
      by commit c02d7adf.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      8a0d551a
  15. 04 1月, 2012 2 次提交
  16. 17 11月, 2011 2 次提交
  17. 19 10月, 2011 1 次提交
    • H
      nfs/super.c: local functions should be static · 45402c38
      H Hartley Sweeten 提交于
      commit ae50c0b5 "pnfs: client stats" added additional information to
      the output of /proc/self/mountstats. The new functions introduced are
      only used in this file and should be marked static.
      
      If CONFIG_NFS_V4_1 is not defined, empty stub functions are used.  If
      CONFIG_NFS_V4 is not defined these stub functions are not used at all.
      Adding static for the functions results in compile warnings:
      
      fs/nfs/super.c:743: warning: 'show_sessions' defined but not used
      fs/nfs/super.c:756: warning: 'show_pnfs' defined but not used
      
      Fix this by adding a #ifdef CONFIG_NFS_V4 guard around the two
      show_ functions.
      Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      45402c38
  18. 27 9月, 2011 1 次提交
  19. 14 9月, 2011 1 次提交
    • S
      nfs: Do not allow multiple mounts on same mountpoint when using -o noac · fb2088cc
      Sachin Prabhu 提交于
      Do not allow multiple mounts on same mountpoint when using -o noac
      
      When you normally attempt to mount a share twice on the same mountpoint,
      a check in do_add_mount causes it to return an error
      
      # mount localhost:/nfsv3 /mnt
      # mount localhost:/nfsv3 /mnt
      mount.nfs: /mnt is already mounted or busy
      
      However when using the option 'noac', the user is able to mount the same
      share on the same mountpoint multiple times. This happens because a
      share mounted with the noac option is automatically assigned the 'sync'
      flag MS_SYNCHRONOUS in nfs_initialise_sb(). This flag is set after the
      check for already existing superblocks is done in sget(). The check for
      the mount flags in nfs_compare_mount_options() does not take into
      account the 'sync' flag applied later on in the code path. This means
      that when using 'noac', a new superblock structure is assigned for every
      new mount of the same share and multiple shares on the same mountpoint
      are allowed.
      
      ie.
      # mount -onoac localhost:/nfsv3 /mnt
      can be run multiple times.
      
      The patch checks for noac and assigns the sync flag before sget() is
      called to obtain an already existing superblock structure.
      Signed-off-by: NSachin Prabhu <sprabhu@redhat.com>
      Reviewed-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      fb2088cc
  20. 20 7月, 2011 1 次提交
  21. 30 5月, 2011 1 次提交
    • J
      pnfs: client stats · ae50c0b5
      J. Bruce Fields 提交于
      A pNFS client auto-negotiates a lot of features (minorversion level,
      pNFS layout type, etc.).  This is convenient, but makes certain kinds of
      failures hard for a user to detect.
      
      For example, if the client falls back on 4.0, or falls back to MDS IO
      because the user didn't connect to the right iscsi disks before
      mounting, the only symptoms may be reduced performance, which may not be
      noticed till long after the actual failure, and may be difficult for a
      user to diagnose.
      
      However, such "failures" may also be perfectly normal in some cases, so
      we don't want to spam the system logs with them.
      
      One approach would be to put some more information into
      /proc/self/mountstats.
      Signed-off-by: NJ. Bruce Fields <bfields@fieldses.org>
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      [pnfs: add commit client stats]
      [fixup data types for "ret" variables in pnfs_try_to* inline funcs.]
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      [fix definition of show_pnfs for !CONFIG_PNFS]
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      [nfs41: Fix show_sessions in the not CONFIG_NFS_V4_1 case]
          There is a build error when CONFIG_NFS_V4 is set but
          CONFIG_NFS_V4_1 is *not* set. show_sessions() prototype
          was unbalanced between the two cases.
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      [pnfs: super.c remove CONFIG_PNFS]
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      ae50c0b5
  22. 28 4月, 2011 1 次提交
  23. 14 4月, 2011 1 次提交
  24. 13 4月, 2011 1 次提交
    • J
      NFS: Remove dead code from nfs_fs_mount() · 160bc160
      Jesper Juhl 提交于
      In fs/nfs/super.c::nfs_fs_mount() we test for a NULL 'data':
      
      ...
       		if (data == NULL || mntfh == NULL)
       			goto out_free_fh;
      ...
      
      and then further down in the function we test 'data' again:
      
      ...
       			nfs_fscache_get_super_cookie(
       				s, data ? data->fscache_uniq : NULL, NULL);
      ...
      
      this second check is just dead code since there is no way 'data' could
      possibly be NULL here.
      We also rely on a non-NULL 'data' in more than one location between these
      two tests, further proving the point that the second test is bogus.
      
      This patch removes the dead code.
      Signed-off-by: NJesper Juhl <jj@chaosbits.net>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      160bc160
  25. 17 3月, 2011 3 次提交