On Mon, Jun 30 2008, Erez Zilber wrote: > Hi, > > I have a question about block devices and whether they are required to > enforce block atomicity: > > I read the code of drivers/block/brd.c, and I didn't see any locking > when blocks are read/written. I also looked at the block layer code > that calls brd and didn't find any locking there. Does it mean that > there's no block atomicity (i.e. multiple threads can write a single > block at the same time)? Is there any hidden assumption here? Is this > the responsibility of the application to do that (e.g. not start a > WRITE request before other READ/WRITE requests to the same block were > completed)? The block layer doesn't give such guarentees, not for "regular" block devices either. If the IO goes through the page cache then that will serialize IO to a given page, but with eg O_DIRECT IO, you could have the same block in flight several times. So if you are doing raw IO, the application has to ensure ordering of the same block. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html