Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-6.4-2023-05-26' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:
"A few fixes for the storage side of things:

- Fix bio caching condition for passthrough IO (Anuj)

- end-of-device check fix for zero sized devices (Christoph)

- Update Paolo's email address

- NVMe pull request via Keith with a single quirk addition

- Fix regression in how wbt enablement is done (Yu)

- Fix race in active queue accounting (Tian)"

* tag 'block-6.4-2023-05-26' of git://git.kernel.dk/linux:
NVMe: Add MAXIO 1602 to bogus nid list.
block: make bio_check_eod work for zero sized devices
block: fix bio-cache for passthru IO
block, bfq: update Paolo's address in maintainer list
blk-mq: fix race condition in active queue accounting
blk-wbt: fix that wbt can't be disabled by default

+20 -12
+1 -1
MAINTAINERS
··· 3536 3536 F: fs/befs/ 3537 3537 3538 3538 BFQ I/O SCHEDULER 3539 - M: Paolo Valente <paolo.valente@linaro.org> 3539 + M: Paolo Valente <paolo.valente@unimore.it> 3540 3540 M: Jens Axboe <axboe@kernel.dk> 3541 3541 L: linux-block@vger.kernel.org 3542 3542 S: Maintained
+1 -1
block/blk-core.c
··· 520 520 sector_t maxsector = bdev_nr_sectors(bio->bi_bdev); 521 521 unsigned int nr_sectors = bio_sectors(bio); 522 522 523 - if (nr_sectors && maxsector && 523 + if (nr_sectors && 524 524 (nr_sectors > maxsector || 525 525 bio->bi_iter.bi_sector > maxsector - nr_sectors)) { 526 526 pr_info_ratelimited("%s: attempt to access beyond end of device\n"
+1 -1
block/blk-map.c
··· 248 248 { 249 249 struct bio *bio; 250 250 251 - if (rq->cmd_flags & REQ_ALLOC_CACHE) { 251 + if (rq->cmd_flags & REQ_ALLOC_CACHE && (nr_vecs <= BIO_INLINE_VECS)) { 252 252 bio = bio_alloc_bioset(NULL, nr_vecs, rq->cmd_flags, gfp_mask, 253 253 &fs_bio_set); 254 254 if (!bio)
+8 -4
block/blk-mq-tag.c
··· 39 39 { 40 40 unsigned int users; 41 41 42 + /* 43 + * calling test_bit() prior to test_and_set_bit() is intentional, 44 + * it avoids dirtying the cacheline if the queue is already active. 45 + */ 42 46 if (blk_mq_is_shared_tags(hctx->flags)) { 43 47 struct request_queue *q = hctx->queue; 44 48 45 - if (test_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags)) 49 + if (test_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags) || 50 + test_and_set_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags)) 46 51 return; 47 - set_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags); 48 52 } else { 49 - if (test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state)) 53 + if (test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state) || 54 + test_and_set_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state)) 50 55 return; 51 - set_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state); 52 56 } 53 57 54 58 users = atomic_inc_return(&hctx->tags->active_queues);
+7 -5
block/blk-wbt.c
··· 730 730 { 731 731 struct request_queue *q = disk->queue; 732 732 struct rq_qos *rqos; 733 - bool disable_flag = q->elevator && 734 - test_bit(ELEVATOR_FLAG_DISABLE_WBT, &q->elevator->flags); 733 + bool enable = IS_ENABLED(CONFIG_BLK_WBT_MQ); 734 + 735 + if (q->elevator && 736 + test_bit(ELEVATOR_FLAG_DISABLE_WBT, &q->elevator->flags)) 737 + enable = false; 735 738 736 739 /* Throttling already enabled? */ 737 740 rqos = wbt_rq_qos(q); 738 741 if (rqos) { 739 - if (!disable_flag && 740 - RQWB(rqos)->enable_state == WBT_STATE_OFF_DEFAULT) 742 + if (enable && RQWB(rqos)->enable_state == WBT_STATE_OFF_DEFAULT) 741 743 RQWB(rqos)->enable_state = WBT_STATE_ON_DEFAULT; 742 744 return; 743 745 } ··· 748 746 if (!blk_queue_registered(q)) 749 747 return; 750 748 751 - if (queue_is_mq(q) && !disable_flag) 749 + if (queue_is_mq(q) && enable) 752 750 wbt_init(disk); 753 751 } 754 752 EXPORT_SYMBOL_GPL(wbt_enable_default);
+2
drivers/nvme/host/pci.c
··· 3424 3424 .driver_data = NVME_QUIRK_BOGUS_NID, }, 3425 3425 { PCI_DEVICE(0x1e4B, 0x1202), /* MAXIO MAP1202 */ 3426 3426 .driver_data = NVME_QUIRK_BOGUS_NID, }, 3427 + { PCI_DEVICE(0x1e4B, 0x1602), /* MAXIO MAP1602 */ 3428 + .driver_data = NVME_QUIRK_BOGUS_NID, }, 3427 3429 { PCI_DEVICE(0x1cc1, 0x5350), /* ADATA XPG GAMMIX S50 */ 3428 3430 .driver_data = NVME_QUIRK_BOGUS_NID, }, 3429 3431 { PCI_DEVICE(0x1dbe, 0x5236), /* ADATA XPG GAMMIX S70 */