diff --git a/block/elevator.c b/block/elevator.c
index 96a61e029ce5e7858d2e024c08eff817b5a998d6..2fc269f69726d67e7a8ab7bcf6a58e2a10af009b 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -323,7 +323,8 @@ void __elv_add_request(request_queue_t *q, struct request *rq, int where,
 		/*
 		 * toggle ordered color
 		 */
-		q->ordcolor ^= 1;
+		if (blk_barrier_rq(rq))
+			q->ordcolor ^= 1;
 
 		/*
 		 * barriers implicitly indicate back insertion