1. 02 Sep, 2002 1 commit
  2. 25 Aug, 2002 10 commits
  3. 23 Aug, 2002 29 commits
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: tweak nfsd_readdir() for NFSv4 · 10715329
      Kendrick M. Smith authored
      This patch makes three small changes to nfsd_readdir().
      
      First, the 'filldir' routine for NFSv4 may return an arbitrary error,
      which should become the return value for nfsd_readdir().  I implemented
      this by adding an 'nfserr' field to the 'struct readdir_cd'.
      
      Second, in NFSv4 the caller of nfsd_readdir() will specify an attribute
      bitmap, which must be communicated to the 'filldir' routine.  I implemented
      this by adding a @bitmap parameter to nfsd_readdir() and a corresponding
      field in the 'struct readdir_cd'.  (The bitmap is not interpreted in any
      way by nfsd_readdir().)
      
      Finally, NFSv4 defines a new error nfserr_readdir_nospc, which indicates
      that there was not enough buffer space to encode a single entry.
      10715329
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: new argument to nfsd_access() · c9f192bd
      Kendrick M. Smith authored
      NFSv4 defines a new field in the ACCESS response: a bitmap to indicate
      which access bits requested by the client are "supported", i.e. meaningful
      for the object in question.
      
      This patch adds a new parameter @supported to nfsd_access(), so that
      nfsd_access() can set the value of this bitmap.
      c9f192bd
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: tweak nfsd_create_v3() for NFSv4 · b05942a3
      Kendrick M. Smith authored
      File creation in NFSv4 is almost the same as in NFSv3, with one minor
      difference.  If an UNCHECKED create is done, and the file exists, we
      don't set any attributes.  Exception: If size==0 is specified as part
      of the attributes, then we do truncate the file, but only after processing
      the rest of the OPEN.  (File creation is always part of an OPEN request.)
      
      This patch defines a new argument *truncp to nfsd_create_v3(), which
      will be NULL for v3 requests.  For v4 requests, it will point to a
      variable which should be set to 1 if file truncation is still needed.
      
      The logic in nfsd_create_v3() is changed as follows: If
        - *truncp is not NULL
        - the create is UNCHECKED
        - the file exists
      then nfsd_create_v3() returns immediately.  If size==0 is specified,
      then *truncp is set to 1.
      
      This is kind of a hack, but the only alternative I could see was creating
      a new routine nfsd_create_v4(), which would be identical to nfsd_create_v3()
      except for this point.
      b05942a3
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: allow type==0 in nfsd_unlink() · e31ff0d1
      Kendrick M. Smith authored
      If nfsd_unlink() is called with @type equal to 0, then let it do the
      right thing regardless of the type of the file being unlinked.  This
      is needed for the NFSv4 REMOVE operation, which works for any type of
      file, even directories.
      e31ff0d1
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: overflow check in nfsd_commit() · 15a094e2
      Kendrick M. Smith authored
      Sanity check COMMIT arguments by ensuring that (start)+(length) < 2^64.
      The check is done in a way which is free of signedness pathologies in
      all cases.
      
      This change was inspired by pynfs, Peter Astrand's regression testsuite
      for NFSv4 servers.  The change is necessary for all of the COMMIT tests
      to pass.  However, it's a little open to debate whether the change is
      really needed.  I'm curious to hear the opinions of other developers.
      15a094e2
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: allow resfh==fhp in fh_compose() · 7aefa9c7
      Kendrick M. Smith authored
      Change fh_compose() so that it will do the right thing if fhp==res_fh.
      (This is convenient in the NFSv4 LOOKUP operation, which _replaces_
      CURRENT_FH with the filehandle obtained by lookup.)
      
      This requires extracting the interesting parts of the reference
      filehandle first, then calling fh_put if it is a re-use.
      7aefa9c7
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: wipe out all evidence in fh_put() · e7e42b20
      Kendrick M. Smith authored
      When a filehandle is cleared with fh_put(), wipe out all traces by
      clearing ->fh_pre_saved and ->fh_post_saved.  This prevents
      fill_post_wcc() from complaining if the filehandle is later reused.
      (This could happen in NFSv4 to CURRENT_FH if, for example, LOOKUP LOOKUP
      occurs in a COMPOUND.)
      e7e42b20
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: return err_nofilehandle if missing fh in fh_verify() · d8a6f98f
      Kendrick M. Smith authored
      Return nfserr_nofilehandle (v4 only) in fh_verify() if the filehandle
      has not been set.
      d8a6f98f
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: change ->rq_vers==3 to ->rq_vers>2 · 82afc1e9
      Kendrick M. Smith authored
      In a few places on the server, I had to change code that looked like:
      
         if (rqstp->rq_vers == 3)
             /* NFSv3 behavior */
         else
             /* NFSv2 behavior */
      
      to:
      
         if (rqstp->rq_vers > 2)
             /* NFSv3 behavior */
         else
             /* NFSv2 behavior */
      
      so that we would get the NFSv3 behavior, not the NFSv2 behavior,
      in NFSv4.  This patch collects all changes of this type.
      82afc1e9
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: fix type checking in fh_verify() · dc42d957
      Kendrick M. Smith authored
      Change the type checking in fh_verify().  This fixes a bug which
      I reported on the mailing list a few days ago, and also adds a
      new error code nfserr_symlink (v4 only).  This is returned whenever
      an operation which is illegal for symlinks is attempted on a symlink,
      and takes precedence over ERR_NOTDIR or ERR_INVAL.
      dc42d957
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: NFSv4: error codes in include/linux/nfsd/nfsd.h · 6fc2f6e7
      Kendrick M. Smith authored
      Add some new NFSv4-only error codes to include/linux/nfsd/nfsd.h
      6fc2f6e7
    • Kendrick M. Smith's avatar
      [PATCH] kNFSd: new error codes for NFSv4 · fc1aac14
      Kendrick M. Smith authored
      This patch adds new NFSv4-only error codes to include/linux/nfs.h,
      and also indicates which of the old error codes still exist in NFSv4.
      fc1aac14
    • Neil Brown's avatar
      [PATCH] md: Fix up oops-able error message · 51f5eb10
      Neil Brown authored
      If we get here, then bio->bi_bdev isn't set, so we really
      shouldn't de-reference it.
      51f5eb10
    • Neil Brown's avatar
      8c33f844
    • Neil Brown's avatar
      [PATCH] md: Make the old-ioctl warning in md only complain about MD ioctls. · 4d5ffe99
      Neil Brown authored
      ..as some standard ioctls expect the per-device ioctl routine
      to return EINVAL and then fall back on a standard implementation.
      4d5ffe99
    • Neil Brown's avatar
      [PATCH] md: Remove per-personality 'operational' and 'write_only' flags · 09b63e46
      Neil Brown authored
      raid1, raid5 and multipath maintain their own
      'operational' flag.  This is equivalent to
         !rdev->faulty
      and so isn't needed.
      Similarly raid1 and raid1 maintain a "write_only" flag
      that is equivalnt to
         !rdev->in_sync
      so it isn't needed either.
      
      As part of implementing this change, we introduce some extra
      flag bit in raid5 that are meaningful only inside 'handle_stripe'.
      Some of these replace the "action" array which recorded what
      actions were required (and would be performed after the stripe
      spinlock was released).  This has the advantage of reducing our
      dependance on MD_SB_DISKS which personalities shouldn't need
      to know about.
      09b63e46
    • Neil Brown's avatar
      [PATCH] md: Remove 'alias_device' flag. · 0ce3712f
      Neil Brown authored
      This flag was used by multipath to make sure only
      one superblock was written, as there is only one
      real device.
      
      The relevant test is now more explicitly dependant on multipath,
      and the flag is gone.
      0ce3712f
    • Neil Brown's avatar
      [PATCH] md: Improve code for deciding whether to skip an IO in raid5 · 4bb04406
      Neil Brown authored
      Instread of the 'skip' variable, just test if rdev is NULL or not.
      4bb04406
    • Neil Brown's avatar
      [PATCH] md: Make spare handling simple ... personalities know less · acd8a264
      Neil Brown authored
      1/ Personalities only know about raid_disks devices.
         Some might be not in_sync and so cannot be read from,
         but must be written to.
      	- change MD_SB_DISKS to ->raid_disks
      	- add tests for .write_only
      
      2/ rdev->raid_disk is now -1 for spares.  desc_nr is maintained
         by analyse_sbs and sync_sbs.
      
      3/ spare_inactive method is subsumed into hot_remove_disk
         spare_writable is subsumed into hot_add_disk.
         hot_add_disk decides which slot a new device will hold.
      
      4/ spare_active now finds all non-in_sync devices and marks them
         in_sync.
      
      5/ faulty devices are removed by the md recovery thread as soon
         as they are idle.  Any spares that are available are then added.
      acd8a264
    • Neil Brown's avatar
      [PATCH] md: Remove used_slot field from per-personality info · f39afb82
      Neil Brown authored
      This is equivalent to ->rdev != NULL, so it isn't needed.
      f39afb82
    • Neil Brown's avatar
      [PATCH] md: Keep track of number of pending requests on each component device on an MD array · 3e98f2fb
      Neil Brown authored
      This will allow us to know, in the event of a device failure, when the
      device is completely unused and so can be disconnected from the
      array.  Currently this isn't a problem as drives aren't normally disconnect
      until after a repacement has been rebuilt, which is a LONG TIME, but that
      will change shortly...
      
      We always increment the count under a spinlock after checking that
      it hasn't been disconnected already (rdev!= NULL).
      We disconnect under the same spinlock after checking that the
      count is zero.
      3e98f2fb
    • Neil Brown's avatar
      [PATCH] md: MD error handers and md_sync_acct now get rdev instead of bdev · fff3986f
      Neil Brown authored
      This simplifies the error handlers slighty, but allows for even more
      simplification later.
      fff3986f
    • Neil Brown's avatar
      [PATCH] md: Store rdev instead of bdev in per-personality status arrays · ca995ff7
      Neil Brown authored
      Holding the rdev instead of the bdev does cause an extra
      de-reference, but it is conceptually cleaner and will allow
      lots more tidying up.
      ca995ff7
    • Neil Brown's avatar
      [PATCH] md: Silence a warning in md.c · 97560787
      Neil Brown authored
      ->major_name is "const char *" so we need to sprintf into the kmalloced
      space *before* assigning that space to ->major_name.
      97560787
    • Neil Brown's avatar
      [PATCH] md: Fix assort typos in most recent MD patches.. · bbc58779
      Neil Brown authored
      1/ Raid0 should not be accessing rdev->sb.
      
      2/ Don't unlock rdev (which releases bdev) until after last use of bdev
      
      3/ Fix typo in a printk ( = should be -)
      
      4/ i should be dd_idx in compute_block
      bbc58779
    • Neil Brown's avatar
    • Neil Brown's avatar
      [PATCH] call svc_sock_setbufsize when socket created. · 65a56d6d
      Neil Brown authored
      bufsiz is re-evaluated on recv if SK_CHNGBUF is set,
      but recv will never be reached if the buffers are too small.
      So we have to set to to something vaguely reasonable
      at init time.
      65a56d6d
    • Neil Brown's avatar
      [PATCH] Fix two problems with multiple concurrent nfs/tcp connects. · df0afc51
      Neil Brown authored
      1/ connect requests would be get lost...
        As the comment at the top of svcsock.c says when discussing
        SK_CONN:
       *		after a set, svc_sock_enqueue must be called.
      
        We didn't and so lost conneciton requests.
      
      2/ set the max accept backlog to a more reasonable number to cope
         with bursts of lots of connection requests.
      df0afc51
    • Sam Ravnborg's avatar
      f3b37ba1