Messages in this thread Patch in this message |  | | | Date | Fri, 25 Mar 2011 15:20:08 +0100 | | From | Jens Axboe <> | | Subject | Re: [GIT PULL] Core block IO bits for 2.6.39 - early Oops |
| |
On 2011-03-25 15:14, Markus Trippelsdorf wrote: > On 2011.03.25 at 15:10 +0100, Jens Axboe wrote: >> On 2011-03-25 14:09, Markus Trippelsdorf wrote: >>> On 2011.03.25 at 13:44 +0100, Jens Axboe wrote: >>>> On 2011-03-25 10:57, Markus Trippelsdorf wrote: >>>>> >>>>> Reverting it solves all problems here. >>>> >>>> Can you try this one? >>> >>> This one doesn't help; I still get the same BUG. >>> >>> BTW if you're having trouble reproducing this, here is the only non >>> stock xfs option that I use on the affected partitions: >>> >>> noatime,logbsize=262144 >> >> This? > > No.
Lets expand the scope a bit, this one?
diff --git a/block/blk-core.c b/block/blk-core.c index 59b5c00..5876c73 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1193,6 +1193,7 @@ static bool attempt_plug_merge(struct task_struct *tsk, struct request_queue *q, struct request *rq; bool ret = false; + preempt_disable(); plug = tsk->plug; if (!plug) goto out; @@ -1215,6 +1216,7 @@ static bool attempt_plug_merge(struct task_struct *tsk, struct request_queue *q, } } out: + preempt_enable(); return ret; } @@ -1309,6 +1311,7 @@ get_rq: put_cpu(); } + preempt_disable(); plug = current->plug; if (plug) { if (!plug->should_sort && !list_empty(&plug->list)) { @@ -1324,7 +1327,9 @@ get_rq: req->cmd_flags |= REQ_ON_PLUG; list_add_tail(&req->queuelist, &plug->list); drive_stat_acct(req, 1); + preempt_enable(); } else { + preempt_enable(); spin_lock_irq(q->queue_lock); add_acct_request(q, req, where); __blk_run_queue(q, false);
-- Jens Axboe
|  |