aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 9b98173a818..1896e868854 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)
@@ -938,6 +936,8 @@ extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt);
938extern void blk_set_default_limits(struct queue_limits *lim); 936extern void blk_set_default_limits(struct queue_limits *lim);
939extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 937extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
940 sector_t offset); 938 sector_t offset);
939extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev,
940 sector_t offset);
941extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 941extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
942 sector_t offset); 942 sector_t offset);
943extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b); 943extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b);
@@ -1148,8 +1148,11 @@ static inline int queue_discard_alignment(struct request_queue *q)
1148static inline int queue_sector_discard_alignment(struct request_queue *q, 1148static inline int queue_sector_discard_alignment(struct request_queue *q,
1149 sector_t sector) 1149 sector_t sector)
1150{ 1150{
1151 return ((sector << 9) - q->limits.discard_alignment) 1151 struct queue_limits *lim = &q->limits;
1152 & (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);
1153} 1156}
1154 1157
1155static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) 1158static inline unsigned int queue_discard_zeroes_data(struct request_queue *q)