1
linux/block
John Garry 64b582ca88 block: Read max write zeroes once for __blkdev_issue_write_zeroes()
As reported in [0], we may get a hang when formatting a XFS FS on a RAID0
drive.

Commit 73a768d5f9 ("block: factor out a blk_write_zeroes_limit helper")
changed __blkdev_issue_write_zeroes() to read the max write zeroes
value in the loop. This is not safe as max write zeroes may change in
value. Specifically for the case of [0], the value goes to 0, and we get
an infinite loop.

Lift the limit reading out of the loop.

[0] https://lore.kernel.org/linux-xfs/4d31268f-310b-4220-88a2-e191c3932a82@oracle.com/T/#t

Fixes: 73a768d5f9 ("block: factor out a blk_write_zeroes_limit helper")
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240815163228.216051-2-john.g.garry@oracle.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2024-08-19 09:48:59 -06:00
..
partitions Compactifying bdev flags 2024-05-21 13:02:56 -07:00
badblocks.c
bdev.c for-6.11/block-20240710 2024-07-15 14:20:22 -07:00
bfq-cgroup.c block, bfq: remove blkg_path() 2024-06-18 09:22:45 -06:00
bfq-iosched.c block: BFQ: Refactor bfq_exit_icq() to silence sparse warning 2024-06-16 15:30:32 -06:00
bfq-iosched.h block, bfq: remove blkg_path() 2024-06-18 09:22:45 -06:00
bfq-wf2q.c
bio-integrity.c for-6.11/block-post-20240722 2024-07-22 11:04:09 -07:00
bio.c for-6.11/block-post-20240722 2024-07-22 11:04:09 -07:00
blk-cgroup-fc-appid.c
blk-cgroup-rwstat.c
blk-cgroup-rwstat.h
blk-cgroup.c blk-cgroup: move congestion_count to struct blkcg 2024-07-19 09:40:07 -06:00
blk-cgroup.h blk-cgroup: move congestion_count to struct blkcg 2024-07-19 09:40:07 -06:00
blk-core.c block: avoid polling configuration errors 2024-07-19 09:35:35 -06:00
blk-crypto-fallback.c
blk-crypto-internal.h
blk-crypto-profile.c
blk-crypto-sysfs.c
blk-crypto.c
blk-flush.c for-6.11/block-20240710 2024-07-15 14:20:22 -07:00
blk-ia-ranges.c
blk-integrity.c block: cleanup flag_{show,store} 2024-06-17 10:13:37 -06:00
blk-ioc.c
blk-iocost.c
blk-iolatency.c
blk-ioprio.c
blk-ioprio.h
blk-lib.c block: Read max write zeroes once for __blkdev_issue_write_zeroes() 2024-08-19 09:48:59 -06:00
blk-map.c block: don't free the integrity payload in bio_integrity_unmap_free_user 2024-07-03 10:21:16 -06:00
blk-merge.c block: take offset into account in blk_bvec_map_sg again 2024-07-09 01:02:44 -06:00
blk-mq-cpumap.c
blk-mq-debugfs.c block: Catch possible entries missing from rqf_name[] 2024-07-19 09:32:49 -06:00
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq-sched.c
blk-mq-sched.h
blk-mq-sysfs.c
blk-mq-tag.c block: Fix lockdep warning in blk_mq_mark_tag_wait 2024-08-15 19:25:03 -06:00
blk-mq-virtio.c
blk-mq.c block: Call .limit_depth() after .hctx has been set 2024-07-02 08:47:45 -06:00
blk-mq.h block: Relocate BLK_MQ_CPU_WORK_BATCH 2024-07-19 09:32:48 -06:00
blk-pm.c
blk-pm.h
blk-rq-qos.c
blk-rq-qos.h
blk-settings.c block: Validate logical block size in blk_validate_limits() 2024-07-09 00:00:17 -06:00
blk-stat.c blk-throttle: remove CONFIG_BLK_DEV_THROTTLING_LOW 2024-05-09 09:44:55 -06:00
blk-stat.h block: delete redundant function declaration 2024-05-27 13:58:06 -06:00
blk-sysfs.c block: pass a gendisk to the queue_sysfs_entry methods 2024-06-28 15:06:16 -06:00
blk-throttle.c blk-throttle: remove more latency dead-code 2024-07-27 10:33:25 -06:00
blk-throttle.h blk-throttle: Fix incorrect display of io.max 2024-05-30 19:44:29 -06:00
blk-timeout.c
blk-wbt.c blk-wbt: don't throttle swap writes in direct reclaim 2024-07-01 06:51:53 -06:00
blk-wbt.h
blk-zoned.c for-6.11/block-20240710 2024-07-15 14:20:22 -07:00
blk.h for-6.11/block-post-20240722 2024-07-22 11:04:09 -07:00
bounce.c block: split integrity support out of bio.h 2024-07-03 10:21:15 -06:00
bsg-lib.c scsi: bsg: Pass dev to blk_mq_alloc_queue() 2024-05-30 20:22:15 -04:00
bsg.c
disk-events.c
early-lookup.c wrapper for access to ->bd_partno 2024-05-02 17:48:09 -04:00
elevator.c block: pass a gendisk to the queue_sysfs_entry methods 2024-06-28 15:06:16 -06:00
elevator.h block: pass a gendisk to the queue_sysfs_entry methods 2024-06-28 15:06:16 -06:00
fops.c block: clean up the check in blkdev_iomap_begin() 2024-06-27 05:56:35 -06:00
genhd.c block: fix deadlock between sd_remove & sd_release 2024-07-24 09:51:21 -06:00
holder.c
ioctl.c blk-lib: check for kill signal in ioctl BLKZEROOUT 2024-07-05 00:53:15 -06:00
ioprio.c
Kconfig block: remove the blk_integrity_profile structure 2024-06-14 10:20:06 -06:00
Kconfig.iosched
kyber-iosched.c
Makefile block: remove the blk_integrity_profile structure 2024-06-14 10:20:06 -06:00
mq-deadline.c block/mq-deadline: Fix the tag reservation code 2024-07-02 08:47:45 -06:00
opal_proto.h
sed-opal.c block: sed-opal: avoid possible wrong address reference in read_sed_opal_key() 2024-06-12 10:53:20 -06:00
t10-pi.c block: remove bio_integrity_process 2024-06-28 10:29:42 -06:00