Skip to contentSkip to conversation

PATCH: allow inode_readahead_blks=0

PATCH Alexander V. Lukyanov 1 participant 2 messages Nov 16, 2010 – Nov 17, 2010 ext4 file system

lore
Share & tools
lore
#0 lore raw

Hello!

Currently the value 0 is disallowed, as it is not a power of 2.

This obvious patch fixes the problem.

Signature · 1 line
   Alexander.
fs/ext4/super.c renamed from fs/ext4/super.c.0 +2 -2
@@ -1657,7 +1657,7 @@
 				return 0;
 			if (option < 0 || option > (1 << 30))
 				return 0;
-			if (!is_power_of_2(option)) {
+			if (option && !is_power_of_2(option)) {
 				ext4_msg(sb, KERN_ERR,
 					 "EXT4-fs: inode_readahead_blks"
 					 " must be a power of 2");
@@ -2274,7 +2274,7 @@
 	if (parse_strtoul(buf, 0x40000000, &t))
 		return -EINVAL;
 
-	if (!is_power_of_2(t))
+	if (t && !is_power_of_2(t))
 		return -EINVAL;
 
 	sbi->s_inode_readahead_blks = t;
#1 lore raw
Quoted 1 line · Alexander V. Lukyanov

Currently the value 0 is disallowed, as it is not a power of 2.

BTW, the default value inode_readahead_blks=32 gives me troubles: it raises load average and increases request latency on a busy squid server. I explain it by random access to large number of files which are present in the squid cache.

BTW2: the value of 0 should be allowed, it is explicitly used by the code:

                /*
                 * If we need to do any I/O, try to pre-readahead extra
                 * blocks from the inode table.
                 */
                if (EXT4_SB(sb)->s_inode_readahead_blks) {
			...
		}
Signature · 1 line
   Alexander.