1. 02 7月, 2011 1 次提交
    • J
      cifs: set socket send and receive timeouts before attempting connect · ee1b3ea9
      Jeff Layton 提交于
      Benjamin S. reported that he was unable to suspend his machine while
      it had a cifs share mounted. The freezer caused this to spew when he
      tried it:
      
      -----------------------[snip]------------------
      PM: Syncing filesystems ... done.
      Freezing user space processes ... (elapsed 0.01 seconds) done.
      Freezing remaining freezable tasks ...
      Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0):
      cifsd         S ffff880127f7b1b0     0  1821      2 0x00800000
       ffff880127f7b1b0 0000000000000046 ffff88005fe008a8 ffff8800ffffffff
       ffff880127cee6b0 0000000000011100 ffff880127737fd8 0000000000004000
       ffff880127737fd8 0000000000011100 ffff880127f7b1b0 ffff880127736010
      Call Trace:
       [<ffffffff811e85dd>] ? sk_reset_timer+0xf/0x19
       [<ffffffff8122cf3f>] ? tcp_connect+0x43c/0x445
       [<ffffffff8123374e>] ? tcp_v4_connect+0x40d/0x47f
       [<ffffffff8126ce41>] ? schedule_timeout+0x21/0x1ad
       [<ffffffff8126e358>] ? _raw_spin_lock_bh+0x9/0x1f
       [<ffffffff811e81c7>] ? release_sock+0x19/0xef
       [<ffffffff8123e8be>] ? inet_stream_connect+0x14c/0x24a
       [<ffffffff8104485b>] ? autoremove_wake_function+0x0/0x2a
       [<ffffffffa02ccfe2>] ? ipv4_connect+0x39c/0x3b5 [cifs]
       [<ffffffffa02cd7b7>] ? cifs_reconnect+0x1fc/0x28a [cifs]
       [<ffffffffa02cdbdc>] ? cifs_demultiplex_thread+0x397/0xb9f [cifs]
       [<ffffffff81076afc>] ? perf_event_exit_task+0xb9/0x1bf
       [<ffffffffa02cd845>] ? cifs_demultiplex_thread+0x0/0xb9f [cifs]
       [<ffffffffa02cd845>] ? cifs_demultiplex_thread+0x0/0xb9f [cifs]
       [<ffffffff810444a1>] ? kthread+0x7a/0x82
       [<ffffffff81002d14>] ? kernel_thread_helper+0x4/0x10
       [<ffffffff81044427>] ? kthread+0x0/0x82
       [<ffffffff81002d10>] ? kernel_thread_helper+0x0/0x10
      
      Restarting tasks ... done.
      -----------------------[snip]------------------
      
      We do attempt to perform a try_to_freeze in cifs_reconnect, but the
      connection attempt itself seems to be taking longer than 20s to time
      out. The connect timeout is governed by the socket send and receive
      timeouts, so we can shorten that period by setting those timeouts
      before attempting the connect instead of after.
      
      Adam Williamson tested the patch and said that it seems to have fixed
      suspending on his laptop when a cifs share is mounted.
      Reported-by: NBenjamin S <da_joind@gmx.net>
      Tested-by: NAdam Williamson <awilliam@redhat.com>
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NSteve French <sfrench@us.ibm.com>
      ee1b3ea9
  2. 01 7月, 2011 6 次提交
  3. 30 6月, 2011 12 次提交
  4. 29 6月, 2011 21 次提交