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

Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next

* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next:
Squashfs: Add an option to set dev block size to 4K

+30 -1
+22
fs/squashfs/Kconfig
··· 78 78 79 79 If unsure, say N. 80 80 81 + config SQUASHFS_4K_DEVBLK_SIZE 82 + bool "Use 4K device block size?" 83 + depends on SQUASHFS 84 + help 85 + By default Squashfs sets the dev block size (sb_min_blocksize) 86 + to 1K or the smallest block size supported by the block device 87 + (if larger). This, because blocks are packed together and 88 + unaligned in Squashfs, should reduce latency. 89 + 90 + This, however, gives poor performance on MTD NAND devices where 91 + the optimal I/O size is 4K (even though the devices can support 92 + smaller block sizes). 93 + 94 + Using a 4K device block size may also improve overall I/O 95 + performance for some file access patterns (e.g. sequential 96 + accesses of files in filesystem order) on all media. 97 + 98 + Setting this option will force Squashfs to use a 4K device block 99 + size by default. 100 + 101 + If unsure, say N. 102 + 81 103 config SQUASHFS_EMBEDDED 82 104 bool "Additional option for memory-constrained systems" 83 105 depends on SQUASHFS
+7
fs/squashfs/squashfs_fs.h
··· 36 36 #define SQUASHFS_FILE_SIZE 131072 37 37 #define SQUASHFS_FILE_LOG 17 38 38 39 + /* default size of block device I/O */ 40 + #ifdef CONFIG_SQUASHFS_4K_DEVBLK_SIZE 41 + #define SQUASHFS_DEVBLK_SIZE 4096 42 + #else 43 + #define SQUASHFS_DEVBLK_SIZE 1024 44 + #endif 45 + 39 46 #define SQUASHFS_FILE_MAX_SIZE 1048576 40 47 #define SQUASHFS_FILE_MAX_LOG 20 41 48
+1 -1
fs/squashfs/super.c
··· 95 95 } 96 96 msblk = sb->s_fs_info; 97 97 98 - msblk->devblksize = sb_min_blocksize(sb, BLOCK_SIZE); 98 + msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE); 99 99 msblk->devblksize_log2 = ffz(~msblk->devblksize); 100 100 101 101 mutex_init(&msblk->read_data_mutex);