Re: ramdisk driver strange behaviour

From: Nathan Scott
Date: Mon Apr 17 2006 - 18:29:49 EST


On Fri, Apr 14, 2006 at 03:59:07PM +0200, Gyorgy Szekely wrote:
> hi,
> i'm trying to use a ramdisk driver (block/rd.c) and experienced some
> very strnage behaviour. In brief:
> If I set ramdisk_blocksize=512 on the kernel command line, the driver
> operates oddly. I execute the following commands in a shell:
>
> mkfs.ext2 /dev/ram0 ~runs fine, no errors
> mount /dev/ram0 /mnt/disk ~doesn't mount the filesystem, can't find
> it on device
> mkfs.ext2 /dev/ram0 ~runs fine, same as above
> mount /dev/ram0 /mnt/disk ~mounts fine
>
> I have to make exactly this command sequence, to make the fs usable,
> eg: mkfs.ext2 twice without trying to mount doesn't work. Once the
> mount succeeds everything works fine, i can read/write files,
> unmount/remount everything as expected.
> I copied the ramdisk contents with dd into a file, and after the first
> pass it's all zeros nothing else. Like the first mkfs didn't do
> anything.
>
> If I remove the ramdisk_blocksize option from the kernel command line
> (defaults to 1024) then all is ok.

I wonder if this is a strange artifact of the supported blocksizes
for the filesystem you're using...

mkfs.ext2 ...
-b block-size
Specify the size of blocks in bytes. Valid block size
vales are 1024, 2048 and 4096 bytes per block. ...

During mount the filesystem will tell the driver what its minimum
block size is, and the driver is meant to validate that, and return
an error if its too small. Whats probably happening in your case
is a failure to handle the too-small case correctly... oh, hmm, yes,
look at the callers of set_blocksize -- in ext3 its return value is
not being checked afaict, and in ext2 I'm not sure where this setup
is done (doesn't seem to be a set_blocksize call there at all - hmm).

You might try XFS too as a data point - XFS will permit a 512 byte
filesystem blocksize - so try mkfs.xfs -bsize=512 /dev/ram0 and see
if that mounts OK first go... that'd backup the above theory if it
does.

cheers.

--
Nathan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/