diff options
author | Martin K. Petersen <martin.petersen@oracle.com> | 2012-09-18 12:19:25 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2012-09-20 08:31:38 -0400 |
commit | e2a60da74fc8215c68509a89e9a69c66363153db (patch) | |
tree | c23dd6540dc211e2b2583c3e950a7f6977e3f1df /include/linux/bio.h | |
parent | d41570b7469724005eb78448a69289900f911963 (diff) |
block: Clean up special command handling logic
Remove special-casing of non-rw fs style requests (discard). The nomerge
flags are consolidated in blk_types.h, and rq_mergeable() and
bio_mergeable() have been modified to use them.
bio_is_rw() is used in place of bio_has_data() a few places. This is
done to to distinguish true reads and writes from other fs type requests
that carry a payload (e.g. write same).
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Acked-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/bio.h')
-rw-r--r-- | include/linux/bio.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index 52b9cbc3e4da..e54305cacc98 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -386,9 +386,28 @@ static inline char *__bio_kmap_irq(struct bio *bio, unsigned short idx, | |||
386 | /* | 386 | /* |
387 | * Check whether this bio carries any data or not. A NULL bio is allowed. | 387 | * Check whether this bio carries any data or not. A NULL bio is allowed. |
388 | */ | 388 | */ |
389 | static inline int bio_has_data(struct bio *bio) | 389 | static inline bool bio_has_data(struct bio *bio) |
390 | { | 390 | { |
391 | return bio && bio->bi_io_vec != NULL; | 391 | if (bio && bio->bi_vcnt) |
392 | return true; | ||
393 | |||
394 | return false; | ||
395 | } | ||
396 | |||
397 | static inline bool bio_is_rw(struct bio *bio) | ||
398 | { | ||
399 | if (!bio_has_data(bio)) | ||
400 | return false; | ||
401 | |||
402 | return true; | ||
403 | } | ||
404 | |||
405 | static inline bool bio_mergeable(struct bio *bio) | ||
406 | { | ||
407 | if (bio->bi_rw & REQ_NOMERGE_FLAGS) | ||
408 | return false; | ||
409 | |||
410 | return true; | ||
392 | } | 411 | } |
393 | 412 | ||
394 | /* | 413 | /* |