1. 04 2月, 2015 13 次提交
  2. 09 10月, 2014 1 次提交
  3. 11 9月, 2014 7 次提交
  4. 04 8月, 2014 1 次提交
  5. 16 7月, 2014 1 次提交
    • N
      sched: Remove proliferation of wait_on_bit() action functions · 74316201
      NeilBrown 提交于
      The current "wait_on_bit" interface requires an 'action'
      function to be provided which does the actual waiting.
      There are over 20 such functions, many of them identical.
      Most cases can be satisfied by one of just two functions, one
      which uses io_schedule() and one which just uses schedule().
      
      So:
       Rename wait_on_bit and        wait_on_bit_lock to
              wait_on_bit_action and wait_on_bit_lock_action
       to make it explicit that they need an action function.
      
       Introduce new wait_on_bit{,_lock} and wait_on_bit{,_lock}_io
       which are *not* given an action function but implicitly use
       a standard one.
       The decision to error-out if a signal is pending is now made
       based on the 'mode' argument rather than being encoded in the action
       function.
      
       All instances of the old wait_on_bit and wait_on_bit_lock which
       can use the new version have been changed accordingly and their
       action functions have been discarded.
       wait_on_bit{_lock} does not return any specific error code in the
       event of a signal so the caller must check for non-zero and
       interpolate their own error code as appropriate.
      
      The wait_on_bit() call in __fscache_wait_on_invalidate() was
      ambiguous as it specified TASK_UNINTERRUPTIBLE but used
      fscache_wait_bit_interruptible as an action function.
      David Howells confirms this should be uniformly
      "uninterruptible"
      
      The main remaining user of wait_on_bit{,_lock}_action is NFS
      which needs to use a freezer-aware schedule() call.
      
      A comment in fs/gfs2/glock.c notes that having multiple 'action'
      functions is useful as they display differently in the 'wchan'
      field of 'ps'. (and /proc/$PID/wchan).
      As the new bit_wait{,_io} functions are tagged "__sched", they
      will not show up at all, but something higher in the stack.  So
      the distinction will still be visible, only with different
      function names (gds2_glock_wait versus gfs2_glock_dq_wait in the
      gfs2/glock.c case).
      
      Since first version of this patch (against 3.15) two new action
      functions appeared, on in NFS and one in CIFS.  CIFS also now
      uses an action function that makes the same freezer aware
      schedule call as NFS.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Acked-by: David Howells <dhowells@redhat.com> (fscache, keys)
      Acked-by: Steven Whitehouse <swhiteho@redhat.com> (gfs2)
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Steve French <sfrench@samba.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20140707051603.28027.72349.stgit@notabene.brownSigned-off-by: NIngo Molnar <mingo@kernel.org>
      74316201
  6. 25 6月, 2014 4 次提交
  7. 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
  8. 29 5月, 2014 11 次提交
  9. 18 4月, 2014 1 次提交