Re: [PATCH] block: fix detection of unsupported WRITE SAME in blkdev_issue_write_zeroes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27/08/2024 18:53, Darrick J. Wong wrote:
From: Darrick J. Wong <djwong@xxxxxxxxxx>

On error, blkdev_issue_write_zeroes used to recheck the block device's
WRITE SAME queue limits after submitting WRITE SAME bios.  As stated in
the comment, the purpose of this was to collapse all IO errors to
EOPNOTSUPP if the effect of issuing bios was that WRITE SAME got turned
off in the queue limits.  Therefore, it does not make sense to reuse the
zeroes limit that was read earlier in the function because we only care
about the queue limit *now*, not what it was at the start of the
function.

Found by running generic/351 from fstests.

thanks for the fix

Reviewed-by: John Garry <john.g.garry@xxxxxxxxxx>


Fixes: 64b582ca88ca1 ("block: Read max write zeroes once for __blkdev_issue_write_zeroes()")
Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>
---
  block/blk-lib.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-lib.c b/block/blk-lib.c
index 83eb7761c2bfb..4c9f20a689f7b 100644
--- a/block/blk-lib.c
+++ b/block/blk-lib.c
@@ -174,7 +174,7 @@ static int blkdev_issue_write_zeroes(struct block_device *bdev, sector_t sector,
  	 * on an I/O error, in which case we'll turn any error into
  	 * "not supported" here.
  	 */
-	if (ret && !limit)

I don't think that we still require local variable @limit. Actually we can probably clean this up later, and Nitesh's suggestion on the original patch could have been considered more

+	if (ret && !bdev_write_zeroes_sectors(bdev))
  		return -EOPNOTSUPP;
  	return ret;
  }






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux