1. 15 12月, 2009 1 次提交
    • J
      nfsd4: fix share mode permissions · 57ecb34f
      J. Bruce Fields 提交于
      NFSv4 opens may function as locks denying other NFSv4 users the rights
      to open a file.
      
      We're requiring a user to have write permissions before they can deny
      write.  We're *not* requiring a user to have write permissions to deny
      read, which is if anything a more drastic denial.
      
      What was intended was to require write permissions for DENY_READ.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      57ecb34f
  2. 14 11月, 2009 1 次提交
  3. 02 9月, 2009 1 次提交
  4. 29 7月, 2009 3 次提交
    • A
      nfsd41: encode replay sequence from the slot values · abfabf8c
      Andy Adamson 提交于
      The sequence operation is not cached; always encode the sequence operation on
      a replay from the slot table and session values. This simplifies the sessions
      replay logic in nfsd4_proc_compound.
      
      If this is a replay of a compound that was specified not to be cached, return
      NFS4ERR_RETRY_UNCACHED_REP.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      abfabf8c
    • A
      nfsd41: rename nfsd4_enc_uncached_replay · c8647947
      Andy Adamson 提交于
      This function is only used for SEQUENCE replay.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      c8647947
    • A
      nfsd41: Use separate DRC for setclientid · 49557cc7
      Andy Adamson 提交于
      Instead of trying to share the generic 4.1 reply cache code for the
      CREATE_SESSION reply cache, it's simpler to handle CREATE_SESSION
      separately.
      
      The nfs41 single slot clientid DRC holds the results of create session
      processing.  CREATE_SESSION can be preceeded by a SEQUENCE operation
      (an embedded CREATE_SESSION) and the create session single slot cache must be
      maintained.  nfsd4_replay_cache_entry() and nfsd4_store_cache_entry() do not
      implement the replay of an embedded CREATE_SESSION.
      
      The clientid DRC slot does not need the inuse, cachethis or other fields that
      the multiple slot session cache uses.  Replace the clientid DRC cache struct
      nfs4_slot cache with a new nfsd4_clid_slot cache.  Save the xdr struct
      nfsd4_create_session into the cache at the end of processing, and on a replay,
      replace the struct for the replay request with the cached version all while
      under the state lock.
      
      nfsd4_proc_compound will handle both the solo and embedded CREATE_SESSION case
      via the normal use of encode_operation.
      
      Errors that do not change the create session cache:
      A create session NFS4ERR_STALE_CLIENTID error means that a client record
      (and associated create session slot) could not be found and therefore can't
      be changed.  NFSERR_SEQ_MISORDERED errors do not change the slot cache.
      
      All other errors get cached.
      
      Remove the clientid DRC specific check in nfs4svc_encode_compoundres to
      put the session only if cstate.session is set which will now always be true.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      49557cc7
  5. 15 7月, 2009 1 次提交
  6. 02 6月, 2009 2 次提交
    • Y
      NFSv4: kill off complicated macro 'PROC' · 0a93a47f
      Yu Zhiguo 提交于
      J. Bruce Fields wrote:
      ...
      > (This is extremely confusing code to track down: note that
      > proc->pc_decode is set to nfs4svc_decode_compoundargs() by the PROC()
      > macro at the end of fs/nfsd/nfs4proc.c.  Which means, for example, that
      > grepping for nfs4svc_decode_compoundargs() gets you nowhere.  Patches to
      > kill off that macro would be welcomed....)
      
      the macro 'PROC' is complicated and obscure, it had better
      be killed off in order to make the code more clear.
      Signed-off-by: NYu Zhiguo <yuzg@cn.fujitsu.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      0a93a47f
    • Y
      NFSv4: do exact check about attribute specified · 3c8e0316
      Yu Zhiguo 提交于
      Server should return NFS4ERR_ATTRNOTSUPP if an attribute specified is
      not supported in current environment.
      Operations CREATE, NVERIFY, OPEN, SETATTR and VERIFY should do this check.
      
      This bug is found when do newpynfs tests. The names of the tests that failed
      are following:
        CR12 NVF7a NVF7b NVF7c NVF7d NVF7f NVF7r NVF7s
        OPEN15 VF7a VF7b VF7c VF7d VF7f VF7r VF7s
      
      Add function do_check_fattr() to do exact check:
      1, Check attribute specified is supported by the NFSv4 server or not.
      2, Check FATTR4_WORD0_ACL & FATTR4_WORD0_FS_LOCATIONS are supported
         in current environment or not.
      3, Check attribute specified is writable or not.
      
      step 1 and 3 are done in function nfsd4_decode_fattr() but removed
      to this function now.
      Signed-off-by: NYu Zhiguo <yuzg@cn.fujitsu.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      3c8e0316
  7. 04 4月, 2009 13 次提交
  8. 31 3月, 2009 1 次提交
  9. 30 3月, 2009 1 次提交
  10. 19 3月, 2009 7 次提交
  11. 08 1月, 2009 1 次提交
  12. 04 10月, 2008 1 次提交
    • J
      nfsd: common grace period control · af558e33
      J. Bruce Fields 提交于
      Rewrite grace period code to unify management of grace period across
      lockd and nfsd.  The current code has lockd and nfsd cooperate to
      compute a grace period which is satisfactory to them both, and then
      individually enforce it.  This creates a slight race condition, since
      the enforcement is not coordinated.  It's also more complicated than
      necessary.
      
      Here instead we have lockd and nfsd each inform common code when they
      enter the grace period, and when they're ready to leave the grace
      period, and allow normal locking only after both of them are ready to
      leave.
      
      We also expect the locks_start_grace()/locks_end_grace() interface here
      to be simpler to build on for future cluster/high-availability work,
      which may require (for example) putting individual filesystems into
      grace, or enforcing grace periods across multiple cluster nodes.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      af558e33
  13. 02 9月, 2008 1 次提交
  14. 09 8月, 2008 1 次提交
    • A
      [NFSD] uninline nfsd4_op_name() · f1c7f79b
      Adrian Bunk 提交于
      There doesn't seem to be a compelling reason why nfsd4_op_name() is
      marked as "inline":
      
      It's only used in a dprintk(), and as long as it has only one caller
      non-ancient gcc versions anyway inline it automatically.
      
      This patch fixes the following compile error with gcc 3.4:
      
        ...
          CC      fs/nfsd/nfs4proc.o
        nfs4proc.c: In function `nfsd4_proc_compound':
        nfs4proc.c:854: sorry, unimplemented: inlining failed in call to
        nfs4proc.c:897: sorry, unimplemented: called from here
        make[3]: *** [fs/nfsd/nfs4proc.o] Error 1
      Reported-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      [ Also made it "const char *"  - Linus]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f1c7f79b
  15. 03 7月, 2008 1 次提交
  16. 24 6月, 2008 2 次提交
  17. 19 4月, 2008 1 次提交
  18. 02 2月, 2008 1 次提交
    • F
      nfsd: Allow AIX client to read dir containing mountpoints · 406a7ea9
      Frank Filz 提交于
      This patch addresses a compatibility issue with a Linux NFS server and
      AIX NFS client.
      
      I have exported /export as fsid=0 with sec=krb5:krb5i
      I have mount --bind /home onto /export/home
      I have exported /export/home with sec=krb5i
      
      The AIX client mounts / -o sec=krb5:krb5i onto /mnt
      
      If I do an ls /mnt, the AIX client gets a permission error. Looking at
      the network traceIwe see a READDIR looking for attributes
      FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID. The response gives a
      NFS4ERR_WRONGSEC which the AIX client is not expecting.
      
      Since the AIX client is only asking for an attribute that is an
      attribute of the parent file system (pseudo root in my example), it
      seems reasonable that there should not be an error.
      
      In discussing this issue with Bruce Fields, I initially proposed
      ignoring the error in nfsd4_encode_dirent_fattr() if all that was being
      asked for was FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID, however,
      Bruce suggested that we avoid calling cross_mnt() if only these
      attributes are requested.
      
      The following patch implements bypassing cross_mnt() if only
      FATTR4_RDATTR_ERROR and FATTR4_MOUNTED_ON_FILEID are called. Since there
      is some complexity in the code in nfsd4_encode_fattr(), I didn't want to
      duplicate code (and introduce a maintenance nightmare), so I added a
      parameter to nfsd4_encode_fattr() that indicates whether it should
      ignore cross mounts and simply fill in the attribute using the passed in
      dentry as opposed to it's parent.
      Signed-off-by: NFrank Filz <ffilzlnx@us.ibm.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      406a7ea9