Revision 1: -mm1 Revision 2: If there are leftovers __end_that_request_first will call blk_recalc_rq_sector to set req->hard_nr_sectors correctly. For failfast, by subtracting bytes from the updated req->hard_nr_sectors and then calling end_that_request_chunk and end_that_request_last, you can end up with a bio that never gets completed. The attached patch built against 2.6.4 does not subtract bytes for non-blk_pc_requests. On a related note I was wondering if the following is a bug or feature. At the bottom of scsi_io_completion, it calls scsi_end_request on the bytes for the current buffer. The comments indicate this is to handle improperly reported medium errors, but commands scsi_decide_disposition determined should not be retried end up getting requeued minus the current buffer. [Mike Christie] Revision 3: Fix 64/32 bit ioctl problems. Revision 4: dm-ioctl.h: Missing definition for DM_LIST_VERSIONS_32. Revision 5: Check the uptodate flag in sub-bios to see if there was an error. [Mike Christie] Revision 6: Handle interrupts within suspend. Revision 7: dm.c: Use waitqueue_active() to save a couple of cycles. I couldn't think of a reason why event_callback() was using wake_up_interruptible() rather than plain old wake_up(), so changed it. Revision 8: VFS lock patch. [Chris Mason] Revision 9: Lock the filesystem while a device is suspended. [Kevin Corry, Joe Thornber] Revision 10: Multipath target Revision 11: dm-mpath.c: Remove blk_run_queues() after resubmitting failed ios. Revision 12: dm-io Revision 13: dm-io: stop using page->list Revision 14: dm-io.c: Add io routines to perform io on a vm area. Revision 15: dm-io.c: Get rid of global queues unplug. [Jens Axboe] Revision 16: dm-io.c: Add EXPORT_SYMBOL for dm_io_async_vm() and dm_io_sync_vm(). [Kevin Corry] Revision 17: kcopyd Revision 18: kcopyd: stop using page->list Revision 19: kcopyd.c: Remove blk_run_queues(). [Jens Axboe] Revision 20: kcopyd.c: kcopyd_put_pages() does not walk the entire list of specified pages (it stops at the second-to-last one). Thus, the nr_free_pages value is off by one. Fix this by incrementing nr_free_pages once more after the loop completes. [Kevin Corry] Revision 21: Snapshot target Revision 22: dm-exception-store.c: Use these routines. Revision 23: dm-snap.c: Remove blk_run_queues() from flush_bios(). (Not sure about this). Revision 24: Mirror target Revision 25: dm-log.c: Switch from using dm_io_sync() to dm_io_sync_vm(). Revision 26: dm-raid1.c: Remove blk_run_queues(). Revision 27: Flakey target Revision 28: dm-zero Revision 29: Log an error if the target has unknown target type, or zero length.