Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-27 Thread Christoph Hellwig
On Tue, Dec 23, 2014 at 12:41:40PM +0100, Dongsu Park wrote: > You mean, checking rq->cmd_type == REQ_TYPE_BLOCK_PC, right? > > I'm wondering about how to check that in blk_queue_split(). > At the moment when blk_queue_split() is called, it's even before a request > is mapped e.g. in

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-27 Thread Christoph Hellwig
On Tue, Dec 23, 2014 at 12:41:40PM +0100, Dongsu Park wrote: You mean, checking rq-cmd_type == REQ_TYPE_BLOCK_PC, right? I'm wondering about how to check that in blk_queue_split(). At the moment when blk_queue_split() is called, it's even before a request is mapped e.g. in

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-24 Thread Ming Lei
On Mon, Dec 22, 2014 at 7:48 PM, Dongsu Park wrote: > From: Kent Overstreet > > The way the block layer is currently written, it goes to great lengths > to avoid having to split bios; upper layer code (such as bio_add_page()) > checks what the underlying device can handle and tries to always

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-24 Thread Dongsu Park
On 23.12.2014 11:14, Geoff Levand wrote: > On Mon, 2014-12-22 at 12:48 +0100, Dongsu Park wrote: > > From: Kent Overstreet > > > --- a/drivers/block/ps3vram.c > > +++ b/drivers/block/ps3vram.c > > @@ -603,6 +603,8 @@ static void ps3vram_make_request(struct request_queue > > *q, struct bio *bio)

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-24 Thread Dongsu Park
On 23.12.2014 11:14, Geoff Levand wrote: On Mon, 2014-12-22 at 12:48 +0100, Dongsu Park wrote: From: Kent Overstreet k...@daterainc.com --- a/drivers/block/ps3vram.c +++ b/drivers/block/ps3vram.c @@ -603,6 +603,8 @@ static void ps3vram_make_request(struct request_queue *q, struct bio

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-24 Thread Ming Lei
On Mon, Dec 22, 2014 at 7:48 PM, Dongsu Park dongsu.p...@profitbricks.com wrote: From: Kent Overstreet k...@daterainc.com The way the block layer is currently written, it goes to great lengths to avoid having to split bios; upper layer code (such as bio_add_page()) checks what the underlying

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Geoff Levand
Hi, On Mon, 2014-12-22 at 12:48 +0100, Dongsu Park wrote: > From: Kent Overstreet > --- a/drivers/block/ps3vram.c > +++ b/drivers/block/ps3vram.c > @@ -603,6 +603,8 @@ static void ps3vram_make_request(struct request_queue *q, > struct bio *bio) > struct ps3vram_priv *priv =

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Dongsu Park
Hi Christoph, On 23.12.2014 02:16, Christoph Hellwig wrote: > > +void blk_queue_split(struct request_queue *q, struct bio **bio, > > +struct bio_set *bs) > > +{ > > + struct bio *split; > > + > > + if ((*bio)->bi_rw & REQ_DISCARD) > > + split =

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Christoph Hellwig
> +void blk_queue_split(struct request_queue *q, struct bio **bio, > + struct bio_set *bs) > +{ > + struct bio *split; > + > + if ((*bio)->bi_rw & REQ_DISCARD) > + split = blk_bio_discard_split(q, *bio, bs); > + else if ((*bio)->bi_rw & REQ_WRITE_SAME) > +

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Christoph Hellwig
+void blk_queue_split(struct request_queue *q, struct bio **bio, + struct bio_set *bs) +{ + struct bio *split; + + if ((*bio)-bi_rw REQ_DISCARD) + split = blk_bio_discard_split(q, *bio, bs); + else if ((*bio)-bi_rw REQ_WRITE_SAME) +

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Dongsu Park
Hi Christoph, On 23.12.2014 02:16, Christoph Hellwig wrote: +void blk_queue_split(struct request_queue *q, struct bio **bio, +struct bio_set *bs) +{ + struct bio *split; + + if ((*bio)-bi_rw REQ_DISCARD) + split = blk_bio_discard_split(q, *bio, bs);

Re: [RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-23 Thread Geoff Levand
Hi, On Mon, 2014-12-22 at 12:48 +0100, Dongsu Park wrote: From: Kent Overstreet k...@daterainc.com --- a/drivers/block/ps3vram.c +++ b/drivers/block/ps3vram.c @@ -603,6 +603,8 @@ static void ps3vram_make_request(struct request_queue *q, struct bio *bio) struct ps3vram_priv *priv =

[RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-22 Thread Dongsu Park
From: Kent Overstreet The way the block layer is currently written, it goes to great lengths to avoid having to split bios; upper layer code (such as bio_add_page()) checks what the underlying device can handle and tries to always create bios that don't need to be split. But this approach

[RFC PATCH 01/17] block: make generic_make_request handle arbitrarily sized bios

2014-12-22 Thread Dongsu Park
From: Kent Overstreet k...@daterainc.com The way the block layer is currently written, it goes to great lengths to avoid having to split bios; upper layer code (such as bio_add_page()) checks what the underlying device can handle and tries to always create bios that don't need to be split. But