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-5.17-2022-02-17' of git://git.kernel.dk/linux-block

Pull block fixes from Jens Axboe:

- Surprise removal fix (Christoph)

- Ensure that pages are zeroed before submitted for userspace IO
(Haimin)

- Fix blk-wbt accounting issue with BFQ (Laibin)

- Use bsize for discard granularity in loop (Ming)

- Fix missing zone handling in blk_complete_request() (Pankaj)

* tag 'block-5.17-2022-02-17' of git://git.kernel.dk/linux-block:
block/wbt: fix negative inflight counter when remove scsi device
block: fix surprise removal for drivers calling blk_set_queue_dying
block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern
block: loop:use kstatfs.f_bsize of backing file to set discard granularity
block: Add handling for zone append command in blk_complete_request

+38 -19
+2
block/bfq-iosched.c
··· 7018 7018 spin_unlock_irq(&bfqd->lock); 7019 7019 #endif 7020 7020 7021 + wbt_enable_default(bfqd->queue); 7022 + 7021 7023 kfree(bfqd); 7022 7024 } 7023 7025
+2 -8
block/blk-core.c
··· 284 284 wake_up_all(&q->mq_freeze_wq); 285 285 } 286 286 287 - void blk_set_queue_dying(struct request_queue *q) 288 - { 289 - blk_queue_flag_set(QUEUE_FLAG_DYING, q); 290 - blk_queue_start_drain(q); 291 - } 292 - EXPORT_SYMBOL_GPL(blk_set_queue_dying); 293 - 294 287 /** 295 288 * blk_cleanup_queue - shutdown a request queue 296 289 * @q: request queue to shutdown ··· 301 308 WARN_ON_ONCE(blk_queue_registered(q)); 302 309 303 310 /* mark @q DYING, no new request or merges will be allowed afterwards */ 304 - blk_set_queue_dying(q); 311 + blk_queue_flag_set(QUEUE_FLAG_DYING, q); 312 + blk_queue_start_drain(q); 305 313 306 314 blk_queue_flag_set(QUEUE_FLAG_NOMERGES, q); 307 315 blk_queue_flag_set(QUEUE_FLAG_NOXMERGES, q);
+1 -1
block/blk-map.c
··· 446 446 if (bytes > len) 447 447 bytes = len; 448 448 449 - page = alloc_page(GFP_NOIO | gfp_mask); 449 + page = alloc_page(GFP_NOIO | __GFP_ZERO | gfp_mask); 450 450 if (!page) 451 451 goto cleanup; 452 452
+4
block/blk-mq.c
··· 736 736 737 737 /* Completion has already been traced */ 738 738 bio_clear_flag(bio, BIO_TRACE_COMPLETION); 739 + 740 + if (req_op(req) == REQ_OP_ZONE_APPEND) 741 + bio->bi_iter.bi_sector = req->__sector; 742 + 739 743 if (!is_flush) 740 744 bio_endio(bio); 741 745 bio = next;
-2
block/elevator.c
··· 525 525 kobject_del(&e->kobj); 526 526 527 527 e->registered = 0; 528 - /* Re-enable throttling in case elevator disabled it */ 529 - wbt_enable_default(q); 530 528 } 531 529 } 532 530
+14
block/genhd.c
··· 549 549 EXPORT_SYMBOL(device_add_disk); 550 550 551 551 /** 552 + * blk_mark_disk_dead - mark a disk as dead 553 + * @disk: disk to mark as dead 554 + * 555 + * Mark as disk as dead (e.g. surprise removed) and don't accept any new I/O 556 + * to this disk. 557 + */ 558 + void blk_mark_disk_dead(struct gendisk *disk) 559 + { 560 + set_bit(GD_DEAD, &disk->state); 561 + blk_queue_start_drain(disk->queue); 562 + } 563 + EXPORT_SYMBOL_GPL(blk_mark_disk_dead); 564 + 565 + /** 552 566 * del_gendisk - remove the gendisk 553 567 * @disk: the struct gendisk to remove 554 568 *
+7 -1
drivers/block/loop.c
··· 79 79 #include <linux/ioprio.h> 80 80 #include <linux/blk-cgroup.h> 81 81 #include <linux/sched/mm.h> 82 + #include <linux/statfs.h> 82 83 83 84 #include "loop.h" 84 85 ··· 775 774 granularity = 0; 776 775 777 776 } else { 777 + struct kstatfs sbuf; 778 + 778 779 max_discard_sectors = UINT_MAX >> 9; 779 - granularity = inode->i_sb->s_blocksize; 780 + if (!vfs_statfs(&file->f_path, &sbuf)) 781 + granularity = sbuf.f_bsize; 782 + else 783 + max_discard_sectors = 0; 780 784 } 781 785 782 786 if (max_discard_sectors) {
+1 -1
drivers/block/mtip32xx/mtip32xx.c
··· 4112 4112 "Completion workers still active!\n"); 4113 4113 } 4114 4114 4115 - blk_set_queue_dying(dd->queue); 4115 + blk_mark_disk_dead(dd->disk); 4116 4116 set_bit(MTIP_DDF_REMOVE_PENDING_BIT, &dd->dd_flag); 4117 4117 4118 4118 /* Clean up the block layer. */
+1 -1
drivers/block/rbd.c
··· 7185 7185 * IO to complete/fail. 7186 7186 */ 7187 7187 blk_mq_freeze_queue(rbd_dev->disk->queue); 7188 - blk_set_queue_dying(rbd_dev->disk->queue); 7188 + blk_mark_disk_dead(rbd_dev->disk); 7189 7189 } 7190 7190 7191 7191 del_gendisk(rbd_dev->disk);
+1 -1
drivers/block/xen-blkfront.c
··· 2126 2126 2127 2127 /* No more blkif_request(). */ 2128 2128 blk_mq_stop_hw_queues(info->rq); 2129 - blk_set_queue_dying(info->rq); 2129 + blk_mark_disk_dead(info->gd); 2130 2130 set_capacity(info->gd, 0); 2131 2131 2132 2132 for_each_rinfo(info, rinfo, i) {
+1 -1
drivers/md/dm.c
··· 2077 2077 set_bit(DMF_FREEING, &md->flags); 2078 2078 spin_unlock(&_minor_lock); 2079 2079 2080 - blk_set_queue_dying(md->queue); 2080 + blk_mark_disk_dead(md->disk); 2081 2081 2082 2082 /* 2083 2083 * Take suspend_lock so that presuspend and postsuspend methods
+1 -1
drivers/nvme/host/core.c
··· 4574 4574 if (test_and_set_bit(NVME_NS_DEAD, &ns->flags)) 4575 4575 return; 4576 4576 4577 - blk_set_queue_dying(ns->queue); 4577 + blk_mark_disk_dead(ns->disk); 4578 4578 nvme_start_ns_queue(ns); 4579 4579 4580 4580 set_capacity_and_notify(ns->disk, 0);
+1 -1
drivers/nvme/host/multipath.c
··· 848 848 { 849 849 if (!head->disk) 850 850 return; 851 - blk_set_queue_dying(head->disk->queue); 851 + blk_mark_disk_dead(head->disk); 852 852 /* make sure all pending bios are cleaned up */ 853 853 kblockd_schedule_work(&head->requeue_work); 854 854 flush_work(&head->requeue_work);
+2 -1
include/linux/blkdev.h
··· 748 748 749 749 bool __must_check blk_get_queue(struct request_queue *); 750 750 extern void blk_put_queue(struct request_queue *); 751 - extern void blk_set_queue_dying(struct request_queue *); 751 + 752 + void blk_mark_disk_dead(struct gendisk *disk); 752 753 753 754 #ifdef CONFIG_BLOCK 754 755 /*