On Sunday 28 February 2010 06:52:23 pm Robert Hancock wrote: > On Sun, Feb 28, 2010 at 8:31 AM, Bartlomiej Zolnierkiewicz > <bzolnier@xxxxxxxxx> wrote: > > DISCLAIMER: the fact of getting patches merged into atang tree means > > that from now on they will be getting updates for changes happening > > in atang tree and it should not be treated as an indication regarding > > decisions taken by 'upstream' kernel trees > > > > > > Fix Asynchronous Notification (AN) support for SATA ATAPI devices > > (drives which support this feature will send a notification when new > > media is inserted and removed, preventing the need for user space to > > poll for new media needlessly consuming energy and CPU resources). > > > > Originally AN support was added to kernel in 2007, unfortunately some > > relevant bits were lost in the merge process and the feature remains > > non-functional in modern Linux distributions. Lets fix it by adding > > kernel patch by Robert Hancock (from Oct 2009) addressing the issue. > > > > User-space part (HAL daemon in particular) still won't automatically > > disable media polling but it can be done manually by executing: > > > > hal-disable-polling --device /dev/sr0 > > > > command as root. > > > > [ To check if your ATAPI device supports AN: > > # hdparm -I /dev/sr0|grep "Asynchronous notification" > > > > To check if it is properly recognized by kernel & user-space: > > $ lshal|grep support_async_notification ] > > > > > > PS1 if you have PLDS DS-8A3S drive in your laptop (like me) you may > > need to update the drive's firmware to the one containing AN support > > (HA28 for Asus' OEM drives and HD52 for Dell's ones) > > > > PS2 I will be rebasing atang on top of 2.6.33 in the near future > > > > > > The following changes since commit cad2f21db052f21beafd44d3396a565d9a485073: > > Bartlomiej Zolnierkiewicz (1): > > block: fix SSD performance regression > > > > are available in the git repository at: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/bart/misc.git atang-v4.9 > > > > Robert Hancock (1): > > scsi: properly export media change notification capability in block device flags > > > > drivers/scsi/sd.c | 2 ++ > > drivers/scsi/sr.c | 2 ++ > > 2 files changed, 4 insertions(+), 0 deletions(-) > > I think that patch is still applicable, but as you noted it doesn't > really have much effect on HAL by itself other than reporting the > "supports asynchronous notification" flag, there's nothing in HAL that > automatically stops polling when that's detected (at least last I > checked). The real issue is that without the said flag being set media change notification will stop working after you manually disable polling, see the code in hald/linux/blockdev.c: void hotplug_event_refresh_blockdev (gchar *sysfs_path, HalDevice *d, void *end_token) { HAL_INFO (("block_change: sysfs_path=%s", sysfs_path)); if (hal_device_property_get_bool (d, "storage.removable.support_async_notification")) { blockdev_rescan_device (d); } /* done with change event */ hotplug_event_end (end_token); } > As I recall the new HAL replacement (DeviceKit-disks I believe) > doesn't depend on that particular flag to detect AN support. Well, current distributions (i.e. openSUSE 11.2) still use HAL and I want AN now, not in another 'x' years... but I also took a look at udisks now (which is a newer/re-branded DeviceKit-disks), src/device.c: /* device_is_media_change_detected, device_is_media_change_detection_* properties */ static gboolean update_info_media_detection (Device *device) { gboolean detected; gboolean polling; gboolean inhibitable; gboolean inhibited; detected = FALSE; polling = FALSE; inhibitable = FALSE; inhibited = FALSE; if (device->priv->device_is_removable) { guint64 evt_media_change; GUdevDevice *parent; evt_media_change = sysfs_get_uint64 (device->priv->native_path, "../../evt_media_change"); if (evt_media_change & 1) { /* SATA AN capabable drive */ polling = FALSE; detected = TRUE; goto determined; ... so DeviceKit should work fine but at the cost of relying on SCSI interfaces instead of more generic block ones.. -- Bartlomiej Zolnierkiewicz -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html