diff options
Diffstat (limited to 'include/linux/bio.h')
-rw-r--r-- | include/linux/bio.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index 5be93f18d842..7fc5606e6ea5 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -391,6 +391,18 @@ extern struct bio *bio_copy_kern(struct request_queue *, void *, unsigned int, | |||
391 | gfp_t, int); | 391 | gfp_t, int); |
392 | extern void bio_set_pages_dirty(struct bio *bio); | 392 | extern void bio_set_pages_dirty(struct bio *bio); |
393 | extern void bio_check_pages_dirty(struct bio *bio); | 393 | extern void bio_check_pages_dirty(struct bio *bio); |
394 | |||
395 | #ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE | ||
396 | # error "You should define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE for your platform" | ||
397 | #endif | ||
398 | #if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE | ||
399 | extern void bio_flush_dcache_pages(struct bio *bi); | ||
400 | #else | ||
401 | static inline void bio_flush_dcache_pages(struct bio *bi) | ||
402 | { | ||
403 | } | ||
404 | #endif | ||
405 | |||
394 | extern struct bio *bio_copy_user(struct request_queue *, struct rq_map_data *, | 406 | extern struct bio *bio_copy_user(struct request_queue *, struct rq_map_data *, |
395 | unsigned long, unsigned int, int, gfp_t); | 407 | unsigned long, unsigned int, int, gfp_t); |
396 | extern struct bio *bio_copy_user_iov(struct request_queue *, | 408 | extern struct bio *bio_copy_user_iov(struct request_queue *, |
@@ -450,11 +462,8 @@ extern struct biovec_slab bvec_slabs[BIOVEC_NR_POOLS] __read_mostly; | |||
450 | /* | 462 | /* |
451 | * remember never ever reenable interrupts between a bvec_kmap_irq and | 463 | * remember never ever reenable interrupts between a bvec_kmap_irq and |
452 | * bvec_kunmap_irq! | 464 | * bvec_kunmap_irq! |
453 | * | ||
454 | * This function MUST be inlined - it plays with the CPU interrupt flags. | ||
455 | */ | 465 | */ |
456 | static __always_inline char *bvec_kmap_irq(struct bio_vec *bvec, | 466 | static inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags) |
457 | unsigned long *flags) | ||
458 | { | 467 | { |
459 | unsigned long addr; | 468 | unsigned long addr; |
460 | 469 | ||
@@ -470,8 +479,7 @@ static __always_inline char *bvec_kmap_irq(struct bio_vec *bvec, | |||
470 | return (char *) addr + bvec->bv_offset; | 479 | return (char *) addr + bvec->bv_offset; |
471 | } | 480 | } |
472 | 481 | ||
473 | static __always_inline void bvec_kunmap_irq(char *buffer, | 482 | static inline void bvec_kunmap_irq(char *buffer, unsigned long *flags) |
474 | unsigned long *flags) | ||
475 | { | 483 | { |
476 | unsigned long ptr = (unsigned long) buffer & PAGE_MASK; | 484 | unsigned long ptr = (unsigned long) buffer & PAGE_MASK; |
477 | 485 | ||