anchor.diff:        (return-from ata-read nil))
       (when (eql count 0)
         (return-from ata-read t))
  -    (with-mutex ((ata-controller-use-lock controller))
  +    (with-mutex ((ata-controller-command-lock controller))
         (with-mutex ((ata-controller-access-lock controller))
           (when (not (ata-issue-lba28-command device lba count +ata-command-read-sectors+))
             (return-from ata-read nil))
  
positive.code: 
  (defun ata-irq-handler (irq)
    (dolist (drive *ata-devices*)
      (when (eql (ata-controller-irq (ata-device-controller drive)) irq)
        (with-mutex ((ata-controller-access-lock controller))
          ;; Read the status register to clear the interrupt pending state.
          (sys.int::io-port/8 (+ (ata-controller-command (ata-device-controller drive))
                                 +ata-register-status+))
          (condition-notify (ata-controller-irq-cvar controller))))))
  
  (defun init-ata-controller (command-base control-base irq)
    (let ((controller (make-ata-controller :command command-base
  
negative.code:   (declare (ignore timeout))
    ;; FIXME: Timeouts.
    (let ((controller (ata-device-controller device)))
      (setf (ata-controller-irq-delivered controller) nil)
      (loop
         (condition-wait (ata-controller-irq-cvar controller)
                         (ata-controller-access-lock controller))
         (when (ata-controller-irq-delivered controller)
           (return)))))
  
  (defun ata-pio-data-in (device count mem-addr)
    "Implement the PIO data-in protocol."
  