Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1298392imm; Fri, 27 Jul 2018 14:52:44 -0700 (PDT) X-Google-Smtp-Source: AAOMgpe7LHlEziQ726/ZA163If8ttuwy/qik8Q8x7ZPLCyg0hp5ENiWPvhGNgnJZjdu93d74Yfde X-Received: by 2002:a17:902:b902:: with SMTP id bf2-v6mr7366734plb.160.1532728364671; Fri, 27 Jul 2018 14:52:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532728364; cv=none; d=google.com; s=arc-20160816; b=z3QBcAFJXseqxr2v+KRaQngLdNNKZx4WB0e4y4tl32QilZu3kFTMO9sBkZr5P+WYJ8 9lZfRWRTIliDROmx7be+M8LAxvFFb2doFVdr7bKfamBzOf9P/4CILDykbzRlrlcNuvLy 8X555E+uHSZNMQ+pf7maUskZZ28EqkaYVO83F1CVLOoFIx6HTJ/9kaXiwQ5uzchqyVva 9RE0jOPVgyq3njh2AFYlFv2Q9SSUWb0IKqEIzZu3mfd7QOrTjE0n9KMDw1Uktm3Sixaw Rd2kpepefC7XLIofHeKYzL4TF8fzvq5RjWeGZ/D2kIMw3uvmuIsrPqTVS76kbnTqInbd RVIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:content-transfer-encoding :content-id:mime-version:subject:cc:to:references:in-reply-to:from :organization:arc-authentication-results; bh=lCdx9tIfSydlA7u7E33jVPfIpPhAyTAQ1yNN0lYTY7E=; b=pYIRjGx9nC89B4IXG1spat8gKO39OvRYb1YFidKC5jO54+3Ob0uM/UWTA3tzdie3kd 12jp1xgXNQ/szzVUXc3VkBh+flZvE9WS+DMEqaZXMLbMe5FC/hAtARGyQgGx8kpATcd9 dJEXVlRHWX6ENA/r0MHwWy4XjqzLwZJIC0Bt/pmRyS1VW3QGZo/fUOqkw9Y0TfsfLKSr ZOB37n9r0F643G1UbH7+s6TKDtpEb6JOxJbkQqagIYGtIKluBoETFipEeh+etkR3+IRy fr79l2wKsAI3iFeDU4sC5KjT4fP/lCvLAWTANiSbmBMZRWuMhlujoY5Fju49wmrFTIYx YCtQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a11-v6si4160231plp.108.2018.07.27.14.52.30; Fri, 27 Jul 2018 14:52:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389869AbeG0XPc convert rfc822-to-8bit (ORCPT + 99 others); Fri, 27 Jul 2018 19:15:32 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:35534 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389804AbeG0XPb (ORCPT ); Fri, 27 Jul 2018 19:15:31 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2FFA77DAC3; Fri, 27 Jul 2018 21:51:42 +0000 (UTC) Received: from warthog.procyon.org.uk (ovpn-120-116.rdu2.redhat.com [10.10.120.116]) by smtp.corp.redhat.com (Postfix) with ESMTP id 333FA111AF20; Fri, 27 Jul 2018 21:51:41 +0000 (UTC) Organization: Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 From: David Howells In-Reply-To: References: <153271267980.9458.7640156373438016898.stgit@warthog.procyon.org.uk> <153271287586.9458.6001928723332685410.stgit@warthog.procyon.org.uk> To: Andy Lutomirski Cc: dhowells@redhat.com, Al Viro , Linux API , Linus Torvalds , Linux FS Devel , LKML Subject: Re: [PATCH 29/38] vfs: syscall: Add fsconfig() for configuring and managing a context [ver #10] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <7033.1532728300.1@warthog.procyon.org.uk> Content-Transfer-Encoding: 8BIT Date: Fri, 27 Jul 2018 22:51:40 +0100 Message-ID: <7034.1532728300@warthog.procyon.org.uk> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Fri, 27 Jul 2018 21:51:42 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Fri, 27 Jul 2018 21:51:42 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'dhowells@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Andy Lutomirski wrote: > Unless I'm rather confused, you have two or possibly three ways to > pass in an open fd. Can you clarify what the difference is and/or > remove all but one of them? No, they're not equivalent. > > (*) fsconfig_set_path: A non-empty path is specified. The parameter must > > be expecting a path object. value points to a NUL-terminated string > > that is the path and aux is a file descriptor at which to start a > > relative lookup or AT_FDCWD. So, an example: fsconfig(fd, fsconfig_set_path, "source", "/dev/sda1", AT_FDCWD); I don't want to require that the caller open /dev/sda1 and pass in an fd as that might prevent the filesystem from "holding" it exclusively. > > (*) fsconfig_set_path_empty: As fsconfig_set_path, but with AT_EMPTY_PATH > > implied. You can't do: fsconfig(fd, fsconfig_set_path, "source", "", dir_fd); because AT_EMPTY_PATH cannot be specified directly[*]. What you do instead is: fsconfig(fd, fsconfig_set_path_empty, "source", "", dir_fd); [*] Not without a 6-arg syscall or some other way of passing it. I *could* require that the caller must call open(O_PATH) or openat(O_PATH) before calling fsconfig() - so you don't pass a string, but only a path-fd. > > (*) fsconfig_set_fd: An open file descriptor is specified. value must > > be NULL and aux indicates the file descriptor. See fd=%u on fuse. I think it's cleaner to do: fsconfig(fd, fsconfig_set_fd, "source", NULL, control_fd); saying explicitly that there's an open file to be passed rather than: fsconfig(fd, fsconfig_set_path, "source", NULL, control_fd); which indicates that you are actually providing a path. David