From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ric Wheeler Subject: Re: [Lsf] Preliminary Agenda and Activities for LSF Date: Wed, 30 Mar 2011 07:28:34 -0400 Message-ID: <4D9313E2.6080006@gmail.com> References: <1301373398.2590.20.camel@mulgrave.site> <4D91BF90.8070909@redhat.com> <1301445210.2731.14.camel@mingming-laptop> <20110330021742.GL3008@dastard> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Dave Chinner , lsf@lists.linux-foundation.org, "linux-scsi@vger.kernel.org" , James Bottomley , device-mapper development , linux-fsdevel , Ric Wheeler To: Theodore Tso Return-path: Received: from mail-ww0-f44.google.com ([74.125.82.44]:53854 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755820Ab1C3L2l (ORCPT ); Wed, 30 Mar 2011 07:28:41 -0400 In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On 03/30/2011 07:13 AM, Theodore Tso wrote: > On Mar 29, 2011, at 10:17 PM, Dave Chinner wrote: > >> Direct IO semantics have always been that the application is allowed >> to overlap IO to the same range if it wants to. The result is >> undefined (just like issuing overlapping reads and writes to a disk >> at the same time) so it's the application's responsibility to avoid >> overlapping IO if it is a problem. > Even if the overlapping read/writes are taking place in different processes? > > DIO has never been standardized, and was originally implemented as gentleman's agreements between various database manufacturers and proprietary unix vendors. The lack of formal specifications of what applications are guaranteed to receive is unfortunate.... > > -- Ted What possible semantics could you have? If you ever write concurrently from multiple processes without locking, you clearly are at the mercy of the scheduler and the underlying storage which could fragment a single write into multiple IO's sent to the backend device. I would agree with Dave, let's not make it overly complicated or try to give people "atomic" unbounded size writes just because they set the O_DIRECT flag :) Ric