diff options
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r-- | include/linux/blkdev.h | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 19c2e947d4d1..d045ca8487af 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -35,6 +35,7 @@ struct sg_io_hdr; | |||
35 | struct bsg_job; | 35 | struct bsg_job; |
36 | struct blkcg_gq; | 36 | struct blkcg_gq; |
37 | struct blk_flush_queue; | 37 | struct blk_flush_queue; |
38 | struct pr_ops; | ||
38 | 39 | ||
39 | #define BLKDEV_MIN_RQ 4 | 40 | #define BLKDEV_MIN_RQ 4 |
40 | #define BLKDEV_MAX_RQ 128 /* Default maximum */ | 41 | #define BLKDEV_MAX_RQ 128 /* Default maximum */ |
@@ -369,6 +370,10 @@ struct request_queue { | |||
369 | */ | 370 | */ |
370 | struct kobject mq_kobj; | 371 | struct kobject mq_kobj; |
371 | 372 | ||
373 | #ifdef CONFIG_BLK_DEV_INTEGRITY | ||
374 | struct blk_integrity integrity; | ||
375 | #endif /* CONFIG_BLK_DEV_INTEGRITY */ | ||
376 | |||
372 | #ifdef CONFIG_PM | 377 | #ifdef CONFIG_PM |
373 | struct device *dev; | 378 | struct device *dev; |
374 | int rpm_status; | 379 | int rpm_status; |
@@ -450,7 +455,7 @@ struct request_queue { | |||
450 | #endif | 455 | #endif |
451 | struct rcu_head rcu_head; | 456 | struct rcu_head rcu_head; |
452 | wait_queue_head_t mq_freeze_wq; | 457 | wait_queue_head_t mq_freeze_wq; |
453 | struct percpu_ref mq_usage_counter; | 458 | struct percpu_ref q_usage_counter; |
454 | struct list_head all_q_node; | 459 | struct list_head all_q_node; |
455 | 460 | ||
456 | struct blk_mq_tag_set *tag_set; | 461 | struct blk_mq_tag_set *tag_set; |
@@ -1462,22 +1467,13 @@ struct blk_integrity_iter { | |||
1462 | 1467 | ||
1463 | typedef int (integrity_processing_fn) (struct blk_integrity_iter *); | 1468 | typedef int (integrity_processing_fn) (struct blk_integrity_iter *); |
1464 | 1469 | ||
1465 | struct blk_integrity { | 1470 | struct blk_integrity_profile { |
1466 | integrity_processing_fn *generate_fn; | 1471 | integrity_processing_fn *generate_fn; |
1467 | integrity_processing_fn *verify_fn; | 1472 | integrity_processing_fn *verify_fn; |
1468 | 1473 | const char *name; | |
1469 | unsigned short flags; | ||
1470 | unsigned short tuple_size; | ||
1471 | unsigned short interval; | ||
1472 | unsigned short tag_size; | ||
1473 | |||
1474 | const char *name; | ||
1475 | |||
1476 | struct kobject kobj; | ||
1477 | }; | 1474 | }; |
1478 | 1475 | ||
1479 | extern bool blk_integrity_is_initialized(struct gendisk *); | 1476 | extern void blk_integrity_register(struct gendisk *, struct blk_integrity *); |
1480 | extern int blk_integrity_register(struct gendisk *, struct blk_integrity *); | ||
1481 | extern void blk_integrity_unregister(struct gendisk *); | 1477 | extern void blk_integrity_unregister(struct gendisk *); |
1482 | extern int blk_integrity_compare(struct gendisk *, struct gendisk *); | 1478 | extern int blk_integrity_compare(struct gendisk *, struct gendisk *); |
1483 | extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, | 1479 | extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, |
@@ -1488,15 +1484,20 @@ extern bool blk_integrity_merge_rq(struct request_queue *, struct request *, | |||
1488 | extern bool blk_integrity_merge_bio(struct request_queue *, struct request *, | 1484 | extern bool blk_integrity_merge_bio(struct request_queue *, struct request *, |
1489 | struct bio *); | 1485 | struct bio *); |
1490 | 1486 | ||
1491 | static inline | 1487 | static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) |
1492 | struct blk_integrity *bdev_get_integrity(struct block_device *bdev) | ||
1493 | { | 1488 | { |
1494 | return bdev->bd_disk->integrity; | 1489 | struct blk_integrity *bi = &disk->queue->integrity; |
1490 | |||
1491 | if (!bi->profile) | ||
1492 | return NULL; | ||
1493 | |||
1494 | return bi; | ||
1495 | } | 1495 | } |
1496 | 1496 | ||
1497 | static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) | 1497 | static inline |
1498 | struct blk_integrity *bdev_get_integrity(struct block_device *bdev) | ||
1498 | { | 1499 | { |
1499 | return disk->integrity; | 1500 | return blk_get_integrity(bdev->bd_disk); |
1500 | } | 1501 | } |
1501 | 1502 | ||
1502 | static inline bool blk_integrity_rq(struct request *rq) | 1503 | static inline bool blk_integrity_rq(struct request *rq) |
@@ -1570,10 +1571,9 @@ static inline int blk_integrity_compare(struct gendisk *a, struct gendisk *b) | |||
1570 | { | 1571 | { |
1571 | return 0; | 1572 | return 0; |
1572 | } | 1573 | } |
1573 | static inline int blk_integrity_register(struct gendisk *d, | 1574 | static inline void blk_integrity_register(struct gendisk *d, |
1574 | struct blk_integrity *b) | 1575 | struct blk_integrity *b) |
1575 | { | 1576 | { |
1576 | return 0; | ||
1577 | } | 1577 | } |
1578 | static inline void blk_integrity_unregister(struct gendisk *d) | 1578 | static inline void blk_integrity_unregister(struct gendisk *d) |
1579 | { | 1579 | { |
@@ -1598,10 +1598,7 @@ static inline bool blk_integrity_merge_bio(struct request_queue *rq, | |||
1598 | { | 1598 | { |
1599 | return true; | 1599 | return true; |
1600 | } | 1600 | } |
1601 | static inline bool blk_integrity_is_initialized(struct gendisk *g) | 1601 | |
1602 | { | ||
1603 | return 0; | ||
1604 | } | ||
1605 | static inline bool integrity_req_gap_back_merge(struct request *req, | 1602 | static inline bool integrity_req_gap_back_merge(struct request *req, |
1606 | struct bio *next) | 1603 | struct bio *next) |
1607 | { | 1604 | { |
@@ -1633,6 +1630,7 @@ struct block_device_operations { | |||
1633 | /* this callback is with swap_lock and sometimes page table lock held */ | 1630 | /* this callback is with swap_lock and sometimes page table lock held */ |
1634 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); | 1631 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); |
1635 | struct module *owner; | 1632 | struct module *owner; |
1633 | const struct pr_ops *pr_ops; | ||
1636 | }; | 1634 | }; |
1637 | 1635 | ||
1638 | extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int, | 1636 | extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int, |