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 7FECFC54E76 for ; Wed, 4 Jan 2023 21:15:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 48C058E000D; Wed, 4 Jan 2023 16:15:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3ED868E0001; Wed, 4 Jan 2023 16:15:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 267898E000D; Wed, 4 Jan 2023 16:15:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 176C88E0001 for ; Wed, 4 Jan 2023 16:15:12 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E2C7A1A06AB for ; Wed, 4 Jan 2023 21:15:11 +0000 (UTC) X-FDA: 80318372022.27.ED315F0 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by imf01.hostedemail.com (Postfix) with ESMTP id 39CFF4001A for ; Wed, 4 Jan 2023 21:15:10 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=V1E1lT+8; spf=pass (imf01.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672866910; a=rsa-sha256; cv=none; b=POnFZarJ8IhgTBU8M4Jmes1AiWUuEsi5jD36cNGCaMJVGwBorclc5TrIDRx9z7YF6mjZv3 nq2iBsZSCkjcZams2F2CaxpkpxN2kJyKnZVTMJ+o7NqI2gwZ2xl5yygi0XVE5GrWdJ8IJF hDiaUdgRiTYSAbAsWKc5HySS6zKS080= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=V1E1lT+8; spf=pass (imf01.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=vishal.moola@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=1672866910; 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=o5rMPwcVI+xSSROnSv680xsAXd0L9APPXdNmyKQVwfk=; b=77RqKsBk+5qh9Z2nrn5mOLtJE8lv9hl1guT17/JTCve+9foZAv0XOuk5mJX5vm8S9kvTEI WgVbUqTJ4wVnDxLLEG3Ogxq4MmWpXVSlWECfZ8dFWGRGgsgu2n28575JhiOsPfOPAS19vg ESUAkmf5m4rbwknGV1/LtBo0fSK2YgY= Received: by mail-pl1-f171.google.com with SMTP id g16so27542143plq.12 for ; Wed, 04 Jan 2023 13:15:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o5rMPwcVI+xSSROnSv680xsAXd0L9APPXdNmyKQVwfk=; b=V1E1lT+81O0Bma5i45Jhgrf33b8ZyAtb2k6sBn232f4UkEzENvpQBKf03VCx514eGY A6/X8hia12tEOrxhlqm2jbfpueF7iUxDQK73Qfx/HnU0C1qeC98Y/FJf4DdEA7/pzkhJ 0R9L0J423oCq4U1iJLCVDadB2Wt5+nvV5hLoYRWJbhwd1xBn6WpVA0bJU8YE7e7wpuN2 7595aSPavZoug9A+uF4GQmMXauKv9jF+a45BkfZqX76YcFFkYKhW2/vAA8fJsRJSuef8 gAsMn3ncTXpb8uuk1BimZcT4C8iNt/aS5nfn00OIYDqHLLwCBHXgWFjBa8QQEThwOWQl z5zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o5rMPwcVI+xSSROnSv680xsAXd0L9APPXdNmyKQVwfk=; b=I6Z0l+sea7FPkU9TqqqkqM2UfDrQtP3jN+YGSJTm5qfMnnqO60PVT/j5kQeV+Ydl/M 4XUZ5UhHLTrwGZFX1c57rqEITuwPObG67AS9oA7juKbIBJF8w8GvW1ERTuKH8zz4dXPs YVd1a/pBii3ECuTW7cEhBfaz3Y3OIWY3kr2foxbjJ/GT8tERsttJm5KCLkRYsAuC12Nb 1E/iqJEajJrkoMCS/Kj+cCCvCEw+x4f8hUNV38LCsM70Z7i/FnTab8Fw2R1zsCNKXZOA w8hEVqfy2PpiWYFr6RT13po8i+jywg5G3mEX37cOK0p8+tE0h8JKHqSnaMRRRUfPE1lj FqGw== X-Gm-Message-State: AFqh2kpuz+MkhlhShjp6szTJRLQEP9Aw3Xe6b9YfYZLCVj8K9vKff89b XRT/0gAbsMlmL1imcNI5HEM= X-Google-Smtp-Source: AMrXdXu6t3Nt2/819SMAwDAr2w3gRs9/WxQKALxtb70CxJaSaRfG2mUZCKyO3UNaiTmg39rKgXBHzw== X-Received: by 2002:a05:6a20:cf62:b0:ab:ee20:b003 with SMTP id hz34-20020a056a20cf6200b000abee20b003mr46906430pzb.14.1672866909161; Wed, 04 Jan 2023 13:15:09 -0800 (PST) Received: from fedora.hsd1.ca.comcast.net ([2601:644:8002:1c20::a55d]) by smtp.googlemail.com with ESMTPSA id i8-20020a17090a138800b00226369149cesm6408pja.21.2023.01.04.13.15.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Jan 2023 13:15:08 -0800 (PST) From: "Vishal Moola (Oracle)" To: linux-fsdevel@vger.kernel.org Cc: linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, linux-cifs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-nilfs@vger.kernel.org, linux-mm@kvack.org, "Vishal Moola (Oracle)" Subject: [PATCH v5 09/23] cifs: Convert wdata_alloc_and_fillpages() to use filemap_get_folios_tag() Date: Wed, 4 Jan 2023 13:14:34 -0800 Message-Id: <20230104211448.4804-10-vishal.moola@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230104211448.4804-1-vishal.moola@gmail.com> References: <20230104211448.4804-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 39CFF4001A X-Stat-Signature: qku3p8aw3nc9w43bph5y4gjewwrh6d3m X-HE-Tag: 1672866910-750925 X-HE-Meta: U2FsdGVkX1+pWxIs+J21nEdZJ8DfrYqBbqZutwm5xD9T9pobSS2zjNy4+ytKDyBNOR6GVgGSKaDYwjFJmSZ+lSysQQsVsDoXm2WGeKhhBQvTgEm6gey5afWsRwp3YKMQk/RCmVFM3LfpanXd5A9cyZ/UHQB4WHYiXFeuYHexQpjdhGZ16gt7mNCfhKs09qSvH7aHEhSCLTIA8T9VXoj0K75/wxEw3WTQR8z2dgyQRJdOtj4oTAt6uKq4PYqnQQhXw+SUlj0KIK2mlcztJT7eNXLKpKrgnPPTO03YiJ7VobBtlIE72BGev3ymS8dRz4r2OLsowWobGW4WPBDEMlfmAtCJ/K1fymkrNAvb9q/2S4Qe7nvzfwfo5oqskkbLMOK9jyEm98q2u6vlnGJsbZbSxyQKNlzLOfUER7asYxRwMfT3WQk/dbZl7/g1pmFecvJJnrFZ8gMnwBrJiFQcV7RzT9MM3dzebn8B2iWcya45LPqwrmJV0LhqeHJkYiLVINF+nOvgGc9cEBb88jc9sEvPLpP8LQMCZzznzYS3mU9c/kzKOScJ3va+nkmQU5BZ5e//ksgQCT9KcBc9nmBK9t4EJVbglVHd60gEa3aHSikaxxHKXbrmFAdx5i3bxjWhZJsEbfu2ePOjKqBHRFDnRy4vVVRZOeFbGVb955naxCZkbw2HFz7JZhuVE5FHh60V9I/DlmAui3FFN33FfuW6g1tP+5rfHGtU1cxfj+pEWEIKT/llnNACYnWAQ9RfVHaLZJNVWGg2BSaZgxz1Qa4NKFqHIX7irxpxbwRK6VZwto3GBmucFn13L76i/mdWjuPrVqB7Y9Eni7Q8gWCIAybAWTua6WcerwJlewhwSWu3g6BsI8kkN23XU7Rxil3emrYE1uXZQWzEGAf6ek4GktEpT6cs7tMgO75Scp/46ZvkPCEta52lHEVHO1X5DvY9Ruu6XHhv4D77l0wl5RimiSttCEG NsEAzoYi MDcYmWyRQWbZ+cXy6ty55SYwhbEx7ClPoYTlr7SqGexsfvjU/dnQplLUh3brBsmyk/YCbixb9BfGlfBhYsxGpO1iElGd1N/bCTykAxZbvV5MvX6JPq5OHJ8GVSWQtTPkOFcvr/Gugbim5W6hVHgevYyUCYqBVEIx7pIKscRsvq3DE72RvNfLe3Kdo7PLPl/NLHAFP8S7Gn1xK1q6/xMHQfKgiq9ez0Kp1j0luXSckEyb/aMum5FNCSLeqkYYG4H2O5UqRhI/o0wvY8nfTzs5FBm5mFhKaOG57gUWj X-Bogosity: Ham, tests=bogofilter, spamicity=0.024659, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This is in preparation for the removal of find_get_pages_range_tag(). Now also supports the use of large folios. Since tofind might be larger than the max number of folios in a folio_batch (15), we loop through filling in wdata->pages pulling more batches until we either reach tofind pages or run out of folios. This function may not return all pages in the last found folio before tofind pages are reached. Signed-off-by: Vishal Moola (Oracle) --- fs/cifs/file.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 22dfc1f8b4f1..8cdd2f67af24 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -2527,14 +2527,40 @@ wdata_alloc_and_fillpages(pgoff_t tofind, struct address_space *mapping, unsigned int *found_pages) { struct cifs_writedata *wdata; - + struct folio_batch fbatch; + unsigned int i, idx, p, nr; wdata = cifs_writedata_alloc((unsigned int)tofind, cifs_writev_complete); if (!wdata) return NULL; - *found_pages = find_get_pages_range_tag(mapping, index, end, - PAGECACHE_TAG_DIRTY, tofind, wdata->pages); + folio_batch_init(&fbatch); + *found_pages = 0; + +again: + nr = filemap_get_folios_tag(mapping, index, end, + PAGECACHE_TAG_DIRTY, &fbatch); + if (!nr) + goto out; /* No dirty pages left in the range */ + + for (i = 0; i < nr; i++) { + struct folio *folio = fbatch.folios[i]; + + idx = 0; + p = folio_nr_pages(folio); +add_more: + wdata->pages[*found_pages] = folio_page(folio, idx); + folio_get(folio); + if (++*found_pages == tofind) { + folio_batch_release(&fbatch); + goto out; + } + if (++idx < p) + goto add_more; + } + folio_batch_release(&fbatch); + goto again; +out: return wdata; } -- 2.38.1