Volume manager based on DevKit
David Zeuthen
david at fubar.dk
Tue Jul 7 08:32:05 PDT 2009
Hey,
On Fri, 2009-07-03 at 16:13 +0200, Juan Miguel Cejuela wrote:
> Hi there,
>
> .
> I've written a simple automounter and volume manager based on
> DeviceKit:
Note that DeviceKit is now completely deprecated - users are supposed to
be using libudev or libgudev instead.
> .
> http://www.ashrentum.net/jmcejuela/programs/sources/volman-0.2.tar.gz
> .
> Some may find it interesting.
> .
> Currently it only manages media drives. I hasn't support yet for
> CDs/DVDs because I don't see an obvious way to obtain their device
> files. When inserting CDs I receive a "change" action device event and
> its device_file is null.
> .
Note that automounting is a really tricky business - see
http://bugs.freedesktop.org/show_bug.cgi?id=22652#c4
for some ramblings about the various issues.
Anyway, if all you want is automounting without a desktop session (which
I personally don't think is interesting but lots of people do), it's
probably much easier to just use something like GIO's GVolumeMonitor,
GDrive, GVolume, GMount and GMountOperation classes since
- GIO has a stable ABI/API that is guaranteed to be around for a very
very long time
- all the hard problems and nasty details are being addresses in GIO
since we use it in GNOME
- it's a higher-level abstraction so things like RAID support / iSCSI /
LVM / are abstracted away and you use the same API to e.g. start/stop
raid arrays as you would to bring-up/tear-down an iSCSI drive.
- it's also a higher level abstraction than DeviceKit-disks since it
breaks down block devices into Drives / Volumes. You need this kind
of abstraction to handle a) devices with partitions; vs. b) devices
with file systems on the main block device (like CDs); without too
much special casing
- it supports multiple backends like HAL, gnome-disk-utility /
DeviceKit-disks
- GIO has bindings for lots of languages, e.g. JS, Python, C++,
C#, Java, whatever
The downside is that it's hard to get GIO/GVfs to work for system
daemons. The trick here a) is to start a session bus; and b) avoid
mounting non-native mounts (e.g. a gphoto2:/// mount will only be
available to that "session").
Of course GIO won't end world hunger - it's definitely not the right API
for e.g. managing disks like Palimpsest wants (GIO makes policy
decisions about what is user visible and what's not) but for
automounting it should get it just right.
(Btw, if you (or anyone else for that matter) don't like the G stack
then just don't use it. But please realize that a lot of the logic is
needed one way or the other other and one main difference between
DeviceKit-disks and what it's replacing (HAL) is that a lot of this
logic now happens on the user side, not in the daemon.)
David
More information about the devkit-devel
mailing list