preferences.fdi being ignored

Dan Nicholson dbn.lists at gmail.com
Thu May 15 23:15:23 PDT 2008


On Thu, May 15, 2008 at 9:10 PM, Yan Seiner <yan at seiner.com> wrote:
> Or I'm doing something wrong....  I've been beating my head against this
> for the better part of 2 days and hal is completely ignoring everything
> I try....
>
> I'm trying to change the mount options on a mp3 player.  I've put this
> together from various mailists and other references.
>
> The problem is that no matter what I do, hal ignores any and all changes
> to any of the /etc/hal/fdi/policy/*fdi files.
>
> I make changes and then restart hal.   No errors, nothing in the log
> files either indicating success, failure, or syntax errors. Then I plug
> in my mp3 player; it's mounted but completely ignores my desired mount
> options.
>
> selene:/media# cat .hal-mtab
> /dev/sdj1       1000    0       vfat
> nosuid,nodev,uhelper=hal,shortname=lower,uid=1000       /media/disk-1
> /dev/sdi        1000    0       vfat
> nosuid,nodev,uhelper=hal,shortname=lower,uid=1000       /media/disk-2
> selene:/media#
>
> So either I need to explicitly tell hal to re-read those *fdi files, or
> I'm doing something wrong.  Can someone please look at this and tell me
> if it should work?
>
> selene:/etc/hal/fdi/policy# lsusb
> Bus 002 Device 014: ID 0781:7422 SanDisk Corp.
>
> udi =
> '/org/freedesktop/Hal/devices/usb_device_781_7422_C904060F7752B4870000000000000000'
>  info.linux.driver = 'usb'  (string)
>  info.parent =
> '/org/freedesktop/Hal/devices/usb_device_409_5a_noserial'  (string)
>  info.product = 'SanDisk Sansa e280'  (string)
>  info.subsystem = 'usb_device'  (string)
>  info.udi =
> '/org/freedesktop/Hal/devices/usb_device_781_7422_C904060F7752B4870000000000000000'
> (string)
>  info.vendor = 'SanDisk Corp.'  (string)
>  linux.device_file = '/dev/bus/usb/002/014'  (string)
>  linux.hotplug_type = 2  (0x2)  (int)
>  linux.subsystem = 'usb'  (string)
>  linux.sysfs_path =
> '/sys/devices/pci0000:00/0000:00:02.1/usb2/2-1/2-1.2'  (string)
>  usb_device.bus_number = 2  (0x2)  (int)
>  usb_device.can_wake_up = false  (bool)
>  usb_device.configuration = 'config1: Mass Storage only'  (string)
>  usb_device.configuration_value = 1  (0x1)  (int)
>  usb_device.device_class = 0  (0x0)  (int)
>  usb_device.device_protocol = 0  (0x0)  (int)
>  usb_device.device_revision_bcd = 52708  (0xcde4)  (int)
>  usb_device.device_subclass = 0  (0x0)  (int)
>  usb_device.is_self_powered = false  (bool)
>  usb_device.linux.device_number = 14  (0xe)  (int)
>  usb_device.linux.sysfs_path =
> '/sys/devices/pci0000:00/0000:00:02.1/usb2/2-1/2-1.2'  (string)
>  usb_device.max_power = 500  (0x1f4)  (int)
>  usb_device.num_configurations = 1  (0x1)  (int)
>  usb_device.num_interfaces = 1  (0x1)  (int)
>  usb_device.num_ports = 0  (0x0)  (int)
>  usb_device.product = 'SanDisk Sansa e280'  (string)
>  usb_device.product_id = 29730  (0x7422)  (int)
>  usb_device.serial = 'C904060F7752B4870000000000000000'  (string)
>  usb_device.speed = 480.0 (480) (double)
>  usb_device.speed_bcd = 294912  (0x48000)  (int)
>  usb_device.vendor = 'SanDisk Corp.'  (string)
>  usb_device.vendor_id = 1921  (0x781)  (int)
>  usb_device.version = 2.0 (2) (double)
>  usb_device.version_bcd = 512  (0x200)  (int)
>
> and finally the sansa.fdi file:
>
> <?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
> <deviceinfo version="0.2">
>  <device>
>    <match key="block.is_volume" bool="true">
>       <match key="volume.fsusage" string="filesystem">
>         <match
> key="@block.storage_device:@storage.physical_device:usb.vendor_id"
> int="0x0781">
>           <match
> key="@block.storage_device:@storage.physical_device:usb.product_id"
> int="0x7422">
>             <merge key="volume.policy.mount_option.sync"
> type="bool">true</merge>
>             <merge key="volume.policy.mount_option.noatime"
> type="bool">true</merge>
>             <merge key="volume.policy.mount_option.uid=0"
> type="bool">true</merge>
>             <merge key="volume.policy.mount_option.gid=47"
> type="bool">true</merge>
>             <merge key="volume.policy.mount_option.umask=0002"
> type="bool">true</merge>
>           </match>
>         </match>
>      </match>
>    </match>
>  </device>
> </deviceinfo>

As I understand it, the problem is that HAL is not the one deciding
what the mount options should be. HAL only has a list of what the
valid mount options are. Whoever is listening for HAL events and
telling HAL to use its Mount method is sending the mount options. If
this is GNOME, that would be gnome-mount. It stores the user's
preferred mount options in GConf. So, you need to figure out who your
automounter is and how to change the mount options it passes to HAL.

--
Dan


More information about the hal mailing list