--- src/sys/dev/disk/nata/ata-queue.c 2007/06/01 00:31:15 1.5 +++ src/sys/dev/disk/nata/ata-queue.c 2007/06/03 11:52:09 1.6 @@ -77,6 +77,8 @@ ata_queue_request(struct ata_request *re spin_unlock_wr(&ch->state_mtx); return; } + /* interlock against interrupt */ + request->flags |= ATA_R_HWCMDQUEUED; spin_unlock_wr(&ch->state_mtx); } /* otherwise put request on the locked queue at the specified location */ @@ -218,6 +220,10 @@ ata_start(device_t dev) ata_finish(request); return; } + + /* interlock against interrupt */ + request->flags |= ATA_R_HWCMDQUEUED; + if (dumping) { spin_unlock_wr(&ch->state_mtx); spin_unlock_wr(&ch->queue_mtx);