Merge tag 'for-6.17/block-20250728' of git://git.kernel.dk/linux
Pull block updates from Jens Axboe:
- MD pull request via Yu:
- call del_gendisk synchronously (Xiao)
- cleanup unused variable (John)
- cleanup workqueue flags (Ryo)
- fix faulty rdev can't be removed during resync (Qixing)
- NVMe pull request via Christoph:
- try PCIe function level reset on init failure (Keith Busch)
- log TLS handshake failures at error level (Maurizio Lombardi)
- pci-epf: do not complete commands twice if nvmet_req_init()
fails (Rick Wertenbroek)
- misc cleanups (Alok Tiwari)
- Removal of the pktcdvd driver
This has been more than a decade coming at this point, and some
recently revealed breakages that had it causing issues even for cases
where it isn't required made me re-pull the trigger on this one. It's
known broken and nobody has stepped up to maintain the code
- Series for ublk supporting batch commands, enabling the use of
multishot where appropriate
- Speed up ublk exit handling
- Fix for the two-stage elevator fixing which could leak data
- Convert NVMe to use the new IOVA based API
- Increase default max transfer size to something more reasonable
- Series fixing write operations on zoned DM devices
- Add tracepoints for zoned block device operations
- Prep series working towards improving blk-mq queue management in the
presence of isolated CPUs
- Don't allow updating of the block size of a loop device that is
currently under exclusively ownership/open
- Set chunk sectors from stacked device stripe size and use it for the
atomic write size limit
- Switch to folios in bcache read_super()
- Fix for CD-ROM MRW exit flush handling
- Various tweaks, fixes, and cleanups
* tag 'for-6.17/block-20250728' of git://git.kernel.dk/linux: (94 commits)
block: restore two stage elevator switch while running nr_hw_queue update
cdrom: Call cdrom_mrw_exit from cdrom_release function
sunvdc: Balance device refcount in vdc_port_mpgroup_check
nvme-pci: try function level reset on init failure
dm: split write BIOs on zone boundaries when zone append is not emulated
block: use chunk_sectors when evaluating stacked atomic write limits
dm-stripe: limit chunk_sectors to the stripe size
md/raid10: set chunk_sectors limit
md/raid0: set chunk_sectors limit
block: sanitize chunk_sectors for atomic write limits
ilog2: add max_pow_of_two_factor()
nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails
nvme-tcp: log TLS handshake failures at error level
docs: nvme: fix grammar in nvme-pci-endpoint-target.rst
nvme: fix typo in status code constant for self-test in progress
nvmet: remove redundant assignment of error code in nvmet_ns_enable()
nvme: fix incorrect variable in io cqes error message
nvme: fix multiple spelling and grammar issues in host drivers
block: fix blk_zone_append_update_request_bio() kernel-doc
md/raid10: fix set but not used variable in sync_request_write()
...
This commit is contained in:
@@ -846,6 +846,55 @@ static inline unsigned int disk_nr_zones(struct gendisk *disk)
|
||||
{
|
||||
return disk->nr_zones;
|
||||
}
|
||||
|
||||
/**
|
||||
* bio_needs_zone_write_plugging - Check if a BIO needs to be handled with zone
|
||||
* write plugging
|
||||
* @bio: The BIO being submitted
|
||||
*
|
||||
* Return true whenever @bio execution needs to be handled through zone
|
||||
* write plugging (using blk_zone_plug_bio()). Return false otherwise.
|
||||
*/
|
||||
static inline bool bio_needs_zone_write_plugging(struct bio *bio)
|
||||
{
|
||||
enum req_op op = bio_op(bio);
|
||||
|
||||
/*
|
||||
* Only zoned block devices have a zone write plug hash table. But not
|
||||
* all of them have one (e.g. DM devices may not need one).
|
||||
*/
|
||||
if (!bio->bi_bdev->bd_disk->zone_wplugs_hash)
|
||||
return false;
|
||||
|
||||
/* Only write operations need zone write plugging. */
|
||||
if (!op_is_write(op))
|
||||
return false;
|
||||
|
||||
/* Ignore empty flush */
|
||||
if (op_is_flush(bio->bi_opf) && !bio_sectors(bio))
|
||||
return false;
|
||||
|
||||
/* Ignore BIOs that already have been handled by zone write plugging. */
|
||||
if (bio_flagged(bio, BIO_ZONE_WRITE_PLUGGING))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* All zone write operations must be handled through zone write plugging
|
||||
* using blk_zone_plug_bio().
|
||||
*/
|
||||
switch (op) {
|
||||
case REQ_OP_ZONE_APPEND:
|
||||
case REQ_OP_WRITE:
|
||||
case REQ_OP_WRITE_ZEROES:
|
||||
case REQ_OP_ZONE_FINISH:
|
||||
case REQ_OP_ZONE_RESET:
|
||||
case REQ_OP_ZONE_RESET_ALL:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool blk_zone_plug_bio(struct bio *bio, unsigned int nr_segs);
|
||||
|
||||
/**
|
||||
@@ -875,6 +924,12 @@ static inline unsigned int disk_nr_zones(struct gendisk *disk)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool bio_needs_zone_write_plugging(struct bio *bio)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool blk_zone_plug_bio(struct bio *bio, unsigned int nr_segs)
|
||||
{
|
||||
return false;
|
||||
@@ -1230,15 +1285,6 @@ enum blk_default_limits {
|
||||
BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL,
|
||||
};
|
||||
|
||||
/*
|
||||
* Default upper limit for the software max_sectors limit used for
|
||||
* regular file system I/O. This can be increased through sysfs.
|
||||
*
|
||||
* Not to be confused with the max_hw_sector limit that is entirely
|
||||
* controlled by the driver, usually based on hardware limits.
|
||||
*/
|
||||
#define BLK_DEF_MAX_SECTORS_CAP 2560u
|
||||
|
||||
static inline struct queue_limits *bdev_limits(struct block_device *bdev)
|
||||
{
|
||||
return &bdev_get_queue(bdev)->limits;
|
||||
|
||||
Reference in New Issue
Block a user