On Wed, Aug 6, 2014 at 11:06 PM, Ilya Dryomov <ilya.dryomov@xxxxxxxxxxx> wrote: > On Wed, Aug 6, 2014 at 10:32 PM, Alex Elder <elder@xxxxxxxx> wrote: >> On 08/05/2014 02:38 AM, Ilya Dryomov wrote: >>> While it was never a good idea to sleep in request_fn(), commit >>> 34c6bc2c919a ("locking/mutexes: Add extra reschedule point") made it >>> a *bad* idea. mutex_lock() since 3.15 may reschedule *before* putting >>> task on the mutex wait queue, which for tasks in !TASK_RUNNING state >>> means block forever. request_fn() may be called with !TASK_RUNNING on >>> the way to schedule() in io_schedule(). >>> >>> Offload request handling to a workqueue, one per rbd device, to avoid >>> calling blocking primitives from rbd_request_fn(). >> >> Off topic... If you supply "--patience" to your git diff command >> you'll get an easier-to-read result in some cases (like this one). >> If you like that you can just do: >> git config --global --add diff.algorithm patience > > I'm generally using (and used to review this patch in particular) > --histogram. In my experience it gives slightly better results than > --patience. Didn't think of putting it into .gitconfig though. Looks like --histogram beats --patience in this case too. alloc_workqueue() hunk is much better, otherwise identical. Thanks, Ilya -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html