Linux – Mount ext4 Partition with >4KiB Block Size

ext4mount

I'm attempting to mount a partition from a NAS and the block size is 65536 bytes, this is above my distribution's precompiled kernel memory paging size of 4KiB, so I cannot mount it normally.

Which kernel compilation parameters would I need to change to get a memory paging size large enough? Would it be possible under the x86-64 architecture?

EDIT: There doesn't seem to be an option for it in make xconfig unless I'm just missing it.

From page_types.h under arch\x86\include\asm

/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT  12
#define PAGE_SIZE   (_AC(1,UL) << PAGE_SHIFT)
#define PAGE_MASK   (~(PAGE_SIZE-1))`

It doesn't look to be configurable. I could change this number directly to 16 and it would probably make pretty explosions and destroy Tokyo. I shall probably try it later this evening.

Best Answer

From page_types.h under arch\x86\include\asm

/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT  12
#define PAGE_SIZE   (_AC(1,UL) << PAGE_SHIFT)
#define PAGE_MASK   (~(PAGE_SIZE-1))

changing the 12 into a 16 results in

arch/x86/kernel/head64.c: In function ‘x86_64_start_kernel’:
arch/x86/kernel/head64.c:71: error: negative width in bit-field ‘<anonymous>’
make[2]: *** [arch/x86/kernel/head64.o] Error 1

Because this is just sanity checking code for modules offsets it seems that changing the memory paging size has a lot of unintended side effects which will make this far from simple. I guess I'm stuck with finding another arch to run on. :(

Here is a list of the archs that support 64KiB or greater page sizes: ia64, mips, pa-risc, powerpc, sh, sparc64. So it looks like my best bet it to find an old-PPC Mac.

Related Question