atang tree: make SATA Asynchronous Notification work
PATCH 1/1 atang tree: make SATA Asynchronous Notification work
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(-)
Quoted 43 lines · Bartlomiej Zolnierkiewicz
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/sr0command 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 regressionare available in the git repository at:
Quoted 8 lines
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 flagsdrivers/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).
As I recall the new HAL replacement (DeviceKit-disks I believe) doesn't depend on that particular flag to detect AN support.
Quoted 54 lines · Robert Hancock
Quoted 43 lines · Bartlomiej Zolnierkiewicz
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/sr0command 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 regressionare available in the git repository at:
Quoted 8 lines
git://git.kernel.org/pub/scm/linux/kernel/git/bart/misc.gitatang-v4.9Robert Hancock (1):
scsi: properly export media change notification capability in block device flagsdrivers/scsi/sd.c | 2 ++ drivers/scsi/sr.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
Quoted 5 lines
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:
voidhotplug_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);
}Quoted 2 lines
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 gbooleanupdate_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