Skip to contentSkip to conversation

palo not working on ext2/ext3 partitions

DISCUSSION James Bottomley 2 participants 4 messages Jul 1, 2019

lore
Share & tools
lore
#0 lore raw

I recently had the pleasure of a complete reinstall and found that I can't set up palo on the new system (at least not palo that loads from an ext2/ext3 filesystem). The problem doesn't seem to be within palo itself, but the fact that mke2fs is no longer working for us. The symptom I see is that after a couple of uses the palo partition corrupts itself and then e2fsck destroys the iplboot stored in the badblocks list.

The problem seems to be with the badblock list because if I do

palo -I /dev/sdb

Followed by a fsck -f on the palo partition, it finds errors and wants to clear the badblock inode.

I can reproduce this simply by doing

dd if=/dev/zero of=bbtest.img bs=1M count=100
losetup /dev/loop0 bbtest.img
a=237; while [ $a -le 450 ]; do echo $a >> bblist.txt; a=$[$a+1]; done mke2fs -b 1024 -l /home/jejb/bblist.txt /dev/loop0
e2fsck -f /dev/loop0

With no palo involvement, so I don't think it's our fault.

I'll take this to the ext2 tools development list. Whatever it is seems to be really old because I unearthed an mke2fs from 2011 that still has the problem.

James

#1 lore raw
Quoted 23 lines · James Bottomley

I recently had the pleasure of a complete reinstall and found that I can't set up palo on the new system (at least not palo that loads from an ext2/ext3 filesystem). The problem doesn't seem to be within palo itself, but the fact that mke2fs is no longer working for us. The symptom I see is that after a couple of uses the palo partition corrupts itself and then e2fsck destroys the iplboot stored in the badblocks list.

The problem seems to be with the badblock list because if I do

palo -I /dev/sdb

Followed by a fsck -f on the palo partition, it finds errors and wants to clear the badblock inode.

I can reproduce this simply by doing

dd if=/dev/zero of=bbtest.img bs=1M count=100
losetup /dev/loop0 bbtest.img
a=237; while [ $a -le 450 ]; do echo $a >> bblist.txt; a=$[$a+1]; done mke2fs -b 1024 -l /home/jejb/bblist.txt /dev/loop0
e2fsck -f /dev/loop0

Quoted 5 lines

With no palo involvement, so I don't think it's our fault.

I'll take this to the ext2 tools development list. Whatever it is seems to be really old because I unearthed an mke2fs from 2011 that still has the problem.

Thanks for trying to fix it.
I'm not using this boot-from-extfs feature on any of my machines. All boot from a palo partition, so I agree, that hasn't been tested much.

Helge

#2 lore raw
Quoted 31 lines · Helge Deller
Quoted 30 lines · James Bottomley

I recently had the pleasure of a complete reinstall and found that I
can't set up palo on the new system (at least not palo that loads from
an ext2/ext3 filesystem). The problem doesn't seem to be within palo
itself, but the fact that mke2fs is no longer working for us. The symptom I see is that after a couple of uses the palo partition corrupts itself and then e2fsck destroys the iplboot stored in the badblocks list.

The problem seems to be with the badblock list because if I do

palo -I /dev/sdb

Followed by a fsck -f on the palo partition, it finds errors and wants
to clear the badblock inode.

I can reproduce this simply by doing

dd if=/dev/zero of=bbtest.img bs=1M count=100
losetup /dev/loop0 bbtest.img
a=237; while [ $a -le 450 ]; do echo $a >> bblist.txt; a=$[$a+1]; done
mke2fs -b 1024 -l /home/jejb/bblist.txt /dev/loop0 e2fsck -f /dev/loop0

With no palo involvement, so I don't think it's our fault.

Quoted 8 lines
Quoted 3 lines

I'll take this to the ext2 tools development list. Whatever it is seems to be really old because I unearthed an mke2fs from 2011 that still has the problem.

Thanks for trying to fix it.
I'm not using this boot-from-extfs feature on any of my machines. All boot from a palo partition, so I agree, that hasn't been tested much.

Heh, I suppose I'm the only one who keeps tons of kernels in the boot partition and needs a filesystem to select them. I suppose I did write the feature, it makes sense I'm the only one using it.

Empirically, I've found that as long as the badblocks don't include any block from 0-250 ext2/3 seems to be happy creating a valid filesystem. Unfortunately with the label being 64k (so even if the palo partition is first it starts at an offset of 64k) and our alignment being on 256k
absolute, we usually end up starting the badblocks at around block
224.

I also dumped an older functional palo partition and found that even there the bad blocks start at 224, so it definitely is something that changed in mke2fs.

James

#3 lore raw

On Mon, 2019-07-01 at 14:32 -0700, James Bottomley wrote:
[...]

Quoted 6 lines

Empirically, I've found that as long as the badblocks don't include any block from 0-250 ext2/3 seems to be happy creating a valid filesystem. Unfortunately with the label being 64k (so even if the palo partition is first it starts at an offset of 64k) and our alignment being on 256k absolute, we usually end up starting the badblocks at around block 224.

Based on this observation, this fixes palo for me ... at least I can create and check a palo ext2 partition after this.

James

---

palo/palo.c +3 -2
index 68b85cf..ce36612 100644
@@ -443,8 +443,9 @@ do_cdrom(int media, int kernel32, int kernel64,
 #define EXT2_HOLE	((MAXBLSIZE + 1) / EXT2_BLOCKSIZE)
 
 /* offset in bytes before start of hole,  ext2 doesn't allow holes at
- * to cover the first four blocks of the filesystem */
-#define EXT2_OFFSET	(4*EXT2_BLOCKSIZE)
+ * to cover the first four blocks of the filesystem
+ * FIXME: a problem in mke2fs doesn't allow bad block under 250 */
+#define EXT2_OFFSET	(251*EXT2_BLOCKSIZE)
 
 int
 do_formatted(int init, int media, const char *medianame, int partition,