Message ID | 20180402202951.GE388343@devbig577.frc2.facebook.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Tejun, On 2 April 2018 at 21:29, Tejun Heo <tj@kernel.org> wrote: > > Can you see whether the following patch makes any difference? > > Thanks. > > diff --git a/block/blk-timeout.c b/block/blk-timeout.c > index a05e367..f0e6e41 100644 > --- a/block/blk-timeout.c > +++ b/block/blk-timeout.c > @@ -165,7 +165,7 @@ void blk_abort_request(struct request *req) > * No need for fancy synchronizations. > */ > blk_rq_set_deadline(req, jiffies); > - mod_timer(&req->q->timeout, 0); > + kblockd_schedule_work(&req->q->timeout_work); > } else { > if (blk_mark_rq_complete(req)) > return; That patch seems to fix the issue.
On 2 April 2018 at 21:29, Tejun Heo <tj@kernel.org> wrote: > Hello, Sitsofe. > > Can you see whether the following patch makes any difference? > > Thanks. > > diff --git a/block/blk-timeout.c b/block/blk-timeout.c > index a05e367..f0e6e41 100644 > --- a/block/blk-timeout.c > +++ b/block/blk-timeout.c > @@ -165,7 +165,7 @@ void blk_abort_request(struct request *req) > * No need for fancy synchronizations. > */ > blk_rq_set_deadline(req, jiffies); > - mod_timer(&req->q->timeout, 0); > + kblockd_schedule_work(&req->q->timeout_work); > } else { > if (blk_mark_rq_complete(req)) > return; Just out of interest, does the fact that an abort occurs mean that the hardware is somehow broken or badly behaved?
Hello, On Thu, Apr 05, 2018 at 09:14:15AM +0100, Sitsofe Wheeler wrote: > Just out of interest, does the fact that an abort occurs mean that the > hardware is somehow broken or badly behaved? Not really. For example, ATAPI devices depend on exception handling to fetch sense data as a part of normal operation which is handled by libata exception handler which is invoked by aborting the original command. So, exception handling can often be a part of normal operation. Thanks.
diff --git a/block/blk-timeout.c b/block/blk-timeout.c index a05e367..f0e6e41 100644 --- a/block/blk-timeout.c +++ b/block/blk-timeout.c @@ -165,7 +165,7 @@ void blk_abort_request(struct request *req) * No need for fancy synchronizations. */ blk_rq_set_deadline(req, jiffies); - mod_timer(&req->q->timeout, 0); + kblockd_schedule_work(&req->q->timeout_work); } else { if (blk_mark_rq_complete(req)) return;