Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936030AbcKKInR (ORCPT ); Fri, 11 Nov 2016 03:43:17 -0500 Received: from mail-lf0-f54.google.com ([209.85.215.54]:33926 "EHLO mail-lf0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755792AbcKKInP (ORCPT ); Fri, 11 Nov 2016 03:43:15 -0500 MIME-Version: 1.0 In-Reply-To: <87mvh6likl.fsf@vostro.rath.org> References: <87lgwrufuk.fsf@thinkpad.rath.org> <87mvh6likl.fsf@vostro.rath.org> From: Miklos Szeredi Date: Fri, 11 Nov 2016 09:43:12 +0100 Message-ID: Subject: Re: commit d7afaec0b564f0609e116f5: fuse: add FUSE_NO_OPEN_SUPPORT flag to INIT To: Nikolaus Rath Cc: Andrew Gallagher , lkml , linux-fsdevel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1530 Lines: 35 On Fri, Nov 11, 2016 at 5:57 AM, Nikolaus Rath wrote: > On Nov 11 2016, Miklos Szeredi wrote: >> On Thu, Nov 10, 2016 at 11:31 PM, Nikolaus Rath wrote: >>> Hi Andrew, >>> >>> In commit d7afaec0b564f0609e116f5 you added a new FUSE_NO_OPEN_SUPPORT >>> flag. But as far as I can tell, the flag is simply accepted without >>> having any effect (including in libfuse). >>> >>> I tried to find related later commits, but did not find anything either. >>> >>> Am I missing something? >> >> Hmm, if fuse fs detects this flag, then it can return ENOSYS from open >> resulting in this and subsequent opens succeeding without further >> calls to userspace. If fuse fs doesn't detect this flag, it should >> not return -ENOSYS, as that will result in the open failing, it should >> instead implement a no-op open method. > > That doesn't sound like a good approach to me. That way, the file system > has to *know* that this flag has been introduced in order to behave > correctly, i.e. filesystems that predate the introduction of the flag > will suddenly behave differently. > > I think the correct behavior would be to for the kernel to check if > userspace passed the flag, and treat ENOSYS specially if and only if the > flag was passed. ENOSYS is not a valid return value for any existing syscall. Fuse uses that fact to attach this special meaning to ENOSYS. So compatibility is not an issue here, old filesystems should never return ENOSYS from open. Thanks, Miklos