block: Explicitly handle discard/write same segments
authorKent Overstreet <kmo@daterainc.com>
Fri, 7 Feb 2014 20:53:46 +0000 (13:53 -0700)
committerJens Axboe <axboe@fb.com>
Fri, 7 Feb 2014 20:54:08 +0000 (13:54 -0700)
commit5cb8850c9c4a7605f74f5c9c7ecadd0b02e87a25
tree401b42c4f5898a54c11c36da7ac37a14479bfffe
parent087787959ce851d7bbb19f10f6e9241b7f85a3ca
block: Explicitly handle discard/write same segments

Immutable biovecs changed the way biovecs are interpreted - drivers no
longer use bi_vcnt, they have to go by bi_iter.bi_size (to allow for
using part of an existing segment without modifying it).

This breaks with discards and write_same bios, since for those bi_size
has nothing to do with segments in the biovec. So for now, we need a
fairly gross hack - we fortunately know that there will never be more
than one segment for the entire request, so we can special case
discard/write_same.

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Tested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-merge.c