All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] block: Avoid fragmented discard splits for ATA drives
@ 2020-12-15 10:54 Tom Yan
  0 siblings, 0 replies; only message in thread
From: Tom Yan @ 2020-12-15 10:54 UTC (permalink / raw)
  To: linux-block, linux-ide, linux-scsi; +Cc: Tom Yan

When 0xffffffff >> 9 are splited by 0xffff * 64, there will be a
remainder of 127. Avoid these small fragments by aligning the split
to 128.

Signed-off-by: Tom Yan <tom.ty89@gmail.com>
---
 block/blk.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/block/blk.h b/block/blk.h
index dfab98465db9..1dc12fc86de8 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -281,8 +281,11 @@ static inline unsigned int bio_allowed_max_sectors(struct request_queue *q)
 static inline unsigned int bio_aligned_discard_max_sectors(
 					struct request_queue *q)
 {
-	return round_down(UINT_MAX, q->limits.discard_granularity) >>
-			SECTOR_SHIFT;
+	unsigned int granularity = q->limits.discard_granularity;
+	/* Avoid fragmented splits for ATA drives */
+	if (128 % granularity == 0)
+		granularity = 128;
+	return round_down(UINT_MAX, granularity) >> SECTOR_SHIFT;
 }
 
 /*
-- 
2.29.2


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-12-15 10:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-15 10:54 [PATCH] block: Avoid fragmented discard splits for ATA drives Tom Yan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.