2009-03-04 10:19:46

by Alex Buell

[permalink] [raw]
Subject: Ramdisk driver module

Folks,

I've just put together a ramdisk driver module over the last few days
adapted from bits that I've gleaned on the 'net. However, I have found
a problem with the module that I've not been able to solve yet. When
loading it for the first time, it all works perfectly, I can create a
filesystem on the devices, copy files onto it, then unload it
perfectly.

The problem arises when I reload the module, it crashes with 'badness
at fs/sysfs/dir.c:463' on my G3 iMac PPC machine which I use as a
generic kernel development machine, this runs 2.6.27.

There's this line:
'kobject_add_internal failed for 252:0 with -EEXIST, don't try to
register things with the same name in the same directory.'

252:0 is the dynamically assigned device major-minor number which is
correct. The odd thing when looking over the code in unload.c where it
unregisters the device it appears to work just fine. And I look at
the /dev/* directory and the device name definitely disappears when
unloaded. Yet when I reload the module it crashes with the above error.

Any ideas why? I've bzipped up the sources and uploaded it to
http://www.munted.org.uk/programming/ramdisk.tar.bz2

Also, I'd appreciate some constructive advice on improving on my work
further.

The original reason why I wrote this ramdisk was that I intended to use
variable sector sizes with it so I could test filesystems with it, as I
see that devices with 4k sectors could be on the market soon.

Thanks
Alex
--
http://www.munted.org.uk

Fearsome grindings.