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-06-09' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:

- Fix an issue with the hardware queue nr_active, causing it to become
imbalanced (Tian)

- Fix an issue with null_blk not releasing pages if configured as
memory backed (Nitesh)

- Fix a locking issue in dasd (Jan)

* tag 'block-6.4-2023-06-09' of git://git.kernel.dk/linux:
s390/dasd: Use correct lock while counting channel queue length
null_blk: Fix: memory release when memory_backed=1
blk-mq: fix blk_mq_hw_ctx active request accounting

+7 -6
+4 -4
block/blk-mq.c
··· 683 683 blk_crypto_free_request(rq); 684 684 blk_pm_mark_last_busy(rq); 685 685 rq->mq_hctx = NULL; 686 + 687 + if (rq->rq_flags & RQF_MQ_INFLIGHT) 688 + __blk_mq_dec_active_requests(hctx); 689 + 686 690 if (rq->tag != BLK_MQ_NO_TAG) 687 691 blk_mq_put_tag(hctx->tags, ctx, rq->tag); 688 692 if (sched_tag != BLK_MQ_NO_TAG) ··· 698 694 void blk_mq_free_request(struct request *rq) 699 695 { 700 696 struct request_queue *q = rq->q; 701 - struct blk_mq_hw_ctx *hctx = rq->mq_hctx; 702 697 703 698 if ((rq->rq_flags & RQF_ELVPRIV) && 704 699 q->elevator->type->ops.finish_request) 705 700 q->elevator->type->ops.finish_request(rq); 706 - 707 - if (rq->rq_flags & RQF_MQ_INFLIGHT) 708 - __blk_mq_dec_active_requests(hctx); 709 701 710 702 if (unlikely(laptop_mode && !blk_rq_is_passthrough(rq))) 711 703 laptop_io_completion(q->disk->bdi);
+1
drivers/block/null_blk/main.c
··· 2244 2244 struct nullb_device *dev = nullb->dev; 2245 2245 2246 2246 null_del_dev(nullb); 2247 + null_free_device_storage(dev, false); 2247 2248 null_free_dev(dev); 2248 2249 } 2249 2250
+2 -2
drivers/s390/block/dasd_ioctl.c
··· 552 552 553 553 memcpy(dasd_info->type, base->discipline->name, 4); 554 554 555 - spin_lock_irqsave(&block->queue_lock, flags); 555 + spin_lock_irqsave(get_ccwdev_lock(base->cdev), flags); 556 556 list_for_each(l, &base->ccw_queue) 557 557 dasd_info->chanq_len++; 558 - spin_unlock_irqrestore(&block->queue_lock, flags); 558 + spin_unlock_irqrestore(get_ccwdev_lock(base->cdev), flags); 559 559 return 0; 560 560 } 561 561