From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff Moyer Subject: Re: [RFC PATCH 0/7] Non-blockling buffered fs read (page cache only) Date: Mon, 15 Sep 2014 17:58:44 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, Mel Gorman , Volker Lendecke , Tejun Heo , michael.kerrisk@gmail.com To: Milosz Tanski Return-path: In-Reply-To: (Milosz Tanski's message of "Mon, 15 Sep 2014 16:20:01 -0400") Sender: owner-linux-aio@kvack.org List-Id: linux-fsdevel.vger.kernel.org Hi, Milosz, I CC'd Michael Kerrisk, in case he has any opinions on the matter. Milosz Tanski writes: > This patcheset introduces an ability to perform a non-blocking read from > regular files in buffered IO mode. This works by only for those filesystems > that have data in the page cache. > > It does this by introducing new syscalls new syscalls readv2/writev2 and > preadv2/pwritev2. These new syscalls behave like the network sendmsg, recvmsg > syscalls that accept an extra flag argument (O_NONBLOCK). I thought you were going to introduce a new flag instead of using O_NONBLOCK for this. I dug up an old email that suggested that enabling O_NONBLOCK for regular files (well, a device node in this case) broke a cd ripping or burning application. I also found this old bugzilla, which states that squid would fail to start, and that gqview was also broken: https://bugzilla.redhat.com/show_bug.cgi?id=136057 More generally, do you expect the open(2) of a regular file with O_NONBLOCK to perform the same way as a pipe, fifo, or device (namely, that the open itself won't block)? Should O_NONBLOCK affect writes to regular files? What do you think the return value from poll and friends should be when a file is opened in this manner (probably not important, as poll always returns data ready on regular files)? Also consider whether you want the O_NONBLOCK behaviour for mandatory file locks in your use case (or any other, for that matter). If you issue a read and it returns -EAGAIN, should it be up to the application to kick off I/O to ensure it makes progress? I don't think O_NONBLOCK is the right flag. What you're really specifying is a flag that prevents I/O in the read path, and nowhere else. As such, I'd feel much better about this if we defined a new flag (O_NONBLOCK_READ maybe? No, that's too verbose.). In summary, I like the idea, but I worry about overloading O_NONBLOCK. Cheers, Jeff -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: aart@kvack.org