diff options
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 784a919aa0d0..1896e868854f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -461,8 +461,7 @@ struct request_queue | |||
| 461 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ | 461 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ |
| 462 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ | 462 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ |
| 463 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ | 463 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ |
| 464 | #define QUEUE_FLAG_CQ 16 /* hardware does queuing */ | 464 | #define QUEUE_FLAG_DISCARD 16 /* supports DISCARD */ |
| 465 | #define QUEUE_FLAG_DISCARD 17 /* supports DISCARD */ | ||
| 466 | 465 | ||
| 467 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ | 466 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ |
| 468 | (1 << QUEUE_FLAG_CLUSTER) | \ | 467 | (1 << QUEUE_FLAG_CLUSTER) | \ |
| @@ -586,7 +585,6 @@ enum { | |||
| 586 | 585 | ||
| 587 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) | 586 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) |
| 588 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) | 587 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) |
| 589 | #define blk_queue_queuing(q) test_bit(QUEUE_FLAG_CQ, &(q)->queue_flags) | ||
| 590 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) | 588 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) |
| 591 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) | 589 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) |
| 592 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) | 590 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) |
| @@ -845,7 +843,6 @@ static inline struct request_queue *bdev_get_queue(struct block_device *bdev) | |||
| 845 | * blk_rq_err_bytes() : bytes left till the next error boundary | 843 | * blk_rq_err_bytes() : bytes left till the next error boundary |
| 846 | * blk_rq_sectors() : sectors left in the entire request | 844 | * blk_rq_sectors() : sectors left in the entire request |
| 847 | * blk_rq_cur_sectors() : sectors left in the current segment | 845 | * blk_rq_cur_sectors() : sectors left in the current segment |
| 848 | * blk_rq_err_sectors() : sectors left till the next error boundary | ||
| 849 | */ | 846 | */ |
| 850 | static inline sector_t blk_rq_pos(const struct request *rq) | 847 | static inline sector_t blk_rq_pos(const struct request *rq) |
| 851 | { | 848 | { |
| @@ -874,11 +871,6 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq) | |||
| 874 | return blk_rq_cur_bytes(rq) >> 9; | 871 | return blk_rq_cur_bytes(rq) >> 9; |
| 875 | } | 872 | } |
| 876 | 873 | ||
| 877 | static inline unsigned int blk_rq_err_sectors(const struct request *rq) | ||
| 878 | { | ||
| 879 | return blk_rq_err_bytes(rq) >> 9; | ||
| 880 | } | ||
| 881 | |||
| 882 | /* | 874 | /* |
| 883 | * Request issue related functions. | 875 | * Request issue related functions. |
| 884 | */ | 876 | */ |
| @@ -944,6 +936,8 @@ extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); | |||
| 944 | extern void blk_set_default_limits(struct queue_limits *lim); | 936 | extern void blk_set_default_limits(struct queue_limits *lim); |
| 945 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | 937 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, |
| 946 | sector_t offset); | 938 | sector_t offset); |
| 939 | extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev, | ||
| 940 | sector_t offset); | ||
| 947 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, | 941 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, |
| 948 | sector_t offset); | 942 | sector_t offset); |
| 949 | extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); | 943 | extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); |
| @@ -1116,11 +1110,18 @@ static inline int queue_alignment_offset(struct request_queue *q) | |||
| 1116 | return q->limits.alignment_offset; | 1110 | return q->limits.alignment_offset; |
| 1117 | } | 1111 | } |
| 1118 | 1112 | ||
| 1113 | static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t offset) | ||
| 1114 | { | ||
| 1115 | unsigned int granularity = max(lim->physical_block_size, lim->io_min); | ||
| 1116 | |||
| 1117 | offset &= granularity - 1; | ||
| 1118 | return (granularity + lim->alignment_offset - offset) & (granularity - 1); | ||
| 1119 | } | ||
| 1120 | |||
| 1119 | static inline int queue_sector_alignment_offset(struct request_queue *q, | 1121 | static inline int queue_sector_alignment_offset(struct request_queue *q, |
| 1120 | sector_t sector) | 1122 | sector_t sector) |
| 1121 | { | 1123 | { |
| 1122 | return ((sector << 9) - q->limits.alignment_offset) | 1124 | return queue_limit_alignment_offset(&q->limits, sector << 9); |
| 1123 | & (q->limits.io_min - 1); | ||
| 1124 | } | 1125 | } |
| 1125 | 1126 | ||
| 1126 | static inline int bdev_alignment_offset(struct block_device *bdev) | 1127 | static inline int bdev_alignment_offset(struct block_device *bdev) |
| @@ -1147,8 +1148,11 @@ static inline int queue_discard_alignment(struct request_queue *q) | |||
| 1147 | static inline int queue_sector_discard_alignment(struct request_queue *q, | 1148 | static inline int queue_sector_discard_alignment(struct request_queue *q, |
| 1148 | sector_t sector) | 1149 | sector_t sector) |
| 1149 | { | 1150 | { |
| 1150 | return ((sector << 9) - q->limits.discard_alignment) | 1151 | struct queue_limits *lim = &q->limits; |
| 1151 | & (q->limits.discard_granularity - 1); | 1152 | unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1); |
| 1153 | |||
| 1154 | return (lim->discard_granularity + lim->discard_alignment - alignment) | ||
| 1155 | & (lim->discard_granularity - 1); | ||
| 1152 | } | 1156 | } |
| 1153 | 1157 | ||
| 1154 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) | 1158 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) |
