[openbeosstorage] Re: Device API / DriveSetup AddOns
- From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
- To: openbeosstorage@xxxxxxxxxxxxx
- Date: Mon, 09 Dec 2002 20:31:11 +0100 CET
Hi Ingo,
> I've been researching a bit more and I come to believe, that either
> there's something nice and dandy I'm overlooking or that it is
Although I've read the whole mail, what do you thing you are
overlooking=3F :-)
> virtually impossible to implement the device API on top of Be's
> libroot. At least not without getting more information about some
> private API parts. (BTW, isn't libroot derived from glibc and doesn't
> that mean that (respecting the LGPL) the sources had to be
> published=3F)
They have released it, yes, but I don't think it would be of great
help, unless you explain how it could be impossible=3F
> Per drive a mass storage driver publishes a device (usually /dev/.../
> raw) that represents the drive as continues storage readable and
> writable like a file implementing some additional ioctls. (For SCSI
> drivers things seem to work a bit differently -- CAM, read/write
> doesn't work.)
If possible, we should make sure that read/write will work for SCSI
devices, can't imagine how else it could work (well, you probably can
use readv/writev instead).
> The driver doesn't need to know about sessions/partitions/FSs;
> another
> entity handles this. This entity reads the respective information
> from
> the drive (via the driver, of course) and publishes devices named
> like
> `<session number>=5F<partition number>' close to the `raw' device of
> the
> driver.
Exactly.
> So what and where is this entity=3F Putting this question aside for a
> second, I would naively suspect, that, whatever it is, it uses the
> DriveSetup add-ons (`/system/add-ons/drive=5Fsetup/
> {session,partition,fs}
> /*'). The session add-ons can deal with sessions on a drive, the
> partition add-ons know about partitions on sessions and the FS add-
> ons
> can identify/initialize a FS on a partition.
The logic for this is in the add-ons, it's currently working like this
(so I imagine, at least):
1. the DriveSetup add-on loads the partition table and parses it
2. it writes the new partition info via ioctl() to the raw device, if
it has to; this will create a new device x=5Fy alongside the raw entry
3. that new x=5Fy device is now regularly mounted
> So back to the question, what the magical entity is. I would say,
> it's
> the user of the device API, i.e. usually the auto mounter of the
> Tracker and, if running, also DriveSetup (and mountvolume which uses
> the device API). That suspicion is supported by my experience that
> the
> devices for the partitions aren't published when neither Tracker nor
> DriveSetup are running.
I kind of don't get the part with the magic entity=3F What else should it
do=3F
> For the kernel does neither use the device API nor the DriveSetup add
> -
> ons, there is certainly built-in functionality to deal with session/
> partition/FS recognition. Don't know, if one could avoid that code
> duplication.
That's one thing I want to change; the kernel must have some kind of
knowledge about sessions and partitions, because it can boot from a BFS
partition or session on disk. It doesn't do anything else when it's
running, though.
> Conclusion: Either someone pulls the missing information out of a
> hat,
> or we 1) have to start more or less from the scratch with the drive
> setup add-on API and 2) need to postpone the final implementation of
> the device API until our kernel features all the functionality we
> need.
I would be for 1.5) ;-)
I think the kernel should be independant of libbe.so and the drive
setup add-ons - it should be able to recognize partitions and sessions
all the time, it shouldn't play dumb in this regard after having
booted.
So the first thing would be do design a kernel API that makes
implementing everything needed for the private Device API possible. I
thought we would design that API together, off-loading most of the real
work to the kernel. Then, the Device API could be written relatively
easy from scratch.
I think we should continue to use an add-on based approach, but the add
-ons should be kernel add-ons.
Adios...
Axel.
- References:
- [openbeosstorage] Device API / DriveSetup AddOns
- From: Ingo Weinhold
Other related posts:
- » [openbeosstorage] Device API / DriveSetup AddOns
- » [openbeosstorage] Re: Device API / DriveSetup AddOns
- » [openbeosstorage] Re: Device API / DriveSetup AddOns
- » [openbeosstorage] Re: Device API / DriveSetup AddOns
- » [openbeosstorage] Re: Device API / DriveSetup AddOns
- [openbeosstorage] Device API / DriveSetup AddOns
- From: Ingo Weinhold