diff --git a/block/blk-core.c b/block/blk-core.c
index 76850fc9cf23b..52e756c526be7 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1311,7 +1311,15 @@ static int __make_request(struct request_queue *q, struct bio *bio)
 
 	plug = current->plug;
 	if (plug) {
-		if (!plug->should_sort && !list_empty(&plug->list)) {
+		/*
+		 * If this is the first request added after a plug, fire
+		 * of a plug trace. If others have been added before, check
+		 * if we have multiple devices in this plug. If so, make a
+		 * note to sort the list before dispatch.
+		 */
+		if (list_empty(&plug->list))
+			trace_block_plug(q);
+		else if (!plug->should_sort) {
 			struct request *__rq;
 
 			__rq = list_entry_rq(plug->list.prev);