forked from mirrors/linux
		
	block/bdev: enable large folio support for large logical block sizes
Call mapping_set_folio_min_order() when modifying the logical block size to ensure folios are allocated with the correct size. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: "Matthew Wilcox (Oracle)" <willy@infradead.org> Signed-off-by: Hannes Reinecke <hare@suse.de> Link: https://lore.kernel.org/r/20250221223823.1680616-7-mcgrof@kernel.org Reviewed-by: John Garry <john.g.garry@oracle.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
		
							parent
							
								
									e59e97d42b
								
							
						
					
					
						commit
						3c20917120
					
				
					 1 changed files with 3 additions and 0 deletions
				
			
		|  | @ -148,6 +148,8 @@ static void set_init_blocksize(struct block_device *bdev) | ||||||
| 		bsize <<= 1; | 		bsize <<= 1; | ||||||
| 	} | 	} | ||||||
| 	BD_INODE(bdev)->i_blkbits = blksize_bits(bsize); | 	BD_INODE(bdev)->i_blkbits = blksize_bits(bsize); | ||||||
|  | 	mapping_set_folio_min_order(BD_INODE(bdev)->i_mapping, | ||||||
|  | 				    get_order(bsize)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int set_blocksize(struct file *file, int size) | int set_blocksize(struct file *file, int size) | ||||||
|  | @ -169,6 +171,7 @@ int set_blocksize(struct file *file, int size) | ||||||
| 	if (inode->i_blkbits != blksize_bits(size)) { | 	if (inode->i_blkbits != blksize_bits(size)) { | ||||||
| 		sync_blockdev(bdev); | 		sync_blockdev(bdev); | ||||||
| 		inode->i_blkbits = blksize_bits(size); | 		inode->i_blkbits = blksize_bits(size); | ||||||
|  | 		mapping_set_folio_min_order(inode->i_mapping, get_order(size)); | ||||||
| 		kill_bdev(bdev); | 		kill_bdev(bdev); | ||||||
| 	} | 	} | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Hannes Reinecke
						Hannes Reinecke