History

block: Fix secure erase

Commit 288dab8a35a0 ("block: add a separate operation type for secure erase") split REQ_OP_SECURE_ERASE from REQ_OP_DISCARD without considering all the places REQ_OP_DISCARD was being used to mean either. Fix those.

Adrian Hunter committed 10 years ago

Commit 7afafc81 parent f6b6a289 files · +50 −32Browse files

Showing the changes to include/linux/blkdev.h (1 of 9 files). Show all

Unified · Split

include/linux/blkdev.h+4−2
@@ -882,7 +882,7 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq) · 881 unmodified lines
882882 static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q,
883883 int op)
884884 {
885− if (unlikely(op == REQ_OP_DISCARD))
885+ if (unlikely(op == REQ_OP_DISCARD || op == REQ_OP_SECURE_ERASE))
886886 return min(q->limits.max_discard_sectors, UINT_MAX >> 9);
887887
888888 if (unlikely(op == REQ_OP_WRITE_SAME))
@@ -913,7 +913,9 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq, · 24 unmodified lines
913913 if (unlikely(rq->cmd_type != REQ_TYPE_FS))
914914 return q->limits.max_hw_sectors;
915915
916− if (!q->limits.chunk_sectors || (req_op(rq) == REQ_OP_DISCARD))
916+ if (!q->limits.chunk_sectors ||
917+ req_op(rq) == REQ_OP_DISCARD ||
918+ req_op(rq) == REQ_OP_SECURE_ERASE)
917919 return blk_queue_get_max_sectors(q, req_op(rq));
918920
919921 return min(blk_max_size_offset(q, offset),