Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next:
  Squashfs: Add an option to set dev block size to 4K
  • Loading branch information
torvalds committed Nov 4, 2011
2 parents 1583171 + 7657cac commit 044595d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
22 changes: 22 additions & 0 deletions fs/squashfs/Kconfig
Expand Up @@ -78,6 +78,28 @@ config SQUASHFS_XZ

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
bool "Additional option for memory-constrained systems"
depends on SQUASHFS
Expand Down
7 changes: 7 additions & 0 deletions fs/squashfs/squashfs_fs.h
Expand Up @@ -36,6 +36,13 @@
#define SQUASHFS_FILE_SIZE 131072
#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_LOG 20

Expand Down
2 changes: 1 addition & 1 deletion fs/squashfs/super.c
Expand Up @@ -95,7 +95,7 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
}
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);

mutex_init(&msblk->read_data_mutex);
Expand Down

0 comments on commit 044595d

Please sign in to comment.