Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758555AbYF3Gzh (ORCPT ); Mon, 30 Jun 2008 02:55:37 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753289AbYF3Gz2 (ORCPT ); Mon, 30 Jun 2008 02:55:28 -0400 Received: from brick.kernel.dk ([87.55.233.238]:6958 "EHLO kernel.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753107AbYF3Gz1 (ORCPT ); Mon, 30 Jun 2008 02:55:27 -0400 Date: Mon, 30 Jun 2008 08:55:25 +0200 From: Jens Axboe To: Erez Zilber Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: Should a block device enforce block atomicity? Message-ID: <20080630065525.GI20826@kernel.dk> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1259 Lines: 29 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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/