1. 25 6月, 2014 1 次提交
  2. 10 6月, 2014 1 次提交
    • W
      pnfs: fix lockup caused by pnfs_generic_pg_test · c5e20cb7
      Weston Andros Adamson 提交于
      end_offset and req_offset both return u64 - avoid casting to u32
      until it's needed, when it's less than the (u32) size returned by
      nfs_generic_pg_test.
      
      Also, fix the comments in pnfs_generic_pg_test.
      
      Running the cthon04 special tests caused this lockup in the
      "write/read at 2GB, 4GB edges" test when running against a file layout server:
      
      BUG: soft lockup - CPU#0 stuck for 22s! [bigfile2:823]
      Modules linked in: nfs_layout_nfsv41_files rpcsec_gss_krb5 nfsv4 nfs fscache ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_mangle ip6table_filter ip6_tables iptable_nat nf_nat_ipv4 nf_nat iptable_mangle ppdev crc32c_intel aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd serio_raw e1000 shpchp i2c_piix4 i2c_core parport_pc parport nfsd auth_rpcgss oid_registry exportfs nfs_acl lockd sunrpc btrfs xor zlib_deflate raid6_pq mptspi scsi_transport_spi mptscsih mptbase ata_generic floppy autofs4
      irq event stamp: 205958
      hardirqs last  enabled at (205957): [<ffffffff814a62dc>] restore_args+0x0/0x30
      hardirqs last disabled at (205958): [<ffffffff814ad96a>] apic_timer_interrupt+0x6a/0x80
      softirqs last  enabled at (205956): [<ffffffff8103ffb2>] __do_softirq+0x1ea/0x2ab
      softirqs last disabled at (205951): [<ffffffff8104026d>] irq_exit+0x44/0x9a
      CPU: 0 PID: 823 Comm: bigfile2 Not tainted 3.15.0-rc1-branch-pgio_plus+ #3
      Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
      task: ffff8800792ec480 ti: ffff880078c4e000 task.ti: ffff880078c4e000
      RIP: 0010:[<ffffffffa02ce51f>]  [<ffffffffa02ce51f>] nfs_page_group_unlock+0x3e/0x4b [nfs]
      RSP: 0018:ffff880078c4fab0  EFLAGS: 00000202
      RAX: 0000000000000fff RBX: ffff88006bf83300 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff88006bf83300
      RBP: ffff880078c4fab8 R08: 0000000000000001 R09: 0000000000000000
      R10: ffffffff8249840c R11: 0000000000000000 R12: 0000000000000035
      R13: ffff88007ffc72d8 R14: 0000000000000001 R15: 0000000000000000
      FS:  00007f45f11b7740(0000) GS:ffff88007f200000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f3a8cb632d0 CR3: 000000007931c000 CR4: 00000000001407f0
      Stack:
       ffff88006bf832c0 ffff880078c4fb00 ffffffffa02cec22 ffff880078c4fad8
       00000fff810f9d99 ffff880078c4fca0 ffff88006bf832c0 ffff88006bf832c0
       ffff880078c4fca0 ffff880078c4fd60 ffff880078c4fb28 ffffffffa02cee34
      Call Trace:
       [<ffffffffa02cec22>] __nfs_pageio_add_request+0x298/0x34f [nfs]
       [<ffffffffa02cee34>] nfs_pageio_add_request+0x1f/0x42 [nfs]
       [<ffffffffa02d1722>] nfs_do_writepage+0x1b5/0x1e4 [nfs]
       [<ffffffffa02d1764>] nfs_writepages_callback+0x13/0x25 [nfs]
       [<ffffffffa02d1751>] ? nfs_do_writepage+0x1e4/0x1e4 [nfs]
       [<ffffffff810eb32d>] write_cache_pages+0x254/0x37f
       [<ffffffffa02d1751>] ? nfs_do_writepage+0x1e4/0x1e4 [nfs]
       [<ffffffff8149cf9e>] ? printk+0x54/0x56
       [<ffffffff810eacca>] ? __set_page_dirty_nobuffers+0x22/0xe9
       [<ffffffffa016d864>] ? put_rpccred+0x38/0x101 [sunrpc]
       [<ffffffffa02d1ae1>] nfs_writepages+0xb4/0xf8 [nfs]
       [<ffffffff810ec59c>] do_writepages+0x21/0x2f
       [<ffffffff810e36e8>] __filemap_fdatawrite_range+0x55/0x57
       [<ffffffff810e374a>] filemap_write_and_wait_range+0x2d/0x5b
       [<ffffffffa030ba0a>] nfs4_file_fsync+0x3a/0x98 [nfsv4]
       [<ffffffff8114ee3c>] vfs_fsync_range+0x18/0x20
       [<ffffffff810e40c2>] generic_file_aio_write+0xa7/0xbd
       [<ffffffffa02c5c6b>] nfs_file_write+0xf0/0x170 [nfs]
       [<ffffffff81129215>] do_sync_write+0x59/0x78
       [<ffffffff8112956c>] vfs_write+0xab/0x107
       [<ffffffff81129c8b>] SyS_write+0x49/0x7f
       [<ffffffff814acd12>] system_call_fastpath+0x16/0x1b
      Reported-by: NAnna Schumaker <Anna.Schumaker@netapp.com>
      Signed-off-by: NWeston Andros Adamson <dros@primarydata.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      c5e20cb7
  3. 29 5月, 2014 11 次提交
  4. 18 4月, 2014 1 次提交
  5. 20 2月, 2014 2 次提交
  6. 14 1月, 2014 1 次提交
  7. 22 8月, 2013 1 次提交
  8. 19 6月, 2013 2 次提交
  9. 07 6月, 2013 3 次提交
  10. 26 3月, 2013 1 次提交
  11. 21 3月, 2013 3 次提交
  12. 01 3月, 2013 1 次提交
    • W
      NFSv4.1: LAYOUTGET EDELAY loops timeout to the MDS · 30005121
      Weston Andros Adamson 提交于
      The client will currently try LAYOUTGETs forever if a server is returning
      NFS4ERR_LAYOUTTRYLATER or NFS4ERR_RECALLCONFLICT - even if the client no
      longer needs the layout (ie process killed, unmounted).
      
      This patch uses the DS timeout value (module parameter 'dataserver_timeo'
      via rpc layer) to set an upper limit of how long the client tries LATOUTGETs
      in this situation.  Once the timeout is reached, IO is redirected to the MDS.
      
      This also changes how the client checks if a layout is on the clp list
      to avoid a double list_add.
      Signed-off-by: NWeston Andros Adamson <dros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      30005121
  13. 24 2月, 2013 1 次提交
    • B
      pnfs: fix resend_to_mds for directio · 78f33277
      Benny Halevy 提交于
      Pass the directio request on pageio_init to clean up the API.
      
      Percolate pg_dreq from original nfs_pageio_descriptor to the
      pnfs_{read,write}_done_resend_to_mds and use it on respective
      call to nfs_pageio_init_{read,write} on the newly created
      nfs_pageio_descriptor.
      
      Reproduced by command:
       mount -o vers=4.1 server:/ /mnt
       dd bs=128k count=8 if=/dev/zero of=/mnt/dd.out oflag=direct
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
      IP: [<ffffffffa021a3a8>] atomic_inc+0x4/0x9 [nfs]
      PGD 34786067 PUD 34794067 PMD 0
      Oops: 0002 [#1] SMP
      Modules linked in: nfs_layout_nfsv41_files nfsv4 nfs nfsd lockd nfs_acl auth_rpcgss exportfs sunrpc btrfs zlib_deflate libcrc32c ipv6 autofs4
      CPU 1
      Pid: 259, comm: kworker/1:2 Not tainted 3.8.0-rc6 #2 Bochs Bochs
      RIP: 0010:[<ffffffffa021a3a8>]  [<ffffffffa021a3a8>] atomic_inc+0x4/0x9 [nfs]
      RSP: 0018:ffff880038f8fa68  EFLAGS: 00010206
      RAX: ffffffffa021a6a9 RBX: ffff880038f8fb48 RCX: 00000000000a0000
      RDX: ffffffffa021e616 RSI: ffff8800385e9a40 RDI: 0000000000000028
      RBP: ffff880038f8fa68 R08: ffffffff81ad6720 R09: ffff8800385e9510
      R10: ffffffffa0228450 R11: ffff880038e87418 R12: ffff8800385e9a40
      R13: ffff8800385e9a70 R14: ffff880038f8fb38 R15: ffffffffa0148878
      FS:  0000000000000000(0000) GS:ffff88003e400000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000028 CR3: 0000000034789000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process kworker/1:2 (pid: 259, threadinfo ffff880038f8e000, task ffff880038302480)
      Stack:
       ffff880038f8fa78 ffffffffa021a6bf ffff880038f8fa88 ffffffffa021bb82
       ffff880038f8fae8 ffffffffa021f454 ffff880038f8fae8 ffffffff8109689d
       ffff880038f8fab8 ffffffff00000006 0000000000000000 ffff880038f8fb48
      Call Trace:
       [<ffffffffa021a6bf>] nfs_direct_pgio_init+0x16/0x18 [nfs]
       [<ffffffffa021bb82>] nfs_pgheader_init+0x6a/0x6c [nfs]
       [<ffffffffa021f454>] nfs_generic_pg_writepages+0x51/0xf8 [nfs]
       [<ffffffff8109689d>] ? mark_held_locks+0x71/0x99
       [<ffffffffa0148878>] ? rpc_release_resources_task+0x37/0x37 [sunrpc]
       [<ffffffffa021bc25>] nfs_pageio_doio+0x1a/0x43 [nfs]
       [<ffffffffa021be7c>] nfs_pageio_complete+0x16/0x2c [nfs]
       [<ffffffffa02608be>] pnfs_write_done_resend_to_mds+0x95/0xc5 [nfsv4]
       [<ffffffffa0148878>] ? rpc_release_resources_task+0x37/0x37 [sunrpc]
       [<ffffffffa028e27f>] filelayout_reset_write+0x8c/0x99 [nfs_layout_nfsv41_files]
       [<ffffffffa028e5f9>] filelayout_write_done_cb+0x4d/0xc1 [nfs_layout_nfsv41_files]
       [<ffffffffa024587a>] nfs4_write_done+0x36/0x49 [nfsv4]
       [<ffffffffa021f996>] nfs_writeback_done+0x53/0x1cc [nfs]
       [<ffffffffa021fb1d>] nfs_writeback_done_common+0xe/0x10 [nfs]
       [<ffffffffa028e03d>] filelayout_write_call_done+0x28/0x2a [nfs_layout_nfsv41_files]
       [<ffffffffa01488a1>] rpc_exit_task+0x29/0x87 [sunrpc]
       [<ffffffffa014a0c9>] __rpc_execute+0x11d/0x3cc [sunrpc]
       [<ffffffff810969dc>] ? trace_hardirqs_on_caller+0x117/0x173
       [<ffffffffa014a39f>] rpc_async_schedule+0x27/0x32 [sunrpc]
       [<ffffffffa014a378>] ? __rpc_execute+0x3cc/0x3cc [sunrpc]
       [<ffffffff8105f8c1>] process_one_work+0x226/0x422
       [<ffffffff8105f7f4>] ? process_one_work+0x159/0x422
       [<ffffffff81094757>] ? lock_acquired+0x210/0x249
       [<ffffffffa014a378>] ? __rpc_execute+0x3cc/0x3cc [sunrpc]
       [<ffffffff810600d8>] worker_thread+0x126/0x1c4
       [<ffffffff8105ffb2>] ? manage_workers+0x240/0x240
       [<ffffffff81064ef8>] kthread+0xb1/0xb9
       [<ffffffff81064e47>] ? __kthread_parkme+0x65/0x65
       [<ffffffff815206ec>] ret_from_fork+0x7c/0xb0
       [<ffffffff81064e47>] ? __kthread_parkme+0x65/0x65
      Code: 00 83 38 02 74 12 48 81 4b 50 00 00 01 00 c7 83 60 07 00 00 01 00 00 00 48 89 df e8 55 fe ff ff 5b 41 5c 5d c3 66 90 55 48 89 e5 <f0> ff 07 5d c3 55 48 89 e5 f0 ff 0f 0f 94 c0 84 c0 0f 95 c0 0f
      RIP  [<ffffffffa021a3a8>] atomic_inc+0x4/0x9 [nfs]
       RSP <ffff880038f8fa68>
      CR2: 0000000000000028
      Signed-off-by: NBenny Halevy <bhalevy@tonian.com>
      Cc: stable@kernel.org [>= 3.6]
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      78f33277
  14. 15 2月, 2013 1 次提交
    • T
      NFSv4.1: Fix bulk recall and destroy of layouts · fd9a8d71
      Trond Myklebust 提交于
      The current code in pnfs_destroy_all_layouts() assumes that removing
      the layout from the server->layouts list is sufficient to make it
      invisible to other processes. This ignores the fact that most
      users access the layout through the nfs_inode->layout...
      There is further breakage due to lack of reference counting of the
      layouts, meaning that the whole thing Oopses at the drop of a hat.
      
      The code in initiate_bulk_draining() is almost correct, and can be
      used as a model for pnfs_destroy_all_layouts(), so move that
      code to pnfs.c, and refactor the code to allow us to choose between
      a single filesystem bulk recall, and a recall of all layouts.
      Also note that initiate_bulk_draining() currently calls iput() while
      holding locks. Fix that too.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: stable@vger.kernel.org
      fd9a8d71
  15. 04 1月, 2013 1 次提交
  16. 05 11月, 2012 2 次提交
  17. 01 11月, 2012 1 次提交
  18. 09 10月, 2012 2 次提交
  19. 06 10月, 2012 1 次提交
  20. 05 10月, 2012 2 次提交
  21. 03 10月, 2012 1 次提交