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 B9B50C3DA49 for ; Sat, 27 Jul 2024 00:27:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9C7CB6B007B; Fri, 26 Jul 2024 20:27:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 94FC06B0082; Fri, 26 Jul 2024 20:27:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C8F56B0083; Fri, 26 Jul 2024 20:27:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 5D33A6B007B for ; Fri, 26 Jul 2024 20:27:09 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 05B7B1A0144 for ; Sat, 27 Jul 2024 00:27:09 +0000 (UTC) X-FDA: 82383642978.23.1D2B0E5 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf06.hostedemail.com (Postfix) with ESMTP id 286F418000F for ; Sat, 27 Jul 2024 00:27:06 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ncfnhd2H; spf=pass (imf06.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722039987; 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=AZVslHgRxr7Sb6YbmQOE3deeooZdwAiUr6jjd3nDqzY=; b=SZcLG/ZWcLdQqL+RICmy9+Yn7ipuTAN1nVAQhUFKgC5a1+xPWoZ9lnPVUB66utugw65cNK u30peK/9Rq4ZsNKdXyCIaMCjwB09nsngCjAXZjQnrYoY6b/yvOPjo0BrBVW2yXfJ4vDFXT 4vrnbqO9BPt6td3BduhtudMoVnF6WUM= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ncfnhd2H; spf=pass (imf06.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722039987; a=rsa-sha256; cv=none; b=saeM3JelepRdGE+7vAOGrNAz/VtwKYv/h2R73MVobQT+wmlh4BZ8FoQp05DLR/6iRvQFGJ cdKOvuSnX9DmOtlg7c7daPEDImc6WFlPcR0L7mzo8YYzFGdjSc3s5VYmaaJT52AAXRyITS gGgx0EFxfuG01g9Nrlrt4Do89kOmJBE= Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-2cb5deb027dso1116189a91.1 for ; Fri, 26 Jul 2024 17:27:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722040026; x=1722644826; darn=kvack.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=AZVslHgRxr7Sb6YbmQOE3deeooZdwAiUr6jjd3nDqzY=; b=Ncfnhd2HLu1Q/CLVWf3flTddF8syl9YAfjH6OsMIzN2HJ23E5J1DcaGGpPTY7X3fw0 4Y0qsZap51rSghR8BTc2SOJCOin3MkH5iJ5rLP3/gC6wKemE//o/KTwlBq2w1t2pMt4q 2oCy9k0JQ5WKhrjaFa6oVZFvDskCKgSS6qMA6rRI/47bfNHpx/qmX6xGwgbcmRy862rr Gn7D/jtDfX+vuAkY66JJKXrDG4FcLfy3496uoDFLCw7jSYadnlev8xYokWvdnwpAAIIZ W/73/Zb34cHXw7nAPVTLtX4NdI5iC6kJG0VGW+WZUHgN8U94JR4aePdhho7D/Ph1U8Nk ee8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722040026; x=1722644826; 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=AZVslHgRxr7Sb6YbmQOE3deeooZdwAiUr6jjd3nDqzY=; b=UH6AofZKCCU0O3AvcKCLVkn8p3r0h+h49gJcJ47sXzWNphHkEPbUmbq4PKX44dMr1v KbkerxEypxdz0RM38jCRfwOdcuBPh3rv+M38ftdOuQKD2rf1d3BDMAVwfqVbEw5EPSE3 gNnk8o+LCCadHBIxosRwK28mv3MvNrBz5/3aSirQrf7YruBvjKdPd0icbhn+vX5R+c8x 6xi+6uA9aziN+fXzBD53xJxGXwFD9GBTlDJwjlBh8BZWFUxs+Big77/9z62PxB65dVUq wkrvIDZVrw/ZKlDJEaMW2jG+cIynZKFcvihyC1Xh/BfcqPdH4mjSbm8w+dmbi2hoqp36 m/sg== X-Forwarded-Encrypted: i=1; AJvYcCWxzoiwuOas1AEmVyEvEBYjRlxhLGU/IYe4dJ2EnkPXET2WCQWSqTQA8bV6OJMdOPONMxpGwXg3142crVRcsNSqLCU= X-Gm-Message-State: AOJu0YxPbNd8I47wbIKJbysJgw8cy+0yNPisuV1XwxbUEKnh+ufuXlf0 QxTq/4dps/yyrtXn1N5ko4k3SBhLQM8e2bfykOQds48ZIOGktIhgb6ec9gzPzzuWU8+JGrsXRyp CRhzrTdlQj6AAbYl0UcumGPlMk7c= X-Google-Smtp-Source: AGHT+IEXbjNqCNF7Bv80FXmv140egJ8Ffiv94t8Z5VNaD0IjPZ8LIqbGGwPriclEvhNzBvbwdKH8yrWU9FzenFjQzqs= X-Received: by 2002:a17:90a:134b:b0:2c8:3f5:37d2 with SMTP id 98e67ed59e1d1-2cf7e2167b1mr1318753a91.20.1722040025720; Fri, 26 Jul 2024 17:27:05 -0700 (PDT) MIME-Version: 1.0 References: <20240724225210.545423-1-andrii@kernel.org> <20240724225210.545423-2-andrii@kernel.org> In-Reply-To: From: Andrii Nakryiko Date: Fri, 26 Jul 2024 17:26:53 -0700 Message-ID: Subject: Re: [PATCH v2 bpf-next 01/10] lib/buildid: add single page-based file reader abstraction To: Andi Kleen Cc: Andrii Nakryiko , bpf@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, adobriyan@gmail.com, shakeel.butt@linux.dev, hannes@cmpxchg.org, osandov@osandov.com, song@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: th9cwywjn8fhqkppzqwusqkdmruwk1xz X-Rspam-User: X-Rspamd-Queue-Id: 286F418000F X-Rspamd-Server: rspam02 X-HE-Tag: 1722040026-263496 X-HE-Meta: U2FsdGVkX1/wpxhtW3zjQaWez0CsNfQxw6KTZ0dBQGb/CyCtmimk4Sct/SYXtSiSpC1GBEr2U80i6EFinubO9brY9fuSCyUvKXcBxOUIuv8FpcBi/IGBHnHcy9aHo0IJJRuiI+Ld6EhgSiFyq4NfF+Ltu+pF+zneYZRdTJ/nPTEaLji/jPBlD3Z92cmcr5clxeKamLi1xRfWVnazX4U/Rf0rKHjUtpiLmMKJo1SDjHqK7/hgSzg7tzsWevbR0mMPBizWtwNgfJ5BbJYZAGlBx8b6TXaKaAMvDKKTJiSjmy+QILahAM89cFXXdO0LfVtiOpfS8wK/pkhMQMfyYuNX6qI7/i1dyhRRTXkiSgcnc9BT+2rjL7QGdRe0QduiLA1ayt8zVMng3hwA99Tl2tcg+yeVtuq7Ih2ltU9nzPma+p9xet1nPfS6ZGECKmgo6yY2cV0orj5i8FZN1xcYrMuJYPKblOgshWaeE7BnvojD+58NTHcuoWULTjiQvPEffJ44OY9Q2yq2GMsM3of6IE/jewOUx8yLT4b25bNq4OnbkQF6Fk7SfIr2bdVlYiZb0xL/lv7Kuj4LJBSmkvRSBj4vth9ppblClzgLsznOgg/YFWZDDWdRELuozTZ7vYojc+zsu27V3b/q6JjuHhKa1ZNxosXFHawW+Fq75PLVKeaJrP5fXPlbukg4b8TNvyZ0dNphuWYjqhLdnRxaKWftAwXvzUOn7jEA9NMgsRrufJzzKk3g7n67+fLfienooBdPJszHWra/G8u/rnYWQY+sAUs8RWVcvpz5GDRKjU57XEJQUbTFIqAX5Kmc042etj39PJlRBJ21QjiK6OObW+R9mah0mnnH2b9/PzAfeWswcDDj3B00yr/pfLvrDQXSWySvSmGcK0E7HJKbrPC39ZvL40yjHeJUlWvQUGaBWWQABr40NOUOkqBT2KoPWmeqXT77g/q0kQ5oCkJHcboctOWD6Um kwyN6UXH 01vJujEJ7nc6pdnZhhsoD68lPsTlG8oaDO3aCxcfg8ST8DbTE1iO8l+5CmeAxtiXnbuDQsuSsYb04u5h0eooJYVTawmIKc/+6nrPW2vXVu9FAiSRFhCAinHeNmkMJ+rfPhLzMy1GrvnF0idwwrNsa8v8KBzABx3Jh50QuanvihxMRZ4dxeUralGQCLHuI7vyVdr4OCos00jopmmR+5tDY81lTUXTxMSfFris1ue1oMrUWQEV9QiDuhttViSmNZwM4AfW5v9n5no7Bs8hWvxAX5MOpq7TG2fHVFcIKlLlxodU64gpOAu9P/JZZEN92PTqJMy99uKV1WJlrIXaP6PIMuTdXhDjwECpesnhD 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 Thu, Jul 25, 2024 at 3:43=E2=80=AFPM Andi Kleen wro= te: > > > +static int freader_get_page(struct freader *r, u64 file_off) > > +{ > > + pgoff_t pg_off =3D file_off >> PAGE_SHIFT; > > + > > + freader_put_page(r); > > + > > + r->page =3D find_get_page(r->mapping, pg_off); > > + if (!r->page) > > + return -EFAULT; /* page not mapped */ > > + > > + r->page_addr =3D kmap_local_page(r->page); > > kmaps are a limited resource on true highmem systems > (something like 16-32) > Can you guarantee that you don't overrun them? Sorry, what does "overrun" mean in this case? Note, my code doesn't change anything about kmap_local_page() usage. We used to map one page at a time, and my changes preserve this property. We never access many pages at the same time. > > Some of the callers below seem to be in a loop. > Note how freader_get_page() will always call freader_put_page() first, unmapping previously mapped page. So only one page at a time will be mapped. > You probably won't see any failures unless you test with real highmem. > Given it's a obscure configuration these days, but with some of the > attempts to unmap the page cache by default it might be back in > mainstream. > > Also true highmem disables preemption, I assume you took that > into account. If the worst case run time is long enough would > need preemption points. I don't think I did because I'm not sure what the above means, care to elaborate? But I'll reiterate, fundamentally my changes don't change any behavior for all the existing cases. And for sleepable mode we only have a read_cache_folio() call which will bring the page into page cache, and after that the rest of the logic is exactly the same as in non-faultable mode. > > -Andi