akpm@xxxxxxxxxxxxxxxxxxxx wrote:
From: Kristen Carlson Accardi <kristen.c.accardi@xxxxxxxxx>
If Asynchronous Notification of media change events is supported, pass that
information up to the SCSI layer.
Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@xxxxxxxxx>
Cc: Jeff Garzik <jeff@xxxxxxxxxx>
Cc: Tejun Heo <htejun@xxxxxxxxx>
Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---
drivers/ata/libata-scsi.c | 3 +++
1 file changed, 3 insertions(+)
diff -puN drivers/ata/libata-scsi.c~libata-expose-an-to-user-space drivers/ata/libata-scsi.c
--- a/drivers/ata/libata-scsi.c~libata-expose-an-to-user-space
+++ a/drivers/ata/libata-scsi.c
@@ -773,6 +773,9 @@ static void ata_scsi_dev_config(struct s
blk_queue_max_hw_segments(q, q->max_hw_segments - 1);
}
+ if (dev->flags & ATA_DFLAG_AN)
+ sdev->media_change_notify = 1;
+
Methinks this wasn't tested, as you missed removal of the crucial
OTHER_AN_PATCHES_HAVE_BEEN_APPLIED ifdef-ery... :)
Anyway, I updated the patch for the media_event thingy in the last
email, and applied the attached patch
commit 6ba2326c804e2d449c2f40a63ba0a9ea650bef47
Author: Jeff Garzik <jeff@xxxxxxxxxx>
Date: Thu Oct 25 03:20:05 2007 -0400
[libata] Utilize new SCSI media event infrastructure
Signed-off-by: Jeff Garzik <jgarzik@xxxxxxxxxx>
drivers/ata/libata-scsi.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
6ba2326c804e2d449c2f40a63ba0a9ea650bef47
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index f5d5420..65b6153 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -773,6 +773,9 @@ static void ata_scsi_dev_config(struct scsi_device *sdev,
blk_queue_max_hw_segments(q, q->max_hw_segments - 1);
}
+ if (dev->flags & ATA_DFLAG_AN)
+ sdev->media_events = 1;
+
if (dev->flags & ATA_DFLAG_NCQ) {
int depth;
@@ -3248,10 +3251,8 @@ static void ata_scsi_handle_link_detach(struct ata_link *link)
*/
void ata_scsi_media_change_notify(struct ata_device *dev)
{
-#ifdef OTHER_AN_PATCHES_HAVE_BEEN_APPLIED
if (dev->sdev)
- scsi_device_event_notify(dev->sdev, SDEV_MEDIA_CHANGE);
-#endif
+ scsi_device_event_notify(dev->sdev, 1UL << SDEV_MEDIA_CHANGE);
}
/**