Re: [PATCH] block: Fix secure erase

From: Jens Axboe
Date: Mon Aug 15 2016 - 14:16:48 EST


On 08/15/2016 12:13 PM, Christoph Hellwig wrote:
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -366,7 +366,10 @@ void elv_dispatch_sort(struct request_queue *q, struct request *rq)
list_for_each_prev(entry, &q->queue_head) {
struct request *pos = list_entry_rq(entry);

- if ((req_op(rq) == REQ_OP_DISCARD) != (req_op(pos) == REQ_OP_DISCARD))
+ if ((req_op(rq) == REQ_OP_DISCARD ||
+ req_op(rq) == REQ_OP_SECURE_ERASE) !=
+ (req_op(pos) == REQ_OP_DISCARD ||
+ req_op(pos) == REQ_OP_SECURE_ERASE))
break;

This really should be a:

if (req_op(rq) != req_op(pos))

I'l lleave it up to Jens if he wants that in this patch or not, otherwise
I'll send an incremental patch.

Let's get a v2 with that fixed up, it makes a big readability
difference.

--
Jens Axboe