Bug 184471

Summary: PCMCI Flash card reader should behave as a removable disk
Product: [Fedora] Fedora Reporter: Uno Engborg <uno>
Component: gnome-mountAssignee: John (J5) Palmieri <johnp>
Status: CLOSED DUPLICATE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 5CC: bmillett, davidz, jkeck, jspaleta, sundaram
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-03-26 20:16:42 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 150221    
Attachments:
Description Flags
lshal after ejecting
none
lshal before ejecting none

Description Uno Engborg 2006-03-09 00:28:51 UTC
Description of problem:

In FC4 when I inserted my Lexar PCCard flash card reader it appeared
as a removable drive in the "Computers" folder and was automagically
mounted on /media/idedrive. 

In FC5 it behaves like an ordinary non removable harddrive, and it is
not mounted automatically on insertion. It wold be nice if the old
FC4 behavior was restored.


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1. Insert PCMCI card
2. Whatch nothing happen
3.
  
Actual results:
The card is not mounted

Expected results:
Card mounted as a removable drive

Additional info:

Here is the dmesg output from inserting the card:

pccard: PCMCIA card inserted into slot 0
cs: memory probe 0xf0000000-0xf7ffffff: excluding 0xf0000000-0xf7ffffff
cs: memory probe 0xd0200000-0xdfffffff: excluding 0xd0200000-0xd11fffff
0xd1a00000-0xd41fffff 0xd4a00000-0xd51fffff 0xd5a00000-0xd61fffff
0xd6a00000-0xd71fffff 0xd7a00000-0xd81fffff 0xd8a00000-0xd91fffff
0xd9a00000-0xda1fffff 0xdaa00000-0xdb1fffff 0xdba00000-0xdc1fffff
0xdca00000-0xdd1fffff 0xdda00000-0xde1fffff 0xdea00000-0xdf1fffff
0xdfa00000-0xe01fffff
pcmcia: registering new device pcmcia0.0
Probing IDE interface ide2...
hde: 64MB CTS, CFA DISK drive
ide2 at 0x3100-0x3107,0x310e on irq 3
hde: max request size: 128KiB
hde: 128128 sectors (65 MB) w/4KiB Cache, CHS=1001/4/32
 hde: hde1
ide-cs: hde: Vcc = 3.3, Vpp = 0.0


My kernel version is: 2.6.15-1.2032_FC5

Comment 1 Rahul Sundaram 2006-03-09 07:35:50 UTC
*** Bug 182145 has been marked as a duplicate of this bug. ***

Comment 2 Jef Spaleta 2006-03-26 16:31:24 UTC
Just an FYI this is a side effect of the default policy file
99-redhat-storage-policy-fixed-drives.fdi

ide based removable media like ide based CF cards is not distinquished from
other IDE fixed disks in the catch all fixed-drives policy.

I do not know if policy can be adjusted to recover CF card mountability while
leaving "fixed disks" still ignored. I don't have an IDE CF card reader with
which to play with to suggest a policy edit which only affects CF card readers.

You can of course workaround this behavior by moving the fixed-drives policy out
of the way and restarting hald. But this recovers mountability of all fixed
drives, which may not be what the local administrator wants and certaintly
defeats the purpose of including the fixed-drives policy.  

-jef

Comment 3 Jef Spaleta 2006-03-26 16:44:48 UTC
What I don't get is why the CF IDE card reader doesn't have
storage.removable = true.

I would have thought it would.

I'd like to ask that someone who is seeing their CF card reader affected like
the original reporter if they can please do a dump of the command lshal  once
with the CF card in the reader and once with the CF card is out of the reader 
and attach both runs as seperate attachements to this report.  I'd like to look
at what hal says the properties of the reader are in both cases. It would be
instructive for me.

-jef 


Comment 4 Brian Millett 2006-03-26 17:00:39 UTC
Created attachment 126773 [details]
lshal after ejecting

Comment 5 Brian Millett 2006-03-26 17:02:05 UTC
Created attachment 126774 [details]
lshal before ejecting

Comment 6 Brian Millett 2006-03-26 17:03:44 UTC
diff between the two attachments:
[bpm]$ diff -wruN before after
--- before      2006-03-26 11:02:47.000000000 -0600
+++ after       2006-03-26 11:03:04.000000000 -0600
@@ -1,5 +1,5 @@

-Dumping 104 device(s) from the Global Device List:
+Dumping 100 device(s) from the Global Device List:
 -------------------------------------------------
 udi = '/org/freedesktop/Hal/devices/computer'
   info.callouts.add = {'hal-system-storage-cleanup-mountpoints'} (string list)
@@ -1298,102 +1298,6 @@
   linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1'
 (string)
   linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1'  (string)

-udi = '/org/freedesktop/Hal/devices/pcmcia__1__1'
-  info.udi = '/org/freedesktop/Hal/devices/pcmcia__1__1'  (string)
-  linux.subsystem = 'pcmcia'  (string)
-  linux.hotplug_type = 1  (0x1)  (int)
-  info.product = 'V5.00'  (string)
-  info.vendor = 'KINGSTON TECHNOLOGY CF CARD'  (string)
-  pcmcia.func_id = 4  (0x4)  (int)
-  pcmcia.card_id = 0  (0x0)  (int)
-  pcmcia.manf_id = 7  (0x7)  (int)
-  pcmcia.prod_id2 = 'V5.00'  (string)
-  pcmcia.prod_id1 = 'KINGSTON TECHNOLOGY CF CARD'  (string)
-  pcmcia.socket_number = 1  (0x1)  (int)
-  info.linux.driver = 'ide-cs'  (string)
-  info.parent = '/org/freedesktop/Hal/devices/pci_1217_6933'  (string)
-  info.bus = 'pcmcia'  (string)
-  linux.sysfs_path_device =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0'  (string)
-  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0' 
(string)
-
-udi = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'
-  info.udi = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'  (string)
-  linux.subsystem = 'ide'  (string)
-  linux.hotplug_type = 1  (0x1)  (int)
-  info.product = 'IDE device (master)'  (string)
-  ide.channel = 0  (0x0)  (int)
-  ide.host = 2  (0x2)  (int)
-  info.linux.driver = 'ide-disk'  (string)
-  info.parent = '/org/freedesktop/Hal/devices/pcmcia__1__1'  (string)
-  info.bus = 'ide'  (string)
-  linux.sysfs_path_device =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0/ide2/2.0'  (string)
-  linux.sysfs_path =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0/ide2/2.0'  (string)
-
-udi = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'
-  volume.ignore = true  (bool)
-  block.storage_device =
'/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'  (string)
-  info.udi = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card' 
(string)
-  storage.requires_eject = false  (bool)
-  storage.hotpluggable = false  (bool)
-  info.capabilities = {'storage', 'block'} (string list)
-  info.category = 'storage'  (string)
-  info.product = 'Hitachi ATA Card'  (string)
-  storage.removable = false  (bool)
-  storage.physical_device = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'
 (string)
-  storage.firmware_version = 'Rev_1.0'  (string)
-  storage.vendor = ''  (string)
-  storage.model = 'Hitachi ATA Card'  (string)
-  storage.drive_type = 'disk'  (string)
-  storage.automount_enabled_hint = true  (bool)
-  storage.media_check_enabled = false  (bool)
-  storage.no_partitions_hint = false  (bool)
-  storage.bus = 'ide'  (string)
-  block.is_volume = false  (bool)
-  block.minor = 0  (0x0)  (int)
-  block.major = 33  (0x21)  (int)
-  block.device = '/dev/hde'  (string)
-  linux.hotplug_type = 3  (0x3)  (int)
-  info.parent = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'  (string)
-  linux.sysfs_path_device = '/sys/block/hde'  (string)
-  linux.sysfs_path = '/sys/block/hde'  (string)
-
-udi = '/org/freedesktop/Hal/devices/volume_uuid_15DA_2B0E'
-  volume.unmount.valid_options = {'lazy'} (string list)
-  volume.mount.valid_options = {'ro', 'sync', 'dirsync', 'noatime',
'nodiratime', 'noexec', 'quiet', 'utf8', 'shortname=', 'codepage=',
'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid='} (string list)
-  org.freedesktop.Hal.Device.Volume.method_execpaths =
{'hal-system-storage-mount', 'hal-system-storage-unmount',
'hal-system-storage-eject'} (string list)
-  org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
(string list)
-  org.freedesktop.Hal.Device.Volume.method_names = {'Mount', 'Unmount',
'Eject'} (string list)
-  info.interfaces = {'org.freedesktop.Hal.Device.Volume'} (string list)
-  volume.ignore = true  (bool)
-  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_15DA_2B0E'  (string)
-  volume.partition.msdos_part_table_type = 6  (0x6)  (int)
-  info.product = 'MY STUFF'  (string)
-  volume.size = 64077824  (0x3d1c000)  (uint64)
-  volume.num_blocks = 125152  (0x1e8e0)  (int)
-  volume.block_size = 512  (0x200)  (int)
-  volume.partition.number = 1  (0x1)  (int)
-  info.capabilities = {'volume', 'block'} (string list)
-  info.category = 'volume'  (string)
-  volume.is_partition = true  (bool)
-  volume.is_disc = false  (bool)
-  volume.is_mounted = false  (bool)
-  volume.mount_point = ''  (string)
-  volume.label = 'MY STUFF'  (string)
-  volume.uuid = '15DA-2B0E'  (string)
-  volume.fsversion = 'FAT16'  (string)
-  volume.fsusage = 'filesystem'  (string)
-  volume.fstype = 'vfat'  (string)
-  storage.model = ''  (string)
-  block.storage_device =
'/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'  (string)
-  block.is_volume = true  (bool)
-  block.minor = 1  (0x1)  (int)
-  block.major = 33  (0x21)  (int)
-  block.device = '/dev/hde1'  (string)
-  linux.hotplug_type = 3  (0x3)  (int)
-  info.parent = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card' 
(string)
-  linux.sysfs_path_device = '/sys/block/hde/hde1'  (string)
-  linux.sysfs_path = '/sys/block/hde/hde1'  (string)
-
 udi = '/org/freedesktop/Hal/devices/pci_8086_24cc'
   info.udi = '/org/freedesktop/Hal/devices/pci_8086_24cc'  (string)
   linux.subsystem = 'pci'  (string)
@@ -2177,6 +2081,6 @@
   linux.sysfs_path = '/sys/devices/pnp0/00:06'  (string)


-Dumped 104 device(s) from the Global Device List.
+Dumped 100 device(s) from the Global Device List.
 ------------------------------------------------


Comment 7 Jef Spaleta 2006-03-26 17:49:34 UTC
So with the card in the reader.... hal sees the card but marks is
as not removable nor hotpluggable... which is confirmed in the lshal
attachements from the previous comments.  So the fixed-disked policy file
matches and the ignore property is set.

Is hal making a mistake here? Shouldn't hal be recognizing these pcmcia based
card readers as removable?   

Looking over the lshal policy all i can think of as a work around is trying to
match on the pcmcia substring from the storage.physical_device  in the
fixed-disk policy definition.

Does that make sense as a workaround to recover access to PCMCIA based storage
devices? Adding logic to the fixed-disk policy file so that volume.ignore is not
enabled if storage.physical_device contains "pcmcia"?

-jef


Comment 8 Jef Spaleta 2006-03-26 18:03:29 UTC
bah... can anyone provide me with an example snippet for a rule that encompasses
the logic for "match if does not contain"  None of the on disk policy examples
even in the /usr/share/doc/ area for hal has an example for an exclude match.


-jef

Comment 9 Jef Spaleta 2006-03-26 18:13:21 UTC
And shouldn't hal be setting storage.drive_type = compact_flash  for the card
readers of this type.  Brian your cardreader from the attachments is a Compact
Flash card reader correct?


I ask because I'm looking over the example policy file
/usr/share/doc/hal-0.5.7/conf/match-cardreader.fdi
and it appears that hal should be able to detect compact_flash as drive_type.
Unless of course that example policy is stale and no longer valid.

Though experimenting with my usb CF cardreader the drive_type for it doesn't
show compact_flash either.  So I'm utterly confused as to what the correct
behavior is with regard to drive_type with a CF card is plugged in.  

Is hal suppose to distinguish "compact_flash" from "disk" as the example policy
in the hal ondisk docs suggest?  There is either a bug in hal or a bug in the
provided example policy that coes in hal's doc directory.

-jef



Comment 10 Brian Millett 2006-03-26 18:23:39 UTC
Jeff,
It is a CompactFlash PC Card Adapter by Kingston.  I do have a Flashcard reader,
but it is USB and it works correctly.

Here is the output from hal-device for the card:

[bpm]$ sudo hal-device
0: udi = '/org/freedesktop/Hal/devices/volume_uuid_15DA_2B0E'
  volume.unmount.valid_options = { 'lazy' } (string list)
  volume.mount.valid_options = { 'ro', 'sync', 'dirsync', 'noatime',
'nodiratime', 'noexec', 'quiet', 'utf8', 'shortname=', 'codepage=',
'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=' } (string list)
  org.freedesktop.Hal.Device.Volume.method_execpaths = {
'hal-system-storage-mount', 'hal-system-storage-unmount',
'hal-system-storage-eject' } (string list)
  org.freedesktop.Hal.Device.Volume.method_signatures = { 'ssas', 'as', 'as' }
(string list)
  org.freedesktop.Hal.Device.Volume.method_names = { 'Mount', 'Unmount', 'Eject'
} (string list)
  info.interfaces = { 'org.freedesktop.Hal.Device.Volume' } (string list)
  volume.ignore = true  (bool)
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_15DA_2B0E'  (string)
  volume.partition.msdos_part_table_type = 6  (0x6)  (int)
  info.product = 'MY STUFF'  (string)
  volume.size = 64077824  (0x3d1c000)  (uint64)
  volume.num_blocks = 125152  (0x1e8e0)  (int)
  volume.block_size = 512  (0x200)  (int)
  volume.partition.number = 1  (0x1)  (int)
  info.capabilities = { 'volume', 'block' } (string list)
  info.category = 'volume'  (string)
  volume.is_partition = true  (bool)
  volume.is_disc = false  (bool)
  volume.is_mounted = false  (bool)
  volume.mount_point = ''  (string)
  volume.label = 'MY STUFF'  (string)
  volume.uuid = '15DA-2B0E'  (string)
  volume.fsversion = 'FAT16'  (string)
  volume.fsusage = 'filesystem'  (string)
  volume.fstype = 'vfat'  (string)
  storage.model = ''  (string)
  block.storage_device =
'/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'  (string)
  block.is_volume = true  (bool)
  block.minor = 1  (0x1)  (int)
  block.major = 33  (0x21)  (int)
  block.device = '/dev/hde1'  (string)
  linux.hotplug_type = 3  (0x3)  (int)
  info.parent = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card' 
(string)
  linux.sysfs_path_device = '/sys/block/hde/hde1'  (string)
  linux.sysfs_path = '/sys/block/hde/hde1'  (string)

1: udi = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'
  volume.ignore = true  (bool)
  block.storage_device =
'/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'  (string)
  info.udi = '/org/freedesktop/Hal/devices/storage_model_Hitachi_ATA_Card'  (string)
  storage.requires_eject = false  (bool)
  storage.hotpluggable = false  (bool)
  info.capabilities = { 'storage', 'block' } (string list)
  info.category = 'storage'  (string)
  info.product = 'Hitachi ATA Card'  (string)
  storage.removable = false  (bool)
  storage.physical_device = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'
 (string)
  storage.firmware_version = 'Rev_1.0'  (string)
  storage.vendor = ''  (string)
  storage.model = 'Hitachi ATA Card'  (string)
  storage.drive_type = 'disk'  (string)
  storage.automount_enabled_hint = true  (bool)
  storage.media_check_enabled = false  (bool)
  storage.no_partitions_hint = false  (bool)
  storage.bus = 'ide'  (string)
  block.is_volume = false  (bool)
  block.minor = 0  (0x0)  (int)
  block.major = 33  (0x21)  (int)
  block.device = '/dev/hde'  (string)
  linux.hotplug_type = 3  (0x3)  (int)
  info.parent = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'  (string)
  linux.sysfs_path_device = '/sys/block/hde'  (string)
  linux.sysfs_path = '/sys/block/hde'  (string)


Comment 11 Brian Millett 2006-03-26 18:25:27 UTC
Drat, looks like I should also have included:

2: udi = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'
  info.udi = '/org/freedesktop/Hal/devices/pcmcia__1__1_ide_2_0'  (string)
  linux.subsystem = 'ide'  (string)
  linux.hotplug_type = 1  (0x1)  (int)
  info.product = 'IDE device (master)'  (string)
  ide.channel = 0  (0x0)  (int)
  ide.host = 2  (0x2)  (int)
  info.linux.driver = 'ide-disk'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pcmcia__1__1'  (string)
  info.bus = 'ide'  (string)
  linux.sysfs_path_device =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0/ide2/2.0'  (string)
  linux.sysfs_path =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0/ide2/2.0'  (string)

3: udi = '/org/freedesktop/Hal/devices/pcmcia__1__1'
  info.udi = '/org/freedesktop/Hal/devices/pcmcia__1__1'  (string)
  linux.subsystem = 'pcmcia'  (string)
  linux.hotplug_type = 1  (0x1)  (int)
  info.product = 'V5.00'  (string)
  info.vendor = 'KINGSTON TECHNOLOGY CF CARD'  (string)
  pcmcia.func_id = 4  (0x4)  (int)
  pcmcia.card_id = 0  (0x0)  (int)
  pcmcia.manf_id = 7  (0x7)  (int)
  pcmcia.prod_id2 = 'V5.00'  (string)
  pcmcia.prod_id1 = 'KINGSTON TECHNOLOGY CF CARD'  (string)
  pcmcia.socket_number = 1  (0x1)  (int)
  info.linux.driver = 'ide-cs'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_1217_6933'  (string)
  info.bus = 'pcmcia'  (string)
  linux.sysfs_path_device =
'/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0'  (string)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:04.1/1.0' 
(string)


Comment 12 Jef Spaleta 2006-03-26 18:41:06 UTC
Brian,  can you see if this naive attempt at a policy edit makes your pcmcia
cardreader work?  I don't know if there are unintended side-effects with other
pcmcia storage devices which should not be marked as removable... so buyer beware.

replace 10osvendor/99-redhat-storage-policy-fixed-drives.fdi
with
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">
<device>
  <match key="@block.storage_device:storage.physical_device" contains="pcmcia">
    <merge key="storage.removable" type="bool">true</merge>
  </match>
  <match key="@block.storage_device:storage.hotpluggable" bool="false">
    <match key="@block.storage_device:storage.removable" bool="false">
      <merge key="volume.ignore" type="bool">true</merge>
    </match>
  </match>
</device>
</deviceinfo>


-jef

Comment 13 David Zeuthen 2006-03-26 20:15:31 UTC
This is discussed in more detail in bug 185557 so I'm closing this as a
duplicate. I'll also try to make a fix today.

Comment 14 David Zeuthen 2006-03-26 20:16:42 UTC

*** This bug has been marked as a duplicate of 185557 ***