From mboxrd@z Thu Jan 1 00:00:00 1970 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 BCAFAC3DA4A for ; Mon, 5 Aug 2024 18:30:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 03B5D6B0089; Mon, 5 Aug 2024 14:30:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F2D7C6B0098; Mon, 5 Aug 2024 14:30:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF5576B0099; Mon, 5 Aug 2024 14:30:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C0BF36B0089 for ; Mon, 5 Aug 2024 14:30:26 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 73B24A1BB1 for ; Mon, 5 Aug 2024 18:30:26 +0000 (UTC) X-FDA: 82419032052.04.77840FA Received: from out-189.mta1.migadu.com (out-189.mta1.migadu.com [95.215.58.189]) by imf08.hostedemail.com (Postfix) with ESMTP id 0CE51160008 for ; Mon, 5 Aug 2024 18:30:23 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=jWZm8fn7; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf08.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722882574; a=rsa-sha256; cv=none; b=BIbCzMSNhI9TWMAvsWMQRAdwNPsUkiashvx5jyCLvAnmRh0E0OLwUht24w99jWe4b6qV4B +ZYzglX7Pfxkh+KhnW/aIxGP6qZYCN58hyUICdGo2AXQ5+SwwJRyQs+ku4be+SR+ICzM0m IoWLJq4kVqMDsvuVkw+qvNwdmcZvy4s= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=jWZm8fn7; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf08.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722882574; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OIXIzoEVWeFpOpo6RMGLeyng9gBukpKAnZG5EbPjY7Y=; b=LK/QBkDMnU5ub9RJCAkqjZD1ieOYhUK/++iDbpF9JC2fILdF1J3MXpgNisCdso9BWoy30A xFpeMy6QbvjvX2Ab4gz21fxUZZbxV7MQvxqHQgIr0dyryeoF1UEmLQVgnxXiWvXTBJvaHb l5S5VUNftopZgZWR+N6b13FDB+sQU9I= Date: Mon, 5 Aug 2024 11:30:13 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1722882620; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OIXIzoEVWeFpOpo6RMGLeyng9gBukpKAnZG5EbPjY7Y=; b=jWZm8fn7vJCuvbu5KSRTvV0WZpSDKCBDV8SZHovg/0dCGePhbEozlx2MXeH0z2gsoHJCtb ypVPWlbopC2UQtCwHTCVqjoxEL7XKhWTHMxxanLvYqO1hCQNIRJsvbGpl6MprbHXcnxeah xuYbtVT1eajOb1NgBX5rtElb73pWm78= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Andrii Nakryiko Cc: Andrii Nakryiko , Johannes Weiner , bpf@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, adobriyan@gmail.com, ak@linux.intel.com, osandov@osandov.com, song@kernel.org, jannh@google.com, Omar Sandoval Subject: Re: [PATCH v3 bpf-next 06/10] lib/buildid: implement sleepable build_id_parse() API Message-ID: References: <20240730203914.1182569-1-andrii@kernel.org> <20240730203914.1182569-7-andrii@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0CE51160008 X-Stat-Signature: ako41xawbjmcwot8pktw8qopjqdrqhib X-Rspam-User: X-HE-Tag: 1722882623-684357 X-HE-Meta: U2FsdGVkX196aI82EtsfMKAjkFWrpVgSJFeKLe78qoLovIgXPc22dkXd6iQh5DzFbtIuhwvyl1xZazepqLL0vHpEKkveLuATsYszRx/o6YzEbcLIkTuGijHEVVplZ8wVta+GNNh/JEclg2MVAR8VzM26msjG8fE1Uot4tOSC0f4EKbtRuhFI+s03hkBy7nAwUD+SlWXaLSMlALMh+f2uSjZmkkBUO1vlxoPv6iAWM5dyp/8jVlovqUl9ywbf2B9E1r71jD7KyTj+f31JHZiF2e0owglv7Pi4f7A21xosxgrwVkQmi6NbeM08g3UBlfVbFWOaTNUMzqQ4ozEGEOPytVLT131t3eeF96Mz+gXwPU8Y4hx61/q4dgtOdUWuQfF4k0E2i+MxPqP4IDEU6yX1AcLLNm1sMrgAdJQvBIDHFHhZYk3lG08WdMKm6+Kz7tj1pi1Ophc0JxHPbOT6kNw8xejbFDH93H8q4wVbM74YqnR2LPDnWyZuZnfCIAUBOPdRD5bE2etwOve+Xf8C5xdBfajdAYoXXCW7oY7w/8IWm70uB5/km6p8zW9m8zHloshH7Kc0JYOLZ+Iorq8p4wsiIPTgO5b6Ulkxvh9SsTZUhJRJLDnKW8oOb89Q6yYbNPVN1Y4EOU6UCDvzut4Gw5UOskunbsbRSub10t1rqJT+vegD/SfHWY+8mIoUkDVF/ZMzGJJDodCmb988euxlwGjvNEFQvQ7v4UagDwqA3fa1KdD5efIHACwJjqUWcMUWjLVqNsYNjWRJ8ff8d8bE4LO5OpyGRfdsCbZ4fT2di6Ab8MTizmBvvEYzqOmkiVJl0+RAut2Qi4KBJvbkQzZVGyYYrQXKDbUvmcARGT9EU9RxEWXB5rzVxueSOAPM8ZhFxowiKsqniI5/IVT1zjH3b4BRW61XVX3waHkPHlmNSq9d2kFzva/C+wEilAIM7+/Kte/IIMYtbV5PjqJvyZrnYjN fpnvbL2r 4nywOO1/JZawi9MO9H+JJe2dUW10lnU1wuZ69XGQhajhQ0EhnjzF1Zn4jU/1Koel9bmNC8w56zSqZu5cXB6mv2d0qY54A3G/u6KprYAvYAdvMmfZTdPlkUA2yoOzGVNnO6XjI7S48+Ke+3HbuOavxd98DWVo45dbmCQiwYkvnYaGcH/Dg4pAu4L9ajkO0sWIS9OIXB9oARs4RQT3Kq89kr7SBCPSqQIjjs1zUGm8+6PiHgy+d7CafFkY66ozcBtJK2Dy2U2razqxuP2J1zlHSddNc4nriGeMuv1woEp/LhLMedq0EToPE800mAnIdfwEG56fs6n28lrMWpQsqTc28TH9c4256XOOLAo5hWOq0RiEHZkD7P3s6ADRdWsNv5QrzarT+jGq/l/1ACrObkFszAeIeMAi8tR26Qxl/iypMdcUepGNTQC9vfDmRK6PoZsNWZzx0 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: On Wed, Jul 31, 2024 at 02:56:00PM GMT, Andrii Nakryiko wrote: > On Tue, Jul 30, 2024 at 1:39 PM Andrii Nakryiko wrote: > > > > Extend freader with a flag specifying whether it's OK to cause page > > fault to fetch file data that is not already physically present in > > memory. With this, it's now easy to wait for data if the caller is > > running in sleepable (faultable) context. > > > > We utilize read_cache_folio() to bring the desired file page into page > > cache, after which the rest of the logic works just the same at page level. > > > > Suggested-by: Omar Sandoval > > Cc: Shakeel Butt > > Cc: Johannes Weiner > > Signed-off-by: Andrii Nakryiko > > --- > > lib/buildid.c | 50 ++++++++++++++++++++++++++++++++++---------------- > > 1 file changed, 34 insertions(+), 16 deletions(-) > > > > diff --git a/lib/buildid.c b/lib/buildid.c > > index 5c869a2a30ab..6b5558cd95bf 100644 > > --- a/lib/buildid.c > > +++ b/lib/buildid.c > > @@ -20,6 +20,7 @@ struct freader { > > struct page *page; > > void *page_addr; > > u64 file_off; > > + bool may_fault; > > }; > > struct { > > const char *data; > > @@ -29,12 +30,13 @@ struct freader { > > }; > > > > static void freader_init_from_file(struct freader *r, void *buf, u32 buf_sz, > > - struct address_space *mapping) > > + struct address_space *mapping, bool may_fault) > > { > > memset(r, 0, sizeof(*r)); > > r->buf = buf; > > r->buf_sz = buf_sz; > > r->mapping = mapping; > > + r->may_fault = may_fault; > > } > > > > static void freader_init_from_mem(struct freader *r, const char *data, u64 data_sz) > > @@ -60,6 +62,17 @@ static int freader_get_page(struct freader *r, u64 file_off) > > freader_put_page(r); > > > > r->page = find_get_page(r->mapping, pg_off); > > + > > + if (!r->page && r->may_fault) { > > + struct folio *folio; > > + > > + folio = read_cache_folio(r->mapping, pg_off, NULL, NULL); > > + if (IS_ERR(folio)) > > + return PTR_ERR(folio); > > + > > + r->page = folio_file_page(folio, pg_off); > > + } > > + > > mm folks, is this the sane way to do this? Can you please take a look > and provide your ack? Thank you! Yes I think this is sane. I just had to check if read_cache_folio() is also elevating a reference to the folio similar to find_get_page() and I think it is doing so. I will go through the series soon.