diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-04 20:51:48 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-04 20:51:48 -0800 |
commit | 527d1529e38b36fd22e65711b653ab773179d9e8 (patch) | |
tree | 46ad2d22dd4af60634fc8e5e2f9980e3af1eb7f2 /block/blk.h | |
parent | effa04cc5a31b3f12cda6025ab93460f1f0e454e (diff) | |
parent | 4125a09b0a0d579ebace17f0e62b03ab9d5ab2f4 (diff) | |
download | linux-stable-527d1529e38b36fd22e65711b653ab773179d9e8.tar.gz linux-stable-527d1529e38b36fd22e65711b653ab773179d9e8.tar.bz2 linux-stable-527d1529e38b36fd22e65711b653ab773179d9e8.zip |
Merge branch 'for-4.4/integrity' of git://git.kernel.dk/linux-block
Pull block integrity updates from Jens Axboe:
""This is the joint work of Dan and Martin, cleaning up and improving
the support for block data integrity"
* 'for-4.4/integrity' of git://git.kernel.dk/linux-block:
block, libnvdimm, nvme: provide a built-in blk_integrity nop profile
block: blk_flush_integrity() for bio-based drivers
block: move blk_integrity to request_queue
block: generic request_queue reference counting
nvme: suspend i/o during runtime blk_integrity_unregister
md: suspend i/o during runtime blk_integrity_unregister
md, dm, scsi, nvme, libnvdimm: drop blk_integrity_unregister() at shutdown
block: Inline blk_integrity in struct gendisk
block: Export integrity data interval size in sysfs
block: Reduce the size of struct blk_integrity
block: Consolidate static integrity profile properties
block: Move integrity kobject to struct gendisk
Diffstat (limited to 'block/blk.h')
-rw-r--r-- | block/blk.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/block/blk.h b/block/blk.h index aa27d0292af1..da722eb786df 100644 --- a/block/blk.h +++ b/block/blk.h @@ -72,6 +72,28 @@ void blk_dequeue_request(struct request *rq); void __blk_queue_free_tags(struct request_queue *q); bool __blk_end_bidi_request(struct request *rq, int error, unsigned int nr_bytes, unsigned int bidi_bytes); +int blk_queue_enter(struct request_queue *q, gfp_t gfp); +void blk_queue_exit(struct request_queue *q); +void blk_freeze_queue(struct request_queue *q); + +static inline void blk_queue_enter_live(struct request_queue *q) +{ + /* + * Given that running in generic_make_request() context + * guarantees that a live reference against q_usage_counter has + * been established, further references under that same context + * need not check that the queue has been frozen (marked dead). + */ + percpu_ref_get(&q->q_usage_counter); +} + +#ifdef CONFIG_BLK_DEV_INTEGRITY +void blk_flush_integrity(void); +#else +static inline void blk_flush_integrity(void) +{ +} +#endif void blk_rq_timed_out_timer(unsigned long data); unsigned long blk_rq_timeout(unsigned long timeout); |