[PATCH 0/5] backported patches for pnfs-all-2.6.33

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following patches were backported to pnfs-all-2.6.33-2010-05-27:

commit 1d7e6862446faa85a6783c91a9da892ac93222d2
Author: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
Date:   Thu May 27 17:52:24 2010 +0300

    pnfs-obj: panlayout: Fix very old BUG_ONs on ol_state.status
    
    OK This is definitely my stupidity when converting panfs_shim to the
    new objlayout_read/write_done() API. But that was very, very long
    time ago.
    
    So I fixed the stale check on ol_state.status which is never set
    until much later inside the call to generic layer.
    
    While at it I converted the BUG_ONs to WARN_ONs because it could
    be data corruption but otherwise it will not crush the Kernel.
    Better continue to be able to debug it better. (And added missing
    information to the WARN_ON)
    
    Congratulation, I've successfully ran all tests over
    panfs-export/panfs_shim over real Panasas HW. With latest code.
    [ This is with the new panfs-export that is also compatible with
      the std objects layout driver. Patches to that will follow]
    
    TODO:
      I should also simulate/cause some IO errors and see that
      errors are reported at layout_return
    
    Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
    Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>

commit 422e0e67b2933a47afd2e426eee1ff8922de4135
Author: Tao Guo <guotao@xxxxxxxxxxxx>
Date:   Tue May 25 16:33:52 2010 +0300

    pnfs: unlock lo_lock before calling layoutdriver's setup_layoutcommit
    
    So in blocklayoutdriver, we can use GFP_KERNEL to do memory
    allocation in bl_setup_layoutcommit().
    
    The state protected by the lo_lock here is clear now, which is the
    layout_commit's position and state. .i.e write_begin/end_pos,
    nfsi->lo_cred, and the call to pnfs_get_layout_stateid.
    
    Signed-off-by: Tao Guo <guotao@xxxxxxxxxxxx>
    Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
    Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>

commit a19e718c6be6b1e10627f1985483b9cff2bca53b
Author: Andy Adamson <andros@xxxxxxxxxx>
Date:   Mon May 24 14:28:46 2010 -0400

    pnfs-submit: replace layoutcommit_ctx with rpc_cred
    
    Taking a reference on the nfs_open_context to signal that a layoutcommit is
    needed is problematic because the last reference to the context triggers a
    close (nfs_release).  But, if the layout holds a reference on the
    nfs_open_context, then close will not be triggered.
    
    Since we only use the rpc credential from the layoutcommit_ctx, replace the
    layoutcommit_ctx with the rpc_cred.
    
    Hold a reference on the rpc_cred until the layoutcommit rpc returns.
    
    If the layoutdriver fails to setup the layoutcommit, clear the layoutcommit
    properties and put the credential.
    
    Signed-off-by: Andy Adamson <andros@xxxxxxxxxx>
    Tested-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
    [s/do_layoutcommit/layoutcommit_needed/]
    Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>

commit d947cd6af78f5426bd6833d513df4aa95e7a116e
Author: Benny Halevy <bhalevy@xxxxxxxxxxx>
Date:   Wed Apr 14 19:05:13 2010 +0300

    pnfs: async layout return
    
    FIXME: currently there's only one path that requires async layout return
    to avoid blocking of the rpciod like the stack below.
    
    We really neee the pnfs state machine instead.
    
    rpciod/0      D 0000003d8c2d83b0     0  1029      2 0x00000000
    778ccdd0 60264f00 77a6a000 778ccb20 77a6ba20 6001375b 77a6ba20 77a6a000
           77a6a000 778cc8a0 77a6ba70 601b192f 77a6ba50 601b35a6 6ed537f0 77a6a000
           77a6bb00 63506fd8 7b1870c8 77a6bb10 77a6ba90 7b187100 63506fd8 77a6a000
    Call Trace:
    77a6b9f8:  [<6001375b>] _switch_to+0x5e/0xae
    77a6ba28:  [<601b192f>] schedule+0x1dd/0x21b
    77a6ba38:  [<601b35a6>] _raw_spin_unlock_irqrestore+0x18/0x1c
    77a6ba60:  [<7b1870c8>] rpc_wait_bit_killable+0x0/0x3c [sunrpc]
    77a6ba78:  [<7b187100>] rpc_wait_bit_killable+0x38/0x3c [sunrpc]
    77a6ba98:  [<601b1d9f>] __wait_on_bit+0x43/0x76
    77a6bae8:  [<601b1e43>] out_of_line_wait_on_bit+0x71/0x7c
    77a6baf8:  [<7b1870c8>] rpc_wait_bit_killable+0x0/0x3c [sunrpc]
    77a6bb20:  [<600430d6>] wake_bit_function+0x0/0x2e
    77a6bb68:  [<7b18709d>] __rpc_wait_for_completion_task+0x34/0x36 [sunrpc]
    77a6bb78:  [<7bf36048>] nfs4_wait_for_completion_rpc_task+0xb/0xd [nfs]
    77a6bb88:  [<7bf369ac>] pnfs4_proc_layoutreturn+0xae/0xe6 [nfs]
    77a6bbc8:  [<6007c8b1>] kmem_cache_alloc+0xaf/0xbe
    77a6bc08:  [<7bf4dc39>] _pnfs_return_layout+0x450/0x4d4 [nfs]
    77a6bc38:  [<7bf3cb79>] decode_attr_time+0x17/0x4d [nfs]
    77a6bc58:  [<7bf429d7>] decode_getfattr+0xaae/0xc02 [nfs]
    77a6bcb8:  [<7bf4601b>] __nfs4_close+0x15d/0x17a [nfs]
    77a6bd28:  [<7bf46053>] nfs4_close_state+0xb/0xd [nfs]
    77a6bd38:  [<7bf34183>] nfs4_close_context+0x26/0x28 [nfs]
    77a6bd48:  [<7bf2315c>] __put_nfs_open_context+0x79/0xa1 [nfs]
    77a6bd78:  [<7bf23227>] put_nfs_open_context+0xb/0xd [nfs]
    77a6bd88:  [<7bf4b763>] pnfs_layoutcommit_done+0xa5/0xad [nfs]
    77a6bdb8:  [<7bf3b12e>] pnfs_layoutcommit_rpc_done+0x39/0x56 [nfs]
    77a6bde8:  [<7b18712b>] rpc_exit_task+0x27/0x52 [sunrpc]
    77a6be08:  [<7b187817>] __rpc_execute+0x88/0x23a [sunrpc]
    77a6be30:  [<7b1879ee>] rpc_async_schedule+0x0/0x12 [sunrpc]
    77a6be48:  [<7b1879fe>] rpc_async_schedule+0x10/0x12 [sunrpc]
    77a6be58:  [<6003fc45>] worker_thread+0x114/0x1a5
    77a6be80:  [<600430a2>] autoremove_wake_function+0x0/0x34
    77a6beb8:  [<6003fb31>] worker_thread+0x0/0x1a5
    77a6bed8:  [<60042cf7>] kthread+0x8e/0x96
    77a6bf48:  [<60021429>] run_kernel_thread+0x41/0x4a
    77a6bf58:  [<60042c69>] kthread+0x0/0x96
    77a6bf98:  [<60021410>] run_kernel_thread+0x28/0x4a
    77a6bfc8:  [<600136d3>] new_thread_handler+0x71/0x9b
    
    [missing from FIXME: async layout return]
    Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>

commit 7ccc11a731bc2f8021add9907b89654c9146bb32
Author: Zhang Jingwang <zhangjingwang@xxxxxxxxxxxx>
Date:   Tue May 11 16:59:44 2010 +0800

    pnfs-submit: send layoutcommit until IO completed when return layout
    
    If we call layoutcommit before IO completed, then some extents we are
    writing may not be in the commit list. When we return layout, they
    may not get a chance to be committed to server.
    
    Signed-off-by: Zhang Jingwang <zhangjingwang@xxxxxxxxxxxx>
    Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux