1. 19 5月, 2008 2 次提交
  2. 24 4月, 2008 2 次提交
    • J
      SUNRPC: allow svc_recv to break out of 500ms sleep when alloc_page fails · 7b54fe61
      Jeff Layton 提交于
      svc_recv() calls alloc_page(), and if it fails it does a 500ms
      uninterruptible sleep and then reattempts. There doesn't seem to be any
      real reason for this to be uninterruptible, so change it to an
      interruptible sleep. Also check for kthread_stop() and signalled() after
      setting the task state to avoid races that might lead to sleeping after
      kthread_stop() wakes up the task.
      
      I've done some very basic smoke testing with this, but obviously it's
      hard to test the actual changes since this all depends on an
      alloc_page() call failing.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      7b54fe61
    • J
      SUNRPC: have svc_recv() check kthread_should_stop() · 7086721f
      Jeff Layton 提交于
      When using kthreads that call into svc_recv, we want to make sure that
      they do not block there for a long time when we're trying to take down
      the kthread.
      
      This patch changes svc_recv() to check kthread_should_stop() at the same
      places that it checks to see if it's signalled(). Also check just before
      svc_recv() tries to schedule(). By making sure that we check it just
      after setting the task state we can avoid having to use any locking or
      signalling to ensure it doesn't block for a long time.
      
      There's still a chance of a 500ms sleep if alloc_page() fails, but
      that should be a rare occurrence and isn't a terribly long time in
      the context of a kthread being taken down.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      7086721f
  3. 18 3月, 2008 1 次提交
  4. 02 2月, 2008 17 次提交