Messages in this thread | | | Date | Sat, 24 Jul 2010 14:51:28 +0100 | From | Al Viro <> | Subject | Re: [PATCH 3/3] [fs/sysv] V7: Add support for non-PDP11 v7 filesystems |
| |
On Mon, Jul 19, 2010 at 04:58:51PM +0200, Christoph Hellwig wrote: > On Mon, Jul 19, 2010 at 07:16:42PM +0200, Lubomir Rintel wrote: > > A mount-time option was added that makes it possible to override the > > endianness and an attempt is made to autodetect it (which seems easy, > > given the disk addresses are 3-byte. > > > > No attempt is made to detect big-endian filesystems -- were there any? > > Tested with PDP-11 v7 filesystems and PC-IX maintenance floppy. > > Do you actually need the mount option? We get away just fine with > it for sysv filesystems. And if not I'd be consistent and accept the > options for both sysv and v7 filesystems.
Actually, it shouldn't be too hard to detect the damn thing even without magic. Look - we always have the inode table starting at block 2, so on-disk root inode is guaranteed to be found correctly. Now, suppose we'd mistaken l-e for pdp or vice versa; the half-words of i_size would get swapped. What could pass both tests? Suppose the right size is a * 65536 + b; then we have: a and b are both multiples of 16 and at least one is non-zero. So all we need is to reject root directories bigger than 1Mb. And posted patches do reject that (and lower than that, actually).
So I'd rather see a variant without that option. Simply get both bh, then try the same sanity checks with LE and PDP used for s_bytesex. And use one that works - we _know_ that it's impossible to have both pass at the same time.
I'm fine with the rest of patch series as is; Lubomir, could you redo the last one that way and resend?
| |