|
@@ -389,6 +389,7 @@ struct request_queue
|
|
|
#define QUEUE_FLAG_DISCARD 16 /* supports DISCARD */
|
|
|
#define QUEUE_FLAG_NOXMERGES 17 /* No extended merges */
|
|
|
#define QUEUE_FLAG_ADD_RANDOM 18 /* Contributes to random pool */
|
|
|
+#define QUEUE_FLAG_SECDISCARD 19 /* supports SECDISCARD */
|
|
|
|
|
|
#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \
|
|
|
(1 << QUEUE_FLAG_CLUSTER) | \
|
|
@@ -524,6 +525,8 @@ enum {
|
|
|
#define blk_queue_stackable(q) \
|
|
|
test_bit(QUEUE_FLAG_STACKABLE, &(q)->queue_flags)
|
|
|
#define blk_queue_discard(q) test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags)
|
|
|
+#define blk_queue_secdiscard(q) (blk_queue_discard(q) && \
|
|
|
+ test_bit(QUEUE_FLAG_SECDISCARD, &(q)->queue_flags))
|
|
|
|
|
|
#define blk_noretry_request(rq) \
|
|
|
((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \
|
|
@@ -918,10 +921,12 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt,
|
|
|
}
|
|
|
enum{
|
|
|
BLKDEV_WAIT, /* wait for completion */
|
|
|
- BLKDEV_BARRIER, /*issue request with barrier */
|
|
|
+ BLKDEV_BARRIER, /* issue request with barrier */
|
|
|
+ BLKDEV_SECURE, /* secure discard */
|
|
|
};
|
|
|
#define BLKDEV_IFL_WAIT (1 << BLKDEV_WAIT)
|
|
|
#define BLKDEV_IFL_BARRIER (1 << BLKDEV_BARRIER)
|
|
|
+#define BLKDEV_IFL_SECURE (1 << BLKDEV_SECURE)
|
|
|
extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *,
|
|
|
unsigned long);
|
|
|
extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
|