Нижеприведенный патч на ядро был предназначен для того чтобы подружить ext4 с жестким диском, который не может писать/читать блоками менее, чем по 4k, хотя сообщает о логическом размере в 512 байт. В обсуждении мне указали, что он портит жизнь в следующей ситуации: Кто-то на AF-диске (4k) создаёт ext4 с размером блока в 1k (бывают разные странности у людей). После применения патча смонтировать такую фс будет невозможно.
У меня нет в наличии такого диска, поэтому я прошу тех, у кого он есть, проверить эту гипотезу. Если mkfs.ext4 не дает сделать -b 1024, можно скопировать тестовый раздел в файл, создать фс в файле, а потом файл залить обратно на раздел. (В этом случае еще интересно, дает ли обычное ядро смонтировать такой раздел.)
diff -ur vanilla/linux-2.6.37-rc5/fs/block_dev.c linux-2.6.37-rc5/fs/block_dev.c
--- vanilla/linux-2.6.37-rc5/fs/block_dev.c 2010-12-07 04:09:04.000000000 +0000
+++ linux-2.6.37-rc5/fs/block_dev.c 2010-12-15 20:11:19.311387630 +0000
@@ -121,7 +121,7 @@
int sb_min_blocksize(struct super_block *sb, int size)
{
- int minsize = bdev_logical_block_size(sb->s_bdev);
+ int minsize = bdev_physical_block_size(sb->s_bdev);
if (size < minsize)
size = minsize;
return sb_set_blocksize(sb, size);