diff --git a/block/blk-core.c b/block/blk-core.c
index 3deca77e025464d9ae0ec445ca927ed106ed3c18..f0640d7f800f7164c5b04a59791410a029a48cc4 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1583,7 +1583,7 @@ void submit_bio(int rw, struct bio *bio)
 	 * If it's a regular read/write or a barrier with data attached,
 	 * go through the normal accounting stuff before submission.
 	 */
-	if (bio_has_data(bio)) {
+	if (bio_has_data(bio) && !(rw & (1 << BIO_RW_DISCARD))) {
 		if (rw & WRITE) {
 			count_vm_events(PGPGOUT, count);
 		} else {