diff options
| -rw-r--r-- | drivers/scsi/ahci.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/libata-core.c | 24 | ||||
| -rw-r--r-- | drivers/scsi/libata-eh.c | 50 | ||||
| -rw-r--r-- | drivers/scsi/libata-scsi.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/sata_sil.c | 2 | ||||
| -rw-r--r-- | include/linux/libata.h | 30 |
6 files changed, 58 insertions, 52 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 15f6cd4279b7..7447ba0374e8 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c | |||
| @@ -1052,7 +1052,7 @@ static void ahci_thaw(struct ata_port *ap) | |||
| 1052 | 1052 | ||
| 1053 | static void ahci_error_handler(struct ata_port *ap) | 1053 | static void ahci_error_handler(struct ata_port *ap) |
| 1054 | { | 1054 | { |
| 1055 | if (!(ap->flags & ATA_FLAG_FROZEN)) { | 1055 | if (!(ap->pflags & ATA_PFLAG_FROZEN)) { |
| 1056 | /* restart engine */ | 1056 | /* restart engine */ |
| 1057 | ahci_stop_engine(ap); | 1057 | ahci_stop_engine(ap); |
| 1058 | ahci_start_engine(ap); | 1058 | ahci_start_engine(ap); |
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index fd0e6cc0619f..ccab1d7ceada 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
| @@ -907,7 +907,7 @@ void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *), void *data, | |||
| 907 | { | 907 | { |
| 908 | int rc; | 908 | int rc; |
| 909 | 909 | ||
| 910 | if (ap->flags & ATA_FLAG_FLUSH_PORT_TASK) | 910 | if (ap->pflags & ATA_PFLAG_FLUSH_PORT_TASK) |
| 911 | return; | 911 | return; |
| 912 | 912 | ||
| 913 | PREPARE_WORK(&ap->port_task, fn, data); | 913 | PREPARE_WORK(&ap->port_task, fn, data); |
| @@ -938,7 +938,7 @@ void ata_port_flush_task(struct ata_port *ap) | |||
| 938 | DPRINTK("ENTER\n"); | 938 | DPRINTK("ENTER\n"); |
| 939 | 939 | ||
| 940 | spin_lock_irqsave(ap->lock, flags); | 940 | spin_lock_irqsave(ap->lock, flags); |
| 941 | ap->flags |= ATA_FLAG_FLUSH_PORT_TASK; | 941 | ap->pflags |= ATA_PFLAG_FLUSH_PORT_TASK; |
| 942 | spin_unlock_irqrestore(ap->lock, flags); | 942 | spin_unlock_irqrestore(ap->lock, flags); |
| 943 | 943 | ||
| 944 | DPRINTK("flush #1\n"); | 944 | DPRINTK("flush #1\n"); |
| @@ -957,7 +957,7 @@ void ata_port_flush_task(struct ata_port *ap) | |||
| 957 | } | 957 | } |
| 958 | 958 | ||
| 959 | spin_lock_irqsave(ap->lock, flags); | 959 | spin_lock_irqsave(ap->lock, flags); |
| 960 | ap->flags &= ~ATA_FLAG_FLUSH_PORT_TASK; | 960 | ap->pflags &= ~ATA_PFLAG_FLUSH_PORT_TASK; |
| 961 | spin_unlock_irqrestore(ap->lock, flags); | 961 | spin_unlock_irqrestore(ap->lock, flags); |
| 962 | 962 | ||
| 963 | if (ata_msg_ctl(ap)) | 963 | if (ata_msg_ctl(ap)) |
| @@ -1009,7 +1009,7 @@ unsigned ata_exec_internal(struct ata_device *dev, | |||
| 1009 | spin_lock_irqsave(ap->lock, flags); | 1009 | spin_lock_irqsave(ap->lock, flags); |
| 1010 | 1010 | ||
| 1011 | /* no internal command while frozen */ | 1011 | /* no internal command while frozen */ |
| 1012 | if (ap->flags & ATA_FLAG_FROZEN) { | 1012 | if (ap->pflags & ATA_PFLAG_FROZEN) { |
| 1013 | spin_unlock_irqrestore(ap->lock, flags); | 1013 | spin_unlock_irqrestore(ap->lock, flags); |
| 1014 | return AC_ERR_SYSTEM; | 1014 | return AC_ERR_SYSTEM; |
| 1015 | } | 1015 | } |
| @@ -2641,7 +2641,7 @@ int ata_std_prereset(struct ata_port *ap) | |||
| 2641 | 2641 | ||
| 2642 | /* if SATA, resume phy */ | 2642 | /* if SATA, resume phy */ |
| 2643 | if (ap->cbl == ATA_CBL_SATA) { | 2643 | if (ap->cbl == ATA_CBL_SATA) { |
| 2644 | if (ap->flags & ATA_FLAG_LOADING) | 2644 | if (ap->pflags & ATA_PFLAG_LOADING) |
| 2645 | timing = sata_deb_timing_boot; | 2645 | timing = sata_deb_timing_boot; |
| 2646 | else | 2646 | else |
| 2647 | timing = sata_deb_timing_eh; | 2647 | timing = sata_deb_timing_eh; |
| @@ -4294,7 +4294,7 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap) | |||
| 4294 | unsigned int i; | 4294 | unsigned int i; |
| 4295 | 4295 | ||
| 4296 | /* no command while frozen */ | 4296 | /* no command while frozen */ |
| 4297 | if (unlikely(ap->flags & ATA_FLAG_FROZEN)) | 4297 | if (unlikely(ap->pflags & ATA_PFLAG_FROZEN)) |
| 4298 | return NULL; | 4298 | return NULL; |
| 4299 | 4299 | ||
| 4300 | /* the last tag is reserved for internal command. */ | 4300 | /* the last tag is reserved for internal command. */ |
| @@ -4416,7 +4416,7 @@ void ata_qc_complete(struct ata_queued_cmd *qc) | |||
| 4416 | * taken care of. | 4416 | * taken care of. |
| 4417 | */ | 4417 | */ |
| 4418 | if (ap->ops->error_handler) { | 4418 | if (ap->ops->error_handler) { |
| 4419 | WARN_ON(ap->flags & ATA_FLAG_FROZEN); | 4419 | WARN_ON(ap->pflags & ATA_PFLAG_FROZEN); |
| 4420 | 4420 | ||
| 4421 | if (unlikely(qc->err_mask)) | 4421 | if (unlikely(qc->err_mask)) |
| 4422 | qc->flags |= ATA_QCFLAG_FAILED; | 4422 | qc->flags |= ATA_QCFLAG_FAILED; |
| @@ -5051,13 +5051,13 @@ int ata_device_resume(struct ata_device *dev) | |||
| 5051 | { | 5051 | { |
| 5052 | struct ata_port *ap = dev->ap; | 5052 | struct ata_port *ap = dev->ap; |
| 5053 | 5053 | ||
| 5054 | if (ap->flags & ATA_FLAG_SUSPENDED) { | 5054 | if (ap->pflags & ATA_PFLAG_SUSPENDED) { |
| 5055 | struct ata_device *failed_dev; | 5055 | struct ata_device *failed_dev; |
| 5056 | 5056 | ||
| 5057 | ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT); | 5057 | ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT); |
| 5058 | ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000); | 5058 | ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000); |
| 5059 | 5059 | ||
| 5060 | ap->flags &= ~ATA_FLAG_SUSPENDED; | 5060 | ap->pflags &= ~ATA_PFLAG_SUSPENDED; |
| 5061 | while (ata_set_mode(ap, &failed_dev)) | 5061 | while (ata_set_mode(ap, &failed_dev)) |
| 5062 | ata_dev_disable(failed_dev); | 5062 | ata_dev_disable(failed_dev); |
| 5063 | } | 5063 | } |
| @@ -5088,7 +5088,7 @@ int ata_device_suspend(struct ata_device *dev, pm_message_t state) | |||
| 5088 | 5088 | ||
| 5089 | if (state.event != PM_EVENT_FREEZE) | 5089 | if (state.event != PM_EVENT_FREEZE) |
| 5090 | ata_standby_drive(dev); | 5090 | ata_standby_drive(dev); |
| 5091 | ap->flags |= ATA_FLAG_SUSPENDED; | 5091 | ap->pflags |= ATA_PFLAG_SUSPENDED; |
| 5092 | return 0; | 5092 | return 0; |
| 5093 | } | 5093 | } |
| 5094 | 5094 | ||
| @@ -5459,7 +5459,7 @@ int ata_device_add(const struct ata_probe_ent *ent) | |||
| 5459 | ap->eh_info.probe_mask = (1 << ATA_MAX_DEVICES) - 1; | 5459 | ap->eh_info.probe_mask = (1 << ATA_MAX_DEVICES) - 1; |
| 5460 | ap->eh_info.action |= ATA_EH_SOFTRESET; | 5460 | ap->eh_info.action |= ATA_EH_SOFTRESET; |
| 5461 | 5461 | ||
| 5462 | ap->flags |= ATA_FLAG_LOADING; | 5462 | ap->pflags |= ATA_PFLAG_LOADING; |
| 5463 | ata_port_schedule_eh(ap); | 5463 | ata_port_schedule_eh(ap); |
| 5464 | 5464 | ||
| 5465 | spin_unlock_irqrestore(ap->lock, flags); | 5465 | spin_unlock_irqrestore(ap->lock, flags); |
| @@ -5527,7 +5527,7 @@ void ata_port_detach(struct ata_port *ap) | |||
| 5527 | 5527 | ||
| 5528 | /* tell EH we're leaving & flush EH */ | 5528 | /* tell EH we're leaving & flush EH */ |
| 5529 | spin_lock_irqsave(ap->lock, flags); | 5529 | spin_lock_irqsave(ap->lock, flags); |
| 5530 | ap->flags |= ATA_FLAG_UNLOADING; | 5530 | ap->pflags |= ATA_PFLAG_UNLOADING; |
| 5531 | spin_unlock_irqrestore(ap->lock, flags); | 5531 | spin_unlock_irqrestore(ap->lock, flags); |
| 5532 | 5532 | ||
| 5533 | ata_port_wait_eh(ap); | 5533 | ata_port_wait_eh(ap); |
diff --git a/drivers/scsi/libata-eh.c b/drivers/scsi/libata-eh.c index bf5a72aca8a4..f2f29a8bc38e 100644 --- a/drivers/scsi/libata-eh.c +++ b/drivers/scsi/libata-eh.c | |||
| @@ -270,13 +270,13 @@ void ata_scsi_error(struct Scsi_Host *host) | |||
| 270 | ap->eh_context.i = ap->eh_info; | 270 | ap->eh_context.i = ap->eh_info; |
| 271 | memset(&ap->eh_info, 0, sizeof(ap->eh_info)); | 271 | memset(&ap->eh_info, 0, sizeof(ap->eh_info)); |
| 272 | 272 | ||
| 273 | ap->flags |= ATA_FLAG_EH_IN_PROGRESS; | 273 | ap->pflags |= ATA_PFLAG_EH_IN_PROGRESS; |
| 274 | ap->flags &= ~ATA_FLAG_EH_PENDING; | 274 | ap->pflags &= ~ATA_PFLAG_EH_PENDING; |
| 275 | 275 | ||
| 276 | spin_unlock_irqrestore(ap_lock, flags); | 276 | spin_unlock_irqrestore(ap_lock, flags); |
| 277 | 277 | ||
| 278 | /* invoke EH. if unloading, just finish failed qcs */ | 278 | /* invoke EH. if unloading, just finish failed qcs */ |
| 279 | if (!(ap->flags & ATA_FLAG_UNLOADING)) | 279 | if (!(ap->pflags & ATA_PFLAG_UNLOADING)) |
| 280 | ap->ops->error_handler(ap); | 280 | ap->ops->error_handler(ap); |
| 281 | else | 281 | else |
| 282 | ata_eh_finish(ap); | 282 | ata_eh_finish(ap); |
| @@ -287,7 +287,7 @@ void ata_scsi_error(struct Scsi_Host *host) | |||
| 287 | */ | 287 | */ |
| 288 | spin_lock_irqsave(ap_lock, flags); | 288 | spin_lock_irqsave(ap_lock, flags); |
| 289 | 289 | ||
| 290 | if (ap->flags & ATA_FLAG_EH_PENDING) { | 290 | if (ap->pflags & ATA_PFLAG_EH_PENDING) { |
| 291 | if (--repeat_cnt) { | 291 | if (--repeat_cnt) { |
| 292 | ata_port_printk(ap, KERN_INFO, | 292 | ata_port_printk(ap, KERN_INFO, |
| 293 | "EH pending after completion, " | 293 | "EH pending after completion, " |
| @@ -323,19 +323,19 @@ void ata_scsi_error(struct Scsi_Host *host) | |||
| 323 | /* clean up */ | 323 | /* clean up */ |
| 324 | spin_lock_irqsave(ap_lock, flags); | 324 | spin_lock_irqsave(ap_lock, flags); |
| 325 | 325 | ||
| 326 | if (ap->flags & ATA_FLAG_LOADING) { | 326 | if (ap->pflags & ATA_PFLAG_LOADING) { |
| 327 | ap->flags &= ~ATA_FLAG_LOADING; | 327 | ap->pflags &= ~ATA_PFLAG_LOADING; |
| 328 | } else { | 328 | } else { |
| 329 | if (ap->flags & ATA_FLAG_SCSI_HOTPLUG) | 329 | if (ap->pflags & ATA_PFLAG_SCSI_HOTPLUG) |
| 330 | queue_work(ata_aux_wq, &ap->hotplug_task); | 330 | queue_work(ata_aux_wq, &ap->hotplug_task); |
| 331 | if (ap->flags & ATA_FLAG_RECOVERED) | 331 | if (ap->pflags & ATA_PFLAG_RECOVERED) |
| 332 | ata_port_printk(ap, KERN_INFO, "EH complete\n"); | 332 | ata_port_printk(ap, KERN_INFO, "EH complete\n"); |
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | ap->flags &= ~(ATA_FLAG_SCSI_HOTPLUG | ATA_FLAG_RECOVERED); | 335 | ap->pflags &= ~(ATA_PFLAG_SCSI_HOTPLUG | ATA_PFLAG_RECOVERED); |
| 336 | 336 | ||
| 337 | /* tell wait_eh that we're done */ | 337 | /* tell wait_eh that we're done */ |
| 338 | ap->flags &= ~ATA_FLAG_EH_IN_PROGRESS; | 338 | ap->pflags &= ~ATA_PFLAG_EH_IN_PROGRESS; |
| 339 | wake_up_all(&ap->eh_wait_q); | 339 | wake_up_all(&ap->eh_wait_q); |
| 340 | 340 | ||
| 341 | spin_unlock_irqrestore(ap_lock, flags); | 341 | spin_unlock_irqrestore(ap_lock, flags); |
| @@ -360,7 +360,7 @@ void ata_port_wait_eh(struct ata_port *ap) | |||
| 360 | retry: | 360 | retry: |
| 361 | spin_lock_irqsave(ap->lock, flags); | 361 | spin_lock_irqsave(ap->lock, flags); |
| 362 | 362 | ||
| 363 | while (ap->flags & (ATA_FLAG_EH_PENDING | ATA_FLAG_EH_IN_PROGRESS)) { | 363 | while (ap->pflags & (ATA_PFLAG_EH_PENDING | ATA_PFLAG_EH_IN_PROGRESS)) { |
| 364 | prepare_to_wait(&ap->eh_wait_q, &wait, TASK_UNINTERRUPTIBLE); | 364 | prepare_to_wait(&ap->eh_wait_q, &wait, TASK_UNINTERRUPTIBLE); |
| 365 | spin_unlock_irqrestore(ap->lock, flags); | 365 | spin_unlock_irqrestore(ap->lock, flags); |
| 366 | schedule(); | 366 | schedule(); |
| @@ -489,7 +489,7 @@ void ata_qc_schedule_eh(struct ata_queued_cmd *qc) | |||
| 489 | WARN_ON(!ap->ops->error_handler); | 489 | WARN_ON(!ap->ops->error_handler); |
| 490 | 490 | ||
| 491 | qc->flags |= ATA_QCFLAG_FAILED; | 491 | qc->flags |= ATA_QCFLAG_FAILED; |
| 492 | qc->ap->flags |= ATA_FLAG_EH_PENDING; | 492 | qc->ap->pflags |= ATA_PFLAG_EH_PENDING; |
| 493 | 493 | ||
| 494 | /* The following will fail if timeout has already expired. | 494 | /* The following will fail if timeout has already expired. |
| 495 | * ata_scsi_error() takes care of such scmds on EH entry. | 495 | * ata_scsi_error() takes care of such scmds on EH entry. |
| @@ -513,7 +513,7 @@ void ata_port_schedule_eh(struct ata_port *ap) | |||
| 513 | { | 513 | { |
| 514 | WARN_ON(!ap->ops->error_handler); | 514 | WARN_ON(!ap->ops->error_handler); |
| 515 | 515 | ||
| 516 | ap->flags |= ATA_FLAG_EH_PENDING; | 516 | ap->pflags |= ATA_PFLAG_EH_PENDING; |
| 517 | scsi_schedule_eh(ap->host); | 517 | scsi_schedule_eh(ap->host); |
| 518 | 518 | ||
| 519 | DPRINTK("port EH scheduled\n"); | 519 | DPRINTK("port EH scheduled\n"); |
| @@ -578,7 +578,7 @@ static void __ata_port_freeze(struct ata_port *ap) | |||
| 578 | if (ap->ops->freeze) | 578 | if (ap->ops->freeze) |
| 579 | ap->ops->freeze(ap); | 579 | ap->ops->freeze(ap); |
| 580 | 580 | ||
| 581 | ap->flags |= ATA_FLAG_FROZEN; | 581 | ap->pflags |= ATA_PFLAG_FROZEN; |
| 582 | 582 | ||
| 583 | DPRINTK("ata%u port frozen\n", ap->id); | 583 | DPRINTK("ata%u port frozen\n", ap->id); |
| 584 | } | 584 | } |
| @@ -646,7 +646,7 @@ void ata_eh_thaw_port(struct ata_port *ap) | |||
| 646 | 646 | ||
| 647 | spin_lock_irqsave(ap->lock, flags); | 647 | spin_lock_irqsave(ap->lock, flags); |
| 648 | 648 | ||
| 649 | ap->flags &= ~ATA_FLAG_FROZEN; | 649 | ap->pflags &= ~ATA_PFLAG_FROZEN; |
| 650 | 650 | ||
| 651 | if (ap->ops->thaw) | 651 | if (ap->ops->thaw) |
| 652 | ap->ops->thaw(ap); | 652 | ap->ops->thaw(ap); |
| @@ -731,7 +731,7 @@ static void ata_eh_detach_dev(struct ata_device *dev) | |||
| 731 | 731 | ||
| 732 | if (ata_scsi_offline_dev(dev)) { | 732 | if (ata_scsi_offline_dev(dev)) { |
| 733 | dev->flags |= ATA_DFLAG_DETACHED; | 733 | dev->flags |= ATA_DFLAG_DETACHED; |
| 734 | ap->flags |= ATA_FLAG_SCSI_HOTPLUG; | 734 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; |
| 735 | } | 735 | } |
| 736 | 736 | ||
| 737 | /* clear per-dev EH actions */ | 737 | /* clear per-dev EH actions */ |
| @@ -761,7 +761,7 @@ static void ata_eh_about_to_do(struct ata_port *ap, struct ata_device *dev, | |||
| 761 | 761 | ||
| 762 | spin_lock_irqsave(ap->lock, flags); | 762 | spin_lock_irqsave(ap->lock, flags); |
| 763 | ata_eh_clear_action(dev, &ap->eh_info, action); | 763 | ata_eh_clear_action(dev, &ap->eh_info, action); |
| 764 | ap->flags |= ATA_FLAG_RECOVERED; | 764 | ap->pflags |= ATA_PFLAG_RECOVERED; |
| 765 | spin_unlock_irqrestore(ap->lock, flags); | 765 | spin_unlock_irqrestore(ap->lock, flags); |
| 766 | } | 766 | } |
| 767 | 767 | ||
| @@ -1027,7 +1027,7 @@ static void ata_eh_analyze_ncq_error(struct ata_port *ap) | |||
| 1027 | int tag, rc; | 1027 | int tag, rc; |
| 1028 | 1028 | ||
| 1029 | /* if frozen, we can't do much */ | 1029 | /* if frozen, we can't do much */ |
| 1030 | if (ap->flags & ATA_FLAG_FROZEN) | 1030 | if (ap->pflags & ATA_PFLAG_FROZEN) |
| 1031 | return; | 1031 | return; |
| 1032 | 1032 | ||
| 1033 | /* is it NCQ device error? */ | 1033 | /* is it NCQ device error? */ |
| @@ -1327,7 +1327,7 @@ static void ata_eh_autopsy(struct ata_port *ap) | |||
| 1327 | } | 1327 | } |
| 1328 | 1328 | ||
| 1329 | /* enforce default EH actions */ | 1329 | /* enforce default EH actions */ |
| 1330 | if (ap->flags & ATA_FLAG_FROZEN || | 1330 | if (ap->pflags & ATA_PFLAG_FROZEN || |
| 1331 | all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT)) | 1331 | all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT)) |
| 1332 | action |= ATA_EH_SOFTRESET; | 1332 | action |= ATA_EH_SOFTRESET; |
| 1333 | else if (all_err_mask) | 1333 | else if (all_err_mask) |
| @@ -1385,7 +1385,7 @@ static void ata_eh_report(struct ata_port *ap) | |||
| 1385 | return; | 1385 | return; |
| 1386 | 1386 | ||
| 1387 | frozen = ""; | 1387 | frozen = ""; |
| 1388 | if (ap->flags & ATA_FLAG_FROZEN) | 1388 | if (ap->pflags & ATA_PFLAG_FROZEN) |
| 1389 | frozen = " frozen"; | 1389 | frozen = " frozen"; |
| 1390 | 1390 | ||
| 1391 | if (ehc->i.dev) { | 1391 | if (ehc->i.dev) { |
| @@ -1465,7 +1465,7 @@ static int ata_eh_reset(struct ata_port *ap, int classify, | |||
| 1465 | struct ata_eh_context *ehc = &ap->eh_context; | 1465 | struct ata_eh_context *ehc = &ap->eh_context; |
| 1466 | unsigned int *classes = ehc->classes; | 1466 | unsigned int *classes = ehc->classes; |
| 1467 | int tries = ATA_EH_RESET_TRIES; | 1467 | int tries = ATA_EH_RESET_TRIES; |
| 1468 | int verbose = !(ap->flags & ATA_FLAG_LOADING); | 1468 | int verbose = !(ap->pflags & ATA_PFLAG_LOADING); |
| 1469 | unsigned int action; | 1469 | unsigned int action; |
| 1470 | ata_reset_fn_t reset; | 1470 | ata_reset_fn_t reset; |
| 1471 | int i, did_followup_srst, rc; | 1471 | int i, did_followup_srst, rc; |
| @@ -1636,7 +1636,7 @@ static int ata_eh_revalidate_and_attach(struct ata_port *ap, | |||
| 1636 | } | 1636 | } |
| 1637 | 1637 | ||
| 1638 | spin_lock_irqsave(ap->lock, flags); | 1638 | spin_lock_irqsave(ap->lock, flags); |
| 1639 | ap->flags |= ATA_FLAG_SCSI_HOTPLUG; | 1639 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; |
| 1640 | spin_unlock_irqrestore(ap->lock, flags); | 1640 | spin_unlock_irqrestore(ap->lock, flags); |
| 1641 | } | 1641 | } |
| 1642 | } | 1642 | } |
| @@ -1673,7 +1673,7 @@ static int ata_eh_skip_recovery(struct ata_port *ap) | |||
| 1673 | struct ata_eh_context *ehc = &ap->eh_context; | 1673 | struct ata_eh_context *ehc = &ap->eh_context; |
| 1674 | int i; | 1674 | int i; |
| 1675 | 1675 | ||
| 1676 | if (ap->flags & ATA_FLAG_FROZEN || ata_port_nr_enabled(ap)) | 1676 | if (ap->pflags & ATA_PFLAG_FROZEN || ata_port_nr_enabled(ap)) |
| 1677 | return 0; | 1677 | return 0; |
| 1678 | 1678 | ||
| 1679 | /* skip if class codes for all vacant slots are ATA_DEV_NONE */ | 1679 | /* skip if class codes for all vacant slots are ATA_DEV_NONE */ |
| @@ -1744,7 +1744,7 @@ static int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
| 1744 | rc = 0; | 1744 | rc = 0; |
| 1745 | 1745 | ||
| 1746 | /* if UNLOADING, finish immediately */ | 1746 | /* if UNLOADING, finish immediately */ |
| 1747 | if (ap->flags & ATA_FLAG_UNLOADING) | 1747 | if (ap->pflags & ATA_PFLAG_UNLOADING) |
| 1748 | goto out; | 1748 | goto out; |
| 1749 | 1749 | ||
| 1750 | /* skip EH if possible. */ | 1750 | /* skip EH if possible. */ |
| @@ -1908,7 +1908,7 @@ void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
| 1908 | ata_reset_fn_t softreset, ata_reset_fn_t hardreset, | 1908 | ata_reset_fn_t softreset, ata_reset_fn_t hardreset, |
| 1909 | ata_postreset_fn_t postreset) | 1909 | ata_postreset_fn_t postreset) |
| 1910 | { | 1910 | { |
| 1911 | if (!(ap->flags & ATA_FLAG_LOADING)) { | 1911 | if (!(ap->pflags & ATA_PFLAG_LOADING)) { |
| 1912 | ata_eh_autopsy(ap); | 1912 | ata_eh_autopsy(ap); |
| 1913 | ata_eh_report(ap); | 1913 | ata_eh_report(ap); |
| 1914 | } | 1914 | } |
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index 2915bca691e8..153452e77264 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c | |||
| @@ -2930,7 +2930,7 @@ void ata_scsi_hotplug(void *data) | |||
| 2930 | struct ata_port *ap = data; | 2930 | struct ata_port *ap = data; |
| 2931 | int i; | 2931 | int i; |
| 2932 | 2932 | ||
| 2933 | if (ap->flags & ATA_FLAG_UNLOADING) { | 2933 | if (ap->pflags & ATA_PFLAG_UNLOADING) { |
| 2934 | DPRINTK("ENTER/EXIT - unloading\n"); | 2934 | DPRINTK("ENTER/EXIT - unloading\n"); |
| 2935 | return; | 2935 | return; |
| 2936 | } | 2936 | } |
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c index 7aabb45c35e5..70dbfb8a7d51 100644 --- a/drivers/scsi/sata_sil.c +++ b/drivers/scsi/sata_sil.c | |||
| @@ -370,7 +370,7 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2) | |||
| 370 | * during hardreset makes controllers with broken SIEN | 370 | * during hardreset makes controllers with broken SIEN |
| 371 | * repeat probing needlessly. | 371 | * repeat probing needlessly. |
| 372 | */ | 372 | */ |
| 373 | if (!(ap->flags & ATA_FLAG_FROZEN)) { | 373 | if (!(ap->pflags & ATA_PFLAG_FROZEN)) { |
| 374 | ata_ehi_hotplugged(&ap->eh_info); | 374 | ata_ehi_hotplugged(&ap->eh_info); |
| 375 | ap->eh_info.serror |= serror; | 375 | ap->eh_info.serror |= serror; |
| 376 | } | 376 | } |
diff --git a/include/linux/libata.h b/include/linux/libata.h index f4284bf89758..b5d247d780f8 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -160,22 +160,27 @@ enum { | |||
| 160 | ATA_FLAG_HRST_TO_RESUME = (1 << 11), /* hardreset to resume phy */ | 160 | ATA_FLAG_HRST_TO_RESUME = (1 << 11), /* hardreset to resume phy */ |
| 161 | ATA_FLAG_SKIP_D2H_BSY = (1 << 12), /* can't wait for the first D2H | 161 | ATA_FLAG_SKIP_D2H_BSY = (1 << 12), /* can't wait for the first D2H |
| 162 | * Register FIS clearing BSY */ | 162 | * Register FIS clearing BSY */ |
| 163 | |||
| 164 | ATA_FLAG_DEBUGMSG = (1 << 13), | 163 | ATA_FLAG_DEBUGMSG = (1 << 13), |
| 165 | ATA_FLAG_FLUSH_PORT_TASK = (1 << 14), /* flush port task */ | ||
| 166 | 164 | ||
| 167 | ATA_FLAG_EH_PENDING = (1 << 15), /* EH pending */ | 165 | /* The following flag belongs to ap->pflags but is kept in |
| 168 | ATA_FLAG_EH_IN_PROGRESS = (1 << 16), /* EH in progress */ | 166 | * ap->flags because it's referenced in many LLDs and will be |
| 169 | ATA_FLAG_FROZEN = (1 << 17), /* port is frozen */ | 167 | * removed in not-too-distant future. |
| 170 | ATA_FLAG_RECOVERED = (1 << 18), /* recovery action performed */ | 168 | */ |
| 171 | ATA_FLAG_LOADING = (1 << 19), /* boot/loading probe */ | 169 | ATA_FLAG_DISABLED = (1 << 23), /* port is disabled, ignore it */ |
| 172 | ATA_FLAG_UNLOADING = (1 << 20), /* module is unloading */ | 170 | |
| 173 | ATA_FLAG_SCSI_HOTPLUG = (1 << 21), /* SCSI hotplug scheduled */ | 171 | /* bits 24:31 of ap->flags are reserved for LLD specific flags */ |
| 174 | 172 | ||
| 175 | ATA_FLAG_DISABLED = (1 << 22), /* port is disabled, ignore it */ | 173 | /* struct ata_port pflags */ |
| 176 | ATA_FLAG_SUSPENDED = (1 << 23), /* port is suspended (power) */ | 174 | ATA_PFLAG_EH_PENDING = (1 << 0), /* EH pending */ |
| 175 | ATA_PFLAG_EH_IN_PROGRESS = (1 << 1), /* EH in progress */ | ||
| 176 | ATA_PFLAG_FROZEN = (1 << 2), /* port is frozen */ | ||
| 177 | ATA_PFLAG_RECOVERED = (1 << 3), /* recovery action performed */ | ||
| 178 | ATA_PFLAG_LOADING = (1 << 4), /* boot/loading probe */ | ||
| 179 | ATA_PFLAG_UNLOADING = (1 << 5), /* module is unloading */ | ||
| 180 | ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), /* SCSI hotplug scheduled */ | ||
| 177 | 181 | ||
| 178 | /* bits 24:31 of ap->flags are reserved for LLDD specific flags */ | 182 | ATA_PFLAG_FLUSH_PORT_TASK = (1 << 16), /* flush port task */ |
| 183 | ATA_PFLAG_SUSPENDED = (1 << 17), /* port is suspended (power) */ | ||
| 179 | 184 | ||
| 180 | /* struct ata_queued_cmd flags */ | 185 | /* struct ata_queued_cmd flags */ |
| 181 | ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */ | 186 | ATA_QCFLAG_ACTIVE = (1 << 0), /* cmd not yet ack'd to scsi lyer */ |
| @@ -486,6 +491,7 @@ struct ata_port { | |||
| 486 | const struct ata_port_operations *ops; | 491 | const struct ata_port_operations *ops; |
| 487 | spinlock_t *lock; | 492 | spinlock_t *lock; |
| 488 | unsigned long flags; /* ATA_FLAG_xxx */ | 493 | unsigned long flags; /* ATA_FLAG_xxx */ |
| 494 | unsigned int pflags; /* ATA_PFLAG_xxx */ | ||
| 489 | unsigned int id; /* unique id req'd by scsi midlyr */ | 495 | unsigned int id; /* unique id req'd by scsi midlyr */ |
| 490 | unsigned int port_no; /* unique port #; from zero */ | 496 | unsigned int port_no; /* unique port #; from zero */ |
| 491 | unsigned int hard_port_no; /* hardware port #; from zero */ | 497 | unsigned int hard_port_no; /* hardware port #; from zero */ |
