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
This commit is contained in:
commit
044595d4e4
3 changed files with 30 additions and 1 deletions
|
@ -78,6 +78,28 @@ config SQUASHFS_XZ
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
config SQUASHFS_4K_DEVBLK_SIZE
|
||||||
|
bool "Use 4K device block size?"
|
||||||
|
depends on SQUASHFS
|
||||||
|
help
|
||||||
|
By default Squashfs sets the dev block size (sb_min_blocksize)
|
||||||
|
to 1K or the smallest block size supported by the block device
|
||||||
|
(if larger). This, because blocks are packed together and
|
||||||
|
unaligned in Squashfs, should reduce latency.
|
||||||
|
|
||||||
|
This, however, gives poor performance on MTD NAND devices where
|
||||||
|
the optimal I/O size is 4K (even though the devices can support
|
||||||
|
smaller block sizes).
|
||||||
|
|
||||||
|
Using a 4K device block size may also improve overall I/O
|
||||||
|
performance for some file access patterns (e.g. sequential
|
||||||
|
accesses of files in filesystem order) on all media.
|
||||||
|
|
||||||
|
Setting this option will force Squashfs to use a 4K device block
|
||||||
|
size by default.
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
config SQUASHFS_EMBEDDED
|
config SQUASHFS_EMBEDDED
|
||||||
bool "Additional option for memory-constrained systems"
|
bool "Additional option for memory-constrained systems"
|
||||||
depends on SQUASHFS
|
depends on SQUASHFS
|
||||||
|
|
|
@ -36,6 +36,13 @@
|
||||||
#define SQUASHFS_FILE_SIZE 131072
|
#define SQUASHFS_FILE_SIZE 131072
|
||||||
#define SQUASHFS_FILE_LOG 17
|
#define SQUASHFS_FILE_LOG 17
|
||||||
|
|
||||||
|
/* default size of block device I/O */
|
||||||
|
#ifdef CONFIG_SQUASHFS_4K_DEVBLK_SIZE
|
||||||
|
#define SQUASHFS_DEVBLK_SIZE 4096
|
||||||
|
#else
|
||||||
|
#define SQUASHFS_DEVBLK_SIZE 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SQUASHFS_FILE_MAX_SIZE 1048576
|
#define SQUASHFS_FILE_MAX_SIZE 1048576
|
||||||
#define SQUASHFS_FILE_MAX_LOG 20
|
#define SQUASHFS_FILE_MAX_LOG 20
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
}
|
}
|
||||||
msblk = sb->s_fs_info;
|
msblk = sb->s_fs_info;
|
||||||
|
|
||||||
msblk->devblksize = sb_min_blocksize(sb, BLOCK_SIZE);
|
msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE);
|
||||||
msblk->devblksize_log2 = ffz(~msblk->devblksize);
|
msblk->devblksize_log2 = ffz(~msblk->devblksize);
|
||||||
|
|
||||||
mutex_init(&msblk->read_data_mutex);
|
mutex_init(&msblk->read_data_mutex);
|
||||||
|
|
Loading…
Reference in a new issue