summaryrefslogtreecommitdiff
path: root/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch')
-rw-r--r--packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch b/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch
new file mode 100644
index 0000000000..e04996e2a8
--- /dev/null
+++ b/packages/linux/nslu2-kernel/2.6/40-scsi-idle.patch
@@ -0,0 +1,44 @@
+diff -ur linux-2.6.12.2/drivers/scsi/sd.c linux-2.6.12.2_scsi-idle/drivers/scsi/sd.c
+--- linux-2.6.12.2/drivers/scsi/sd.c 2005-08-27 06:12:31.000000000 +0200
++++ linux-2.6.12.2_scsi-idle/drivers/scsi/sd.c 2005-08-27 06:26:50.000000000 +0200
+@@ -266,6 +266,9 @@
+ "count=%d\n", disk->disk_name,
+ (unsigned long long)block, this_count));
+
++ /* Update idle-since time */
++ sdp->idle = jiffies;
++
+ if (!sdp || !scsi_device_online(sdp) ||
+ block + rq->nr_sectors > get_capacity(disk)) {
+ SCSI_LOG_HLQUEUE(2, printk("Finishing %ld sectors\n",
+@@ -600,6 +603,8 @@
+ case SCSI_IOCTL_GET_IDLUN:
+ case SCSI_IOCTL_GET_BUS_NUMBER:
+ return scsi_ioctl(sdp, cmd, p);
++ case SCSI_IOCTL_IDLE:
++ return (jiffies - sdp->idle) / HZ + 1;
+ default:
+ error = scsi_cmd_ioctl(filp, disk, cmd, p);
+ if (error != -ENOTTY)
+diff -ur linux-2.6.12.2/include/scsi/scsi_device.h linux-2.6.12.2_scsi-idle/include/scsi/scsi_device.h
+--- linux-2.6.12.2/include/scsi/scsi_device.h 2005-08-27 06:12:44.000000000 +0200
++++ linux-2.6.12.2_scsi-idle/include/scsi/scsi_device.h 2005-08-27 06:27:09.000000000 +0200
+@@ -125,6 +125,7 @@
+ atomic_t ioerr_cnt;
+
+ int timeout;
++ unsigned long idle; /* scsi idle time in jiffers */
+
+ struct device sdev_gendev;
+ struct class_device sdev_classdev;
+diff -ur linux-2.6.12.2/include/scsi/scsi_ioctl.h linux-2.6.12.2_scsi-idle/include/scsi/scsi_ioctl.h
+--- linux-2.6.12.2/include/scsi/scsi_ioctl.h 2005-08-27 06:12:44.000000000 +0200
++++ linux-2.6.12.2_scsi-idle/include/scsi/scsi_ioctl.h 2005-08-28 17:32:17.000000000 +0200
+@@ -7,6 +7,7 @@
+ #define SCSI_IOCTL_SYNC 4 /* Request synchronous parameters */
+ #define SCSI_IOCTL_START_UNIT 5
+ #define SCSI_IOCTL_STOP_UNIT 6
++#define SCSI_IOCTL_IDLE 4746 /* get idle time in jiffies */
+ /* The door lock/unlock constants are compatible with Sun constants for
+ the cdrom */
+ #define SCSI_IOCTL_DOORLOCK 0x5380 /* lock the eject mechanism */