From patchwork Fri Oct 25 20:39:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Howells X-Patchwork-Id: 13851574 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E8439D149F2 for ; Fri, 25 Oct 2024 20:42:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E9646B00BB; Fri, 25 Oct 2024 16:42:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 770936B00BC; Fri, 25 Oct 2024 16:42:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5EB946B00BD; Fri, 25 Oct 2024 16:42:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3C25A6B00BB for ; Fri, 25 Oct 2024 16:42:48 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C2D02A110B for ; Fri, 25 Oct 2024 20:42:11 +0000 (UTC) X-FDA: 82713297408.03.323DF5D Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf30.hostedemail.com (Postfix) with ESMTP id 328678000E for ; Fri, 25 Oct 2024 20:42:08 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=L7ljmFTo; spf=pass (imf30.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729888811; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=u3/1sOVuQqHpfo8UyVSOFEz4LX0EnJcfMGVnlE5mJ3g=; b=xZZO0IZtUi5wwwwRZQ2akmba7pD7MWgTuOnlpHnSpyE6zMleQsnkRiUeCVRry7SzsuujNN NbOBpR61vQ4sMWETbYz0HXtZKZ66iMUiEVCBLeg2KAoSH+xcyokiFpKEyzNVdU9bFlA2+6 7hHZk8vOvbGALs1KOomjyviZaqrEIkg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729888811; a=rsa-sha256; cv=none; b=qYQyFxNiWHA4ak26d4Sc+8I5RoU+o2VhmbrhH81GU1Y/N2Xe2nncAI0Quum1XrQGfDtTBf hDQ2rm704pQUOtmsi+OD+MvTiR39jRGvdfAa7B4Q/e7AOse/SnG2y7NwfjnpaNJXpOc/YC R5vkbFTBUE5tU+AZLQFgFhrzDqZju5E= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=L7ljmFTo; spf=pass (imf30.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1729888965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=u3/1sOVuQqHpfo8UyVSOFEz4LX0EnJcfMGVnlE5mJ3g=; b=L7ljmFToIRg5sutRaX9lg9qfYKObPPs4c2IljVyUvzCtjFuo1x61oxYmu4dLmDGrXCeusE f1r7u2jvzqkcK0psUal8DGFrY0YY3i+taztSn0pUsF5wTqy9Qlcis6KMPxxRrC8CSZ/PrU De+RAxTN0b/5Ap/Lpdl9MwjfEllwrlA= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-659-05d17uMeOhmt3mB9GS9P3A-1; Fri, 25 Oct 2024 16:42:41 -0400 X-MC-Unique: 05d17uMeOhmt3mB9GS9P3A-1 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 140651955F2B; Fri, 25 Oct 2024 20:42:39 +0000 (UTC) Received: from warthog.procyon.org.uk.com (unknown [10.42.28.231]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 43D3A19560A2; Fri, 25 Oct 2024 20:42:34 +0000 (UTC) From: David Howells To: Christian Brauner , Steve French , Matthew Wilcox Cc: David Howells , Jeff Layton , Gao Xiang , Dominique Martinet , Marc Dionne , Paulo Alcantara , Shyam Prasad N , Tom Talpey , Eric Van Hensbergen , Ilya Dryomov , netfs@lists.linux.dev, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-erofs@lists.ozlabs.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 21/31] afs: Make afs_init_request() get a key if not given a file Date: Fri, 25 Oct 2024 21:39:48 +0100 Message-ID: <20241025204008.4076565-22-dhowells@redhat.com> In-Reply-To: <20241025204008.4076565-1-dhowells@redhat.com> References: <20241025204008.4076565-1-dhowells@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 328678000E X-Stat-Signature: r56d57jqzx5xmza4g77pt73thox6skxs X-HE-Tag: 1729888928-130123 X-HE-Meta: U2FsdGVkX192pVixHBHtCVTrs1nwCVkkEZ/rj0zZD55hX4mTK4GUKveemYQWlRKdbFDcxT1KREgn90idqJej83H/5TZpdOutfZTyop27Eo9FdsnMNgCOdSCZHNVTLeEse1GuM9LIk9xap+VsFMw3roWjGw0pjSV+AWMc6H5irGGQVqZsjzP+8PDcH8YCwSDI3YkGYUMEdi3q/GbXHZ+apqi6vxN6TQcI5NhzLnQi1pdC6ItrXAMKkHvtgTVVYCTC3JRnigB7VH+QEg+MA8dOOS0m1Z5/135j+ibvVgBCr6VFFqK+inrMOtyT0mNk7WvA578/TR3tRQRhQO0z3PZOYqenL7aUtBdVrXCBvKrEyF7Tqe1HVPP+e/bjRj8gBeqLtdY4DDpb+47oqmKj6quu3uTO/LJKTItDcLxjBFpB4pw2tgvL7DbecILGQtnfzS6YzA5015khVeUc2C19h4J3w/W1HYygbsbOPjPaHPLFDpk0ddlxbWSGhL7Fn20BwBGDINkk/cNykdTeKVGIvSQlMp5ypSZj8h0kyzZNazDj3IA6ad+keaitkhyX5KkqFL2+BidEWPj8tqCI5haYxQc6c7sDKGaGl4933nym6jVlMp5jLUAhvIYhbypvX5Z0c67WmY7FC+w4S8h4JgfhiCfCX6Ewnz3lTFhaxiWUrSqlQ2zKIz2412Mg3Lpr5adqPOhganUROXy+3gSusnXfnUv1PSWyA0l1quQFSEF6LwUfdbrnN0h9J82re9np0v0sWhksSHwV1ksx0g3VJitKV0zbVmyKLgUScg9S3eyLJRxCYtQDurokXUc+r+VIvAEYp0hQ/QTz/gTebs0UpCSKQ/GFkQignq5fiN5hxmdOi+whon8qjvZv9UJJXLeRqGJzl8mdGbP/v9fB45aBU/uenxbh384qdIXnVHRHAvznmyh+a4dBTKJIHb2gy6DJDZ4f4cK30gjs77Ui9yVhzKhqEmU BMGFdtWh MkLJdbcqY0dqHnuSdL7zgnWJYbvpdePt5YyHNfYftQ/8ReAVva4skj5zJLSrSElPv0BYI6P+DHf96i1J+yVOnQH3n7RaNXif0NKqj0x8giOGbWFV9+9oFa+C0FVYAjkQZkXac36gw73LQKk1MHYD8tIG+wgtxTk6w+pHcUSZCLNwJ8K5gLDvHvENKRJerNXpQ5lkaVBfdpEFa5HcssEFCSs6xPPjw5rDcthc1+IwBLepUUJT7rh9fWhvCf80UWGDtCYapKAjNJz+aw4bB80cGzdHJoRJmGczgdTlyJUbS0FhifyAY2WQ4iKtLGVLg2ta0CY17Fh642T9dTIiLto52t+4ucVswLQl6cL+pNMo5vIisZgoqVH7RcYBQz5ue8rVXsDkgaKO70p0EpmwJoqmEStJkrpgRksSPOi05qgoXnl0Prkc5wrbPvboAnbmI8wgs0uLPirh3VE1PZ0uwYbfh1yRJqUxKBUV/xsOtVcJv2PH3FFQAbQAqxmdRqjZpxNnflTwPfhMN6yE1Ggo= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: In a future patch, AFS directory caching will go through netfslib and this will involve, at times, running on behalf of ->lookup(), which doesn't provide us with a file from which we can get an authentication key. If a file isn't provided, make afs_init_request() get a key from the process's keyrings instead when setting up a read. Signed-off-by: David Howells cc: Marc Dionne cc: linux-afs@lists.infradead.org --- fs/afs/file.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/fs/afs/file.c b/fs/afs/file.c index f717168da4ab..a9d98d18407c 100644 --- a/fs/afs/file.c +++ b/fs/afs/file.c @@ -372,10 +372,26 @@ static int afs_symlink_read_folio(struct file *file, struct folio *folio) static int afs_init_request(struct netfs_io_request *rreq, struct file *file) { + struct afs_vnode *vnode = AFS_FS_I(rreq->inode); + if (file) rreq->netfs_priv = key_get(afs_file_key(file)); rreq->rsize = 256 * 1024; rreq->wsize = 256 * 1024 * 1024; + + switch (rreq->origin) { + case NETFS_READ_SINGLE: + if (!file) { + struct key *key = afs_request_key(vnode->volume->cell); + + if (IS_ERR(key)) + return PTR_ERR(key); + rreq->netfs_priv = key; + } + break; + default: + break; + } return 0; }