1. 04 2月, 2007 9 次提交
    • T
      NFS: Dont clobber more uptodate values in nfs_set_verifier() · c79ba787
      Trond Myklebust 提交于
      nfs_lookup_revalidate and friends are not serialised, so it is currently
      quite possible for the dentry to be revalidated, and then have the
      updated verifier replaced with an older value by another process.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      c79ba787
    • T
      NFS: Also use readdir info to revalidate positive dentries · ef75c797
      Trond Myklebust 提交于
      If the fileid of the cached dentry fails to match that returned by
      the readdir call, then we should also d_drop. Try to take into account the
      fact that on NFSv4, readdir may return the "mounted_on_fileid" by looking
      for submounts.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      ef75c797
    • T
      NFS: Fix a readdir/lookup inefficiency. · df1d5d23
      Trond Myklebust 提交于
      Make sure that nfs_readdir_lookup() handles negative dentries correctly.
      If d_lookup() returns a negative dentry, then we need to d_drop() that
      since readdir shows that it should be positive.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      df1d5d23
    • T
      NFS: Fix up "rm -rf"... · ccfeb506
      Trond Myklebust 提交于
      When a file is being scheduled for deletion by means of the sillyrename
      mechanism, it makes sense to start out writeback of the dirty data as
      soon as possible in order to ensure that the delete can occur. Examples of
      cases where this is an issue include "rm -rf", which will busy-wait until
      the file is closed, and the sillyrename completes.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      ccfeb506
    • T
      NFSv4: Fix NFS4_enc_server_caps_sz/NFS4_dec_server_caps_sz · ab91f264
      Trond Myklebust 提交于
      Insert missing encode_putfh_maxsz/decode_putfh_maxsz
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      ab91f264
    • T
      NFSv4: Fix Oops in nfs4_create_referral_server · f2d0d85e
      Trond Myklebust 提交于
      The filehandle that is passed into nfs4_create_referral_server is
      not initialised. The expectation is that nfs4_create_referral_server will
      initialise it, and return it to the caller.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      f2d0d85e
    • T
      NLM: Fix double free in __nlm_async_call · a995e9eb
      Trond Myklebust 提交于
      rpc_call_async() will always call rpc_release_calldata(), so it is an
      error for __nlm_async_call() to do so as well.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      a995e9eb
    • A
      [PATCH] revert blockdev direct io back to 2.6.19 version · b2e895db
      Andrew Morton 提交于
      Andrew Vasquez is reporting as-iosched oopses and a 65% throughput
      slowdown due to the recent special-casing of direct-io against
      blockdevs.  We don't know why either of these things are occurring.
      
      The patch minimally reverts us back to the 2.6.19 code for a 2.6.20
      release.
      
      Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
      Cc: Ken Chen <kenchen@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b2e895db
    • K
      [PATCH] aio: fix buggy put_ioctx call in aio_complete - v2 · dee11c23
      Ken Chen 提交于
      An AIO bug was reported that sleeping function is being called in softirq
      context:
      
      BUG: warning at kernel/mutex.c:132/__mutex_lock_common()
      Call Trace:
           [<a000000100577b00>] __mutex_lock_slowpath+0x640/0x6c0
           [<a000000100577ba0>] mutex_lock+0x20/0x40
           [<a0000001000a25b0>] flush_workqueue+0xb0/0x1a0
           [<a00000010018c0c0>] __put_ioctx+0xc0/0x240
           [<a00000010018d470>] aio_complete+0x2f0/0x420
           [<a00000010019cc80>] finished_one_bio+0x200/0x2a0
           [<a00000010019d1c0>] dio_bio_complete+0x1c0/0x200
           [<a00000010019d260>] dio_bio_end_aio+0x60/0x80
           [<a00000010014acd0>] bio_endio+0x110/0x1c0
           [<a0000001002770e0>] __end_that_request_first+0x180/0xba0
           [<a000000100277b90>] end_that_request_chunk+0x30/0x60
           [<a0000002073c0c70>] scsi_end_request+0x50/0x300 [scsi_mod]
           [<a0000002073c1240>] scsi_io_completion+0x200/0x8a0 [scsi_mod]
           [<a0000002074729b0>] sd_rw_intr+0x330/0x860 [sd_mod]
           [<a0000002073b3ac0>] scsi_finish_command+0x100/0x1c0 [scsi_mod]
           [<a0000002073c2910>] scsi_softirq_done+0x230/0x300 [scsi_mod]
           [<a000000100277d20>] blk_done_softirq+0x160/0x1c0
           [<a000000100083e00>] __do_softirq+0x200/0x240
           [<a000000100083eb0>] do_softirq+0x70/0xc0
      
      See report: http://marc.theaimsgroup.com/?l=linux-kernel&m=116599593200888&w=2
      
      flush_workqueue() is not allowed to be called in the softirq context.
      However, aio_complete() called from I/O interrupt can potentially call
      put_ioctx with last ref count on ioctx and triggers bug.  It is simply
      incorrect to perform ioctx freeing from aio_complete.
      
      The bug is trigger-able from a race between io_destroy() and aio_complete().
      A possible scenario:
      
      cpu0                               cpu1
      io_destroy                         aio_complete
        wait_for_all_aios {                __aio_put_req
           ...                                 ctx->reqs_active--;
           if (!ctx->reqs_active)
              return;
        }
        ...
        put_ioctx(ioctx)
      
                                           put_ioctx(ctx);
                                              __put_ioctx
                                                bam! Bug trigger!
      
      The real problem is that the condition check of ctx->reqs_active in
      wait_for_all_aios() is incorrect that access to reqs_active is not
      being properly protected by spin lock.
      
      This patch adds that protective spin lock, and at the same time removes
      all duplicate ref counting for each kiocb as reqs_active is already used
      as a ref count for each active ioctx.  This also ensures that buggy call
      to flush_workqueue() in softirq context is eliminated.
      Signed-off-by: N"Ken Chen" <kenchen@google.com>
      Cc: Zach Brown <zach.brown@oracle.com>
      Cc: Suparna Bhattacharya <suparna@in.ibm.com>
      Cc: Benjamin LaHaise <bcrl@kvack.org>
      Cc: Badari Pulavarty <pbadari@us.ibm.com>
      Cc: <stable@kernel.org>
      Acked-by: NJeff Moyer <jmoyer@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      dee11c23
  2. 02 2月, 2007 2 次提交
  3. 31 1月, 2007 9 次提交
  4. 30 1月, 2007 1 次提交
  5. 27 1月, 2007 15 次提交
  6. 25 1月, 2007 1 次提交
  7. 23 1月, 2007 3 次提交