Support large blocksize up to PAGESIZE (max 64KB) for ext2
From: Takashi Sato <sho@tnes.nec.co.jp>
This patch set supports large block size(>4k, <=64k) in ext2,
just enlarging the block size limit. But it is NOT possible to have 64kB
blocksize on ext2 without some changes to the directory handling
code. The reason is that an empty 64kB directory block would have a
rec_len == (__u16)2^16 == 0, and this would cause an error to be hit in
the filesystem. The proposed solution is treat 64k rec_len
with a an impossible value like rec_len = 0xffff to handle this.
The Patch-set consists of the following 2 patches.
[1/2] ext2: enlarge blocksize
- Allow blocksize up to pagesize
[2/2] ext2: fix rec_len overflow
- prevent rec_len from overflow with 64KB blocksize
Now on 64k page ppc64 box runs with this patch set we could create a 64k
block size ext2, and able to handle empty directory block.
Please consider to include to mm tree.
Signed-off-by: Takashi Sato <sho@tnes.nec.co.jp>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
---
fs/ext2/super.c | 3 ++-
include/linux/ext2_fs.h | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 639a32c..765c805 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -775,7 +775,8 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
brelse(bh);
if (!sb_set_blocksize(sb, blocksize)) {
- printk(KERN_ERR "EXT2-fs: blocksize too small for device.\n");
+ printk(KERN_ERR "EXT2-fs: bad blocksize %d.\n",
+ blocksize);
goto failed_sbi;
}
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
index 153d755..910a705 100644
--- a/include/linux/ext2_fs.h
+++ b/include/linux/ext2_fs.h
@@ -86,8 +86,8 @@ static inline struct ext2_sb_info *EXT2_SB(struct super_block *sb)
* Macro-instructions used to manage several block sizes
*/
#define EXT2_MIN_BLOCK_SIZE 1024
-#define EXT2_MAX_BLOCK_SIZE 4096
-#define EXT2_MIN_BLOCK_LOG_SIZE 10
+#define EXT2_MAX_BLOCK_SIZE 65536
+#define EXT2_MIN_BLOCK_LOG_SIZE 10
#ifdef __KERNEL__
# define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize)
#else
-
| Kristen Carlson Accardi | [PATCH] ata: ahci: power off unused ports |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Jan Engelhardt | Re: Kernel Development & Objective-C |
| Chuck Ebbert | Why do so many machines need "noapic"? |
git: | |
| Jan Engelhardt | about c8af1de9 (git status uses pager) |
| Junio C Hamano | Re: [PATCH 3/3] Teach "git branch" about --new-workdir |
| Nicolas Pitre | Re: Git tree for old kernels from before the current tree |
| Linus Torvalds | Re: cleaner/better zlib sources? |
| Nick Guenther | Re: Real men don't attack straw men |
| Predrag Punosevac | Skype on the OpenBSD |
| Karsten McMinn | Re: Packets Per Second Limit? |
| L. V. Lammert | Re: About Xen: maybe a reiterative question but .. |
| Marnix Klooster | Re: Europe Distribution |
| Sean Moss-Pultz | [openmoko-announce] Let us impact the material world |
| Kosa | Re: Car Mode Application... |
| Federico Lorenzi | Re: multi-tutch? |
| Battery Maximizer Software | 7 hours ago | Linux kernel |
| windows folder creation surprise | 8 hours ago | Windows |
| Problem in scim in Fedora 9 | 10 hours ago | Linux general |
| Firewall | 23 hours ago | OpenBSD |
| IP layer send packet | 1 day ago | Linux kernel |
| dtrace for linux available | 1 day ago | Linux kernel |
| Unable to mount ramdisk image using UBoot while upgrading to 2.6.15 kernel for a MPC8540 based target | 2 days ago | Linux kernel |
| RealTek RTL8169 - can't connect | 2 days ago | NetBSD |
| vsftpd Upload Problems | 2 days ago | Linux general |
| creating con folder in desktop | 3 days ago | Windows |
