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.18-20251009' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

Pull block fixes from Jens Axboe:

- Don't include __GFP_NOWARN for loop worker allocation, as it already
uses GFP_NOWAIT which has __GFP_NOWARN set already

- Small series cleaning up the recent bio_iov_iter_get_pages() changes

- loop fix for leaking the backing reference file, if validation fails

- Update of a comment pertaining to disk/partition stat locking

* tag 'block-6.18-20251009' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
loop: remove redundant __GFP_NOWARN flag
block: move bio_iov_iter_get_bdev_pages to block/fops.c
iomap: open code bio_iov_iter_get_bdev_pages
block: rename bio_iov_iter_get_pages_aligned to bio_iov_iter_get_pages
block: remove bio_iov_iter_get_pages
block: Update a comment of disk statistics
loop: fix backing file reference leak on validation error

+29 -26
+2 -3
block/bio.c
··· 1316 1316 } 1317 1317 1318 1318 /** 1319 - * bio_iov_iter_get_pages_aligned - add user or kernel pages to a bio 1319 + * bio_iov_iter_get_pages - add user or kernel pages to a bio 1320 1320 * @bio: bio to add pages to 1321 1321 * @iter: iov iterator describing the region to be added 1322 1322 * @len_align_mask: the mask to align the total size to, 0 for any length ··· 1336 1336 * MM encounters an error pinning the requested pages, it stops. Error 1337 1337 * is returned only if 0 pages could be pinned. 1338 1338 */ 1339 - int bio_iov_iter_get_pages_aligned(struct bio *bio, struct iov_iter *iter, 1339 + int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter, 1340 1340 unsigned len_align_mask) 1341 1341 { 1342 1342 int ret = 0; ··· 1360 1360 return bio_iov_iter_align_down(bio, iter, len_align_mask); 1361 1361 return ret; 1362 1362 } 1363 - EXPORT_SYMBOL_GPL(bio_iov_iter_get_pages_aligned); 1364 1363 1365 1364 static void submit_bio_wait_endio(struct bio *bio) 1366 1365 {
+5 -1
block/blk-map.c
··· 283 283 bio = blk_rq_map_bio_alloc(rq, nr_vecs, gfp_mask); 284 284 if (!bio) 285 285 return -ENOMEM; 286 - ret = bio_iov_iter_get_pages(bio, iter); 286 + /* 287 + * No alignment requirements on our part to support arbitrary 288 + * passthrough commands. 289 + */ 290 + ret = bio_iov_iter_get_pages(bio, iter, 0); 287 291 if (ret) 288 292 goto out_put; 289 293 ret = blk_rq_append_bio(rq, bio);
+10 -3
block/fops.c
··· 43 43 (bdev_logical_block_size(bdev) - 1); 44 44 } 45 45 46 + static inline int blkdev_iov_iter_get_pages(struct bio *bio, 47 + struct iov_iter *iter, struct block_device *bdev) 48 + { 49 + return bio_iov_iter_get_pages(bio, iter, 50 + bdev_logical_block_size(bdev) - 1); 51 + } 52 + 46 53 #define DIO_INLINE_BIO_VECS 4 47 54 48 55 static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, ··· 85 78 if (iocb->ki_flags & IOCB_ATOMIC) 86 79 bio.bi_opf |= REQ_ATOMIC; 87 80 88 - ret = bio_iov_iter_get_bdev_pages(&bio, iter, bdev); 81 + ret = blkdev_iov_iter_get_pages(&bio, iter, bdev); 89 82 if (unlikely(ret)) 90 83 goto out; 91 84 ret = bio.bi_iter.bi_size; ··· 219 212 bio->bi_end_io = blkdev_bio_end_io; 220 213 bio->bi_ioprio = iocb->ki_ioprio; 221 214 222 - ret = bio_iov_iter_get_bdev_pages(bio, iter, bdev); 215 + ret = blkdev_iov_iter_get_pages(bio, iter, bdev); 223 216 if (unlikely(ret)) { 224 217 bio->bi_status = BLK_STS_IOERR; 225 218 bio_endio(bio); ··· 355 348 */ 356 349 bio_iov_bvec_set(bio, iter); 357 350 } else { 358 - ret = bio_iov_iter_get_bdev_pages(bio, iter, bdev); 351 + ret = blkdev_iov_iter_get_pages(bio, iter, bdev); 359 352 if (unlikely(ret)) 360 353 goto out_bio_put; 361 354 }
+7 -3
drivers/block/loop.c
··· 551 551 return -EBADF; 552 552 553 553 error = loop_check_backing_file(file); 554 - if (error) 554 + if (error) { 555 + fput(file); 555 556 return error; 557 + } 556 558 557 559 /* suppress uevents while reconfiguring the device */ 558 560 dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 1); ··· 824 822 if (worker) 825 823 goto queue_work; 826 824 827 - worker = kzalloc(sizeof(struct loop_worker), GFP_NOWAIT | __GFP_NOWARN); 825 + worker = kzalloc(sizeof(struct loop_worker), GFP_NOWAIT); 828 826 /* 829 827 * In the event we cannot allocate a worker, just queue on the 830 828 * rootcg worker and issue the I/O as the rootcg ··· 995 993 return -EBADF; 996 994 997 995 error = loop_check_backing_file(file); 998 - if (error) 996 + if (error) { 997 + fput(file); 999 998 return error; 999 + } 1000 1000 1001 1001 is_loop = is_loop_device(file); 1002 1002
+2 -1
fs/iomap/direct-io.c
··· 433 433 bio->bi_private = dio; 434 434 bio->bi_end_io = iomap_dio_bio_end_io; 435 435 436 - ret = bio_iov_iter_get_bdev_pages(bio, dio->submit.iter, iomap->bdev); 436 + ret = bio_iov_iter_get_pages(bio, dio->submit.iter, 437 + bdev_logical_block_size(iomap->bdev) - 1); 437 438 if (unlikely(ret)) { 438 439 /* 439 440 * We have to stop part way through an IO. We must fall
+1 -6
include/linux/bio.h
··· 446 446 int bdev_rw_virt(struct block_device *bdev, sector_t sector, void *data, 447 447 size_t len, enum req_op op); 448 448 449 - int bio_iov_iter_get_pages_aligned(struct bio *bio, struct iov_iter *iter, 449 + int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter, 450 450 unsigned len_align_mask); 451 - 452 - static inline int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) 453 - { 454 - return bio_iov_iter_get_pages_aligned(bio, iter, 0); 455 - } 456 451 457 452 void bio_iov_bvec_set(struct bio *bio, const struct iov_iter *iter); 458 453 void __bio_release_pages(struct bio *bio, bool mark_dirty);
-7
include/linux/blkdev.h
··· 1873 1873 return bio_split_io_at(bio, lim, segs, max_bytes, lim->dma_alignment); 1874 1874 } 1875 1875 1876 - static inline int bio_iov_iter_get_bdev_pages(struct bio *bio, 1877 - struct iov_iter *iter, struct block_device *bdev) 1878 - { 1879 - return bio_iov_iter_get_pages_aligned(bio, iter, 1880 - bdev_logical_block_size(bdev) - 1); 1881 - } 1882 - 1883 1876 #define DEFINE_IO_COMP_BATCH(name) struct io_comp_batch name = { } 1884 1877 1885 1878 #endif /* _LINUX_BLKDEV_H */
+2 -2
include/linux/part_stat.h
··· 17 17 /* 18 18 * Macros to operate on percpu disk statistics: 19 19 * 20 - * {disk|part|all}_stat_{add|sub|inc|dec}() modify the stat counters and should 21 - * be called between disk_stat_lock() and disk_stat_unlock(). 20 + * part_stat_{add|sub|inc|dec}() modify the stat counters and should 21 + * be called between part_stat_lock() and part_stat_unlock(). 22 22 * 23 23 * part_stat_read() can be called at any time. 24 24 */