diff options
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 18 | ||||
-rw-r--r-- | drivers/ata/libata-scsi.c | 51 | ||||
-rw-r--r-- | include/linux/libata.h | 1 |
3 files changed, 0 insertions, 70 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 09e031c55887..b3b62903f08c 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -206,24 +206,6 @@ Who: Len Brown <len.brown@intel.com> | |||
206 | 206 | ||
207 | --------------------------- | 207 | --------------------------- |
208 | 208 | ||
209 | What: libata spindown skipping and warning | ||
210 | When: Dec 2008 | ||
211 | Why: Some halt(8) implementations synchronize caches for and spin | ||
212 | down libata disks because libata didn't use to spin down disk on | ||
213 | system halt (only synchronized caches). | ||
214 | Spin down on system halt is now implemented. sysfs node | ||
215 | /sys/class/scsi_disk/h:c:i:l/manage_start_stop is present if | ||
216 | spin down support is available. | ||
217 | Because issuing spin down command to an already spun down disk | ||
218 | makes some disks spin up just to spin down again, libata tracks | ||
219 | device spindown status to skip the extra spindown command and | ||
220 | warn about it. | ||
221 | This is to give userspace tools the time to get updated and will | ||
222 | be removed after userspace is reasonably updated. | ||
223 | Who: Tejun Heo <htejun@gmail.com> | ||
224 | |||
225 | --------------------------- | ||
226 | |||
227 | What: i386/x86_64 bzImage symlinks | 209 | What: i386/x86_64 bzImage symlinks |
228 | When: April 2010 | 210 | When: April 2010 |
229 | 211 | ||
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index d0dfeef55db5..de3a0050760a 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -1257,23 +1257,6 @@ int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth) | |||
1257 | return queue_depth; | 1257 | return queue_depth; |
1258 | } | 1258 | } |
1259 | 1259 | ||
1260 | /* XXX: for spindown warning */ | ||
1261 | static void ata_delayed_done_timerfn(unsigned long arg) | ||
1262 | { | ||
1263 | struct scsi_cmnd *scmd = (void *)arg; | ||
1264 | |||
1265 | scmd->scsi_done(scmd); | ||
1266 | } | ||
1267 | |||
1268 | /* XXX: for spindown warning */ | ||
1269 | static void ata_delayed_done(struct scsi_cmnd *scmd) | ||
1270 | { | ||
1271 | static struct timer_list timer; | ||
1272 | |||
1273 | setup_timer(&timer, ata_delayed_done_timerfn, (unsigned long)scmd); | ||
1274 | mod_timer(&timer, jiffies + 5 * HZ); | ||
1275 | } | ||
1276 | |||
1277 | /** | 1260 | /** |
1278 | * ata_scsi_start_stop_xlat - Translate SCSI START STOP UNIT command | 1261 | * ata_scsi_start_stop_xlat - Translate SCSI START STOP UNIT command |
1279 | * @qc: Storage for translated ATA taskfile | 1262 | * @qc: Storage for translated ATA taskfile |
@@ -1338,32 +1321,6 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc) | |||
1338 | system_entering_hibernation()) | 1321 | system_entering_hibernation()) |
1339 | goto skip; | 1322 | goto skip; |
1340 | 1323 | ||
1341 | /* XXX: This is for backward compatibility, will be | ||
1342 | * removed. Read Documentation/feature-removal-schedule.txt | ||
1343 | * for more info. | ||
1344 | */ | ||
1345 | if ((qc->dev->flags & ATA_DFLAG_SPUNDOWN) && | ||
1346 | (system_state == SYSTEM_HALT || | ||
1347 | system_state == SYSTEM_POWER_OFF)) { | ||
1348 | static unsigned long warned; | ||
1349 | |||
1350 | if (!test_and_set_bit(0, &warned)) { | ||
1351 | ata_dev_printk(qc->dev, KERN_WARNING, | ||
1352 | "DISK MIGHT NOT BE SPUN DOWN PROPERLY. " | ||
1353 | "UPDATE SHUTDOWN UTILITY\n"); | ||
1354 | ata_dev_printk(qc->dev, KERN_WARNING, | ||
1355 | "For more info, visit " | ||
1356 | "http://linux-ata.org/shutdown.html\n"); | ||
1357 | |||
1358 | /* ->scsi_done is not used, use it for | ||
1359 | * delayed completion. | ||
1360 | */ | ||
1361 | scmd->scsi_done = qc->scsidone; | ||
1362 | qc->scsidone = ata_delayed_done; | ||
1363 | } | ||
1364 | goto skip; | ||
1365 | } | ||
1366 | |||
1367 | /* Issue ATA STANDBY IMMEDIATE command */ | 1324 | /* Issue ATA STANDBY IMMEDIATE command */ |
1368 | tf->command = ATA_CMD_STANDBYNOW1; | 1325 | tf->command = ATA_CMD_STANDBYNOW1; |
1369 | } | 1326 | } |
@@ -1764,14 +1721,6 @@ static void ata_scsi_qc_complete(struct ata_queued_cmd *qc) | |||
1764 | } | 1721 | } |
1765 | } | 1722 | } |
1766 | 1723 | ||
1767 | /* XXX: track spindown state for spindown skipping and warning */ | ||
1768 | if (unlikely(qc->tf.command == ATA_CMD_STANDBY || | ||
1769 | qc->tf.command == ATA_CMD_STANDBYNOW1)) | ||
1770 | qc->dev->flags |= ATA_DFLAG_SPUNDOWN; | ||
1771 | else if (likely(system_state != SYSTEM_HALT && | ||
1772 | system_state != SYSTEM_POWER_OFF)) | ||
1773 | qc->dev->flags &= ~ATA_DFLAG_SPUNDOWN; | ||
1774 | |||
1775 | if (need_sense && !ap->ops->error_handler) | 1724 | if (need_sense && !ap->ops->error_handler) |
1776 | ata_dump_status(ap->print_id, &qc->result_tf); | 1725 | ata_dump_status(ap->print_id, &qc->result_tf); |
1777 | 1726 | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index d3f7cab4873e..76319bf03e37 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -143,7 +143,6 @@ enum { | |||
143 | 143 | ||
144 | ATA_DFLAG_PIO = (1 << 12), /* device limited to PIO mode */ | 144 | ATA_DFLAG_PIO = (1 << 12), /* device limited to PIO mode */ |
145 | ATA_DFLAG_NCQ_OFF = (1 << 13), /* device limited to non-NCQ mode */ | 145 | ATA_DFLAG_NCQ_OFF = (1 << 13), /* device limited to non-NCQ mode */ |
146 | ATA_DFLAG_SPUNDOWN = (1 << 14), /* XXX: for spindown_compat */ | ||
147 | ATA_DFLAG_SLEEPING = (1 << 15), /* device is sleeping */ | 146 | ATA_DFLAG_SLEEPING = (1 << 15), /* device is sleeping */ |
148 | ATA_DFLAG_DUBIOUS_XFER = (1 << 16), /* data transfer not verified */ | 147 | ATA_DFLAG_DUBIOUS_XFER = (1 << 16), /* data transfer not verified */ |
149 | ATA_DFLAG_NO_UNLOAD = (1 << 17), /* device doesn't support unload */ | 148 | ATA_DFLAG_NO_UNLOAD = (1 << 17), /* device doesn't support unload */ |