Hi, On Thu, Apr 25, 2013 at 6:30 PM, Prashant Shah <pshah.mumbai@xxxxxxxxx> wrote: > Hi, > > On Tue, Apr 9, 2013 at 8:16 PM, Dmitry Monakhov <dmonakhov@xxxxxxxxxx> wrote: >> >> you should not block bio/requests handling, but simply deffer original >> bio. Some things like that: >> >> OUR_MAIN_ENTERING_POINT { >> if (bio->bi_rw == WRITE) { >> if (cow_required(bio)) >> cow_bio = create_cow_copy(bio) >> submit_bio(cow_bio); >> } >> /* Cow is not required */ >> submit_bio(bio); >> } > >> This approach gives us reasonable performance ~3 times slower than disk >> throughput. >> For a reference implementation you may look at driver/dm/dm-snap or to >> Acronis snapapi module (AFAIR it is opensource) >> } Is this scenario possible ? If a write bio (bio1) for a particular sector is under cow and waiting for the read of the original block to complete. At the same time there is another write bio (bio2) for the same sector. The original order is bio1 then bio2. Now since bio1 is delayed due to cow and the new order becomes bio2 followed by bio1 that goes in the queue. This will cause the final on-disk write to be bio1. Regards. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html