From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753199AbbC3HgK (ORCPT ); Mon, 30 Mar 2015 03:36:10 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:47114 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753106AbbC3HgG (ORCPT ); Mon, 30 Mar 2015 03:36:06 -0400 Date: Mon, 30 Mar 2015 00:36:04 -0700 From: Christoph Hellwig To: Jeremy Allison Cc: Andrew Morton , Christoph Hellwig , Milosz Tanski , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, Mel Gorman , Volker Lendecke , Tejun Heo , Jeff Moyer , "Theodore Ts'o" , Al Viro , linux-api@vger.kernel.org, Michael Kerrisk , linux-arch@vger.kernel.org, Dave Chinner Subject: Re: [PATCH v7 0/5] vfs: Non-blockling buffered fs read (page cache only) Message-ID: <20150330073604.GB22229@infradead.org> References: <20150326202824.65d03787.akpm@linux-foundation.org> <20150327081822.GA28669@infradead.org> <20150327013516.8c6788be.akpm@linux-foundation.org> <20150327084833.GA7689@infradead.org> <20150327020159.eadd0ce1.akpm@linux-foundation.org> <20150327155854.GA5548@samba2> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150327155854.GA5548@samba2> User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 27, 2015 at 08:58:54AM -0700, Jeremy Allison wrote: > The problem with the above is that we can't tell the difference > between pread2() returning a short read because the pages are not > in cache, or because someone truncated the file. So we need some > way to differentiate this. Is a race vs truncate really that time critical that you can't wait for the thread pool to do the second read to notice it? > My preference from userspace would be for pread2() to return > EAGAIN if *all* the data requested is not available (where > 'all' can be less than the size requested if the file has > been truncated in the meantime). That is easily implementable, but I can see that for example web apps would be happy to get as much as possible. So if Samba can be ok with short reads and only detecting the truncated case in the slow path that would make life simpler. Otherwise we might indeed need two flags.