Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp4737592rdh; Wed, 29 Nov 2023 09:14:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IFrwb5nhvVCeLdzcp/o36GfuHLN969ALY1j4POK1q+DsOuagS54hb3lThaISthFa0314atd X-Received: by 2002:a17:903:1ce:b0:1cf:c518:fa39 with SMTP id e14-20020a17090301ce00b001cfc518fa39mr12128106plh.19.1701278091474; Wed, 29 Nov 2023 09:14:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701278091; cv=none; d=google.com; s=arc-20160816; b=O/9ZLQa9Yy8PJ2v65bI8UUFu5enBO7UAOaKZfmL0vPA+BLIDajbtuV8dVBCkxbVsUB Q74TxfDOBm5ywCLgwZEKPlNw7LqfWOfE0udVEaI7keVDynoUsgXzHarJSZ0i/zajAwjg XrYOqqtz1pTKOq2k6Yk9wpFSx8F/6r4Wsoyt21Cr9GorfzgvPkz+K8ca1nNS+jSkr7lH gPjDaJ4GcyTK3cOaJOE+sXF99d6lhJDZe9ahzebht+WxLRjXWVCR+cuNSvqythdlZLCR al6L0UkMxChHTOWGSYDoGiH0AHmtWsawqrgXJSSjaiqWDY8GALcA3HSdCEuUixTJ0tFS uPuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=MVsHkDnPJv0j8Tyw7llEjBSU+xBdT2jqqtQEJ/0zHok=; fh=l78IYpgsbPtXz38gCSKFR1gisWWOQ7q1aZZGc/DYCwY=; b=Sr6l9z5r5NTh21qYwgQqfyLEB9M1QIL1EFIDswvFZ8ROzFIli0n6B0beUL+ySnt6oc Ig08fnQK21NDPBorOpflIGVRpdKLd3/QVOuKBevM9KadIHaT49VrkJ2NNqh8laUkh+cZ cxtXBHi+qJAD+oVBu8nwmPQHpcpS20DwvXXi8XcybZpKfHw7irgniDnoysY/nzhaBTfk uhle+J4iK2kbvuUX7BF82md9IpbOQ0bTep7VyGwptnECv2o2epuDSsfdXdbCAznVzwCj VtWtSJvlisDJlLdlJm8RMTew+CAeM4gUzhizSNskuZ7brDeKlSlVcORmNTM2Z22UuSZ2 oUOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=OtYewhT3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id a24-20020a1709027d9800b001d005beb114si3070857plm.193.2023.11.29.09.14.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Nov 2023 09:14:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=OtYewhT3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 6E02E8032C71; Wed, 29 Nov 2023 09:14:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230511AbjK2ROc (ORCPT + 99 others); Wed, 29 Nov 2023 12:14:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229501AbjK2ROb (ORCPT ); Wed, 29 Nov 2023 12:14:31 -0500 Received: from mail-oo1-xc30.google.com (mail-oo1-xc30.google.com [IPv6:2607:f8b0:4864:20::c30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B646DBE for ; Wed, 29 Nov 2023 09:14:36 -0800 (PST) Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-589d4033e84so20889eaf.1 for ; Wed, 29 Nov 2023 09:14:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701278076; x=1701882876; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=MVsHkDnPJv0j8Tyw7llEjBSU+xBdT2jqqtQEJ/0zHok=; b=OtYewhT3wmSbRL7ryhSGj0r15FYQ7Y7RS8yNJv7JnCy4UbHx0U7mQ1W7jo42tx/M2Y Ie28l5Km/fGm/OXKTp8I1lnDi/dR2KHFAS9SjNa3PO3eaMczQaaTNcZlxArvnQR5ARr0 3vAHzm98zbFAy1f+GzAeAcbIbkVvE8JUnRKm+9dlQG5sk7iFVKK2fjpod9ihR03+qKHG 1EzJ0YCnPlPl/4ktMeFqXBZAud3heEanQVCwXxYviq/7OMVwQ18LYXlE/Xd8ELI/MYVM DTnJmS1UQyrFlFcrXPPJiucu40+KtOKlvl9Dv9r/kwF4kUsIJNvAHlUG5ruPOlrnExgS BmWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701278076; x=1701882876; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MVsHkDnPJv0j8Tyw7llEjBSU+xBdT2jqqtQEJ/0zHok=; b=ZrQmdagTT3sip06xQUFhtRexhgKydWfpQ4RJaOP/Ro3Q6akM0OI5khAnyZWaYhzANa e6B1leVCJbmvoH4oUX9ekO5ICy3LAo1YkNduIhkPsN4IOygz6x5iwIfX2ONha/AnBzY1 R7fCjJok4XtyPJ184jmfhIZEeFplW9QVuvMQtgTFjpWt8D64T12fjzC/3r+8+PTLOnYy MurV/J/aJ9ht1TJPGcYTn9aLcsJb3zhPLsOgIZQSe5NQgsSohDXnUbEoKJSaReDhCvci ey5QtHvrq3d9qa09Y/eVMVGMdNZQXWZwvNTai0uFtO2ceRbtip7xlZwRMjyYKcwL89Cz eTig== X-Gm-Message-State: AOJu0Yy2AOggUfT7HnQykdsJS/HJ/qV5++iLcNPblUJcLKrOvi+gVy31 zHX6WEaSyaUxaC69Ou3g+LU/SpJVL6hdm4L+j3O6Zg== X-Received: by 2002:a05:6358:9998:b0:16b:fbd7:e34a with SMTP id j24-20020a056358999800b0016bfbd7e34amr20723935rwb.5.1701278075870; Wed, 29 Nov 2023 09:14:35 -0800 (PST) MIME-Version: 1.0 References: <20231129-zwiespalt-exakt-f1446d88a62a@brauner> <20231129165551.3476910-1-aliceryhl@google.com> In-Reply-To: <20231129165551.3476910-1-aliceryhl@google.com> From: Alice Ryhl Date: Wed, 29 Nov 2023 18:14:24 +0100 Message-ID: Subject: Re: [PATCH 4/7] rust: file: add `FileDescriptorReservation` To: brauner@kernel.org Cc: a.hindborg@samsung.com, alex.gaynor@gmail.com, arve@android.com, benno.lossin@proton.me, bjorn3_gh@protonmail.com, boqun.feng@gmail.com, cmllamas@google.com, dan.j.williams@intel.com, dxu@dxuuu.xyz, gary@garyguo.net, gregkh@linuxfoundation.org, joel@joelfernandes.org, keescook@chromium.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, maco@android.com, ojeda@kernel.org, peterz@infradead.org, rust-for-linux@vger.kernel.org, surenb@google.com, tglx@linutronix.de, tkjos@android.com, viro@zeniv.linux.org.uk, wedsonaf@gmail.com, willy@infradead.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Wed, 29 Nov 2023 09:14:47 -0800 (PST) On Wed, Nov 29, 2023 at 5:55=E2=80=AFPM Alice Ryhl w= rote: > >> + pub fn commit(self, file: ARef) { > >> + // SAFETY: `self.fd` was previously returned by `get_unused_f= d_flags`, and `file.ptr` is > >> + // guaranteed to have an owned ref count by its type invarian= ts. > >> + unsafe { bindings::fd_install(self.fd, file.0.get()) }; > > > > Why file.0.get()? Where did that come from? > > This gets a raw pointer to the C type. > > The `.0` part is a field access. `ARef` struct is a tuple struct, so its > fields are unnamed. However, the fields can still be accessed by index. Oh, sorry, this is wrong. Let me try again: This gets a raw pointer to the C type. The `.0` part accesses the field of type `Opaque` in the Rust wrapper. Recall that File is defined like this: pub struct File(Opaque); The above syntax defines a tuple struct, which means that the fields are unnamed. The `.0` syntax accesses the first field of a tuple struct [1]. The `.get()` method is from the `Opaque` struct, which returns a raw pointer to the C type being wrapped. Alice [1]: https://doc.rust-lang.org/std/keyword.struct.html#:~:text=3DTuple%20st= ructs%20are%20similar%20to,with%20regular%20tuples%2C%20namely%20foo.