Messages in this thread | | | Date | Tue, 13 Jan 2009 11:45:24 +0100 | From | Jens Axboe <> | Subject | Re: new barrier warnings in 2.6.29-rc1 |
| |
On Tue, Jan 13 2009, Tejun Heo wrote: > Hello, Jens. > > Jens Axboe wrote: > > On Tue, Jan 13 2009, Tejun Heo wrote: > >> I think the right thing to do is setting REQ_QUIET on the trial > >> barrier request. > > > > It would surely work, but XFS doesn't really have a way to do that. Then > > we would have to add a bio quiet flag and inherit that. > > > > I kind of liked the old behaviour. What about something like the below? > > > > diff --git a/block/blk-core.c b/block/blk-core.c > > index a824e49..eddba4a 100644 > > --- a/block/blk-core.c > > +++ b/block/blk-core.c > > @@ -1448,6 +1448,11 @@ static inline void __generic_make_request(struct bio *bio) > > err = -EOPNOTSUPP; > > goto end_io; > > } > > + if (bio_barrier(bio) && bio_has_data(bio) && > > + (q->next_ordered == QUEUE_ORDERED_NONE)) { > > + err = -EOPNOTSUPP; > > + goto end_io; > > + } > > > > ret = q->make_request_fn(q, bio); > > } while (ret); > > I have no objection against it. I kind of like having single test > point but it's a corner case anyway so no biggie.
I agree, but it's a lot better than having to fiddle around with every spot that wants to do a barrier probe. I'll merge it up for 2.6.29. Christoph, can you double check that it gets rid of your warning and still catches the barrier disable?
-- Jens Axboe
| |