Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f066887 authored by Jeff Garzik's avatar Jeff Garzik
Browse files

Merge branch 'upstream-fixes' into upstream

parents f4b5cc87 22aac089
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -567,8 +567,8 @@ static int piix_sata_prereset(struct ata_port *ap)
			present = 1;
			present = 1;
	}
	}


	DPRINTK("ata%u: LEAVE, pcs=0x%x present_mask=0x%x\n",
	DPRINTK("ata%u: LEAVE, pcs=0x%x present=0x%x\n",
		ap->id, pcs, present_mask);
		ap->id, pcs, present);


	if (!present) {
	if (!present) {
		ata_port_printk(ap, KERN_INFO, "SATA port has no device.\n");
		ata_port_printk(ap, KERN_INFO, "SATA port has no device.\n");
+13 −0
Original line number Original line Diff line number Diff line
@@ -2353,6 +2353,19 @@ static void atapi_qc_complete(struct ata_queued_cmd *qc)
			ata_gen_ata_desc_sense(qc);
			ata_gen_ata_desc_sense(qc);
		}
		}


		/* SCSI EH automatically locks door if sdev->locked is
		 * set.  Sometimes door lock request continues to
		 * fail, for example, when no media is present.  This
		 * creates a loop - SCSI EH issues door lock which
		 * fails and gets invoked again to acquire sense data
		 * for the failed command.
		 *
		 * If door lock fails, always clear sdev->locked to
		 * avoid this infinite loop.
		 */
		if (qc->cdb[0] == ALLOW_MEDIUM_REMOVAL)
			qc->dev->sdev->locked = 0;

		qc->scsicmd->result = SAM_STAT_CHECK_CONDITION;
		qc->scsicmd->result = SAM_STAT_CHECK_CONDITION;
		qc->scsidone(cmd);
		qc->scsidone(cmd);
		ata_qc_free(qc);
		ata_qc_free(qc);