"flawd" debugging ramdisk module

Stephen C. Tweedie (sct@dcs.ed.ac.uk)
31 May 1997 23:14:55 +0100


Hi all,

The .tar.gz below contains a new device driver module for 2.0.30,
"flawd". flawd just acts as a very simple ramdisk. It allocates
space statically in advance, and maintains a bad sector bitmap over
the whole device to inject IO errors on demand. It can be used to
test the kernel's ability to cope with errors on block devices.

To specify the size of the ramdisks (up to four can be created),
specify the size parameter on the insmod command line:

insmod flawd.o # Default: one 1024K flawdisk
insmod flawd.o size=2048 # One 2048K flawdisk
or insmod flawd.o size=1024,1024 # Two 1024K flawdisks

The major number of the flawdisk devices is 63, so you can create the
block device files with

mknod /dev/flawd0 b 63 0
mknod /dev/flawd1 b 63 1
mknod /dev/flawd2 b 63 2
mknod /dev/flawd3 b 63 3

Once created, you can just use them as any other block device. To
start injecting errors, run the supplied flawctl program, usage:

flawctl /dev/flawd? [-[sc] [start [count]] ...] ...

Specify the start and count arguments in sectors, and use -s and -c to
determine whether to set or clear the bad sector flags on subsequent
ranges. The count argument defaults to one if omitted.

For example,

./flawctl /dev/flawd0 -s 10 # Mark sector 10 as bad
./flawctl /dev/flawd0 -s 20 10 # Mark sectors 20--29 as bad
./flawctl /dev/flawd0 -c 0 10 100 10
# Mark sectors 0--9, 100--109 as good

The flawctl program only affects subsequent IO requests to the block
device: it does not affect the status of any blocks already cached by
the buffer cache.

I've been using flawd to test out ext2fs's error recovery code. Who
knows, somebody else might find it useful too.

Cheers,
Stephen.

----------------------------------------------------------------
begin 664 flawd.tar.gz
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
1K6YUJ]L?KOT;>M2">@!0````
`
end