Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1890369/?format=api
{ "id": 1890369, "url": "http://patchwork.ozlabs.org/api/patches/1890369/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20240124175302.1750912-9-willy@infradead.org/", "project": { "id": 3, "url": "http://patchwork.ozlabs.org/api/projects/3/?format=api", "name": "Linux MTD development", "link_name": "linux-mtd", "list_id": "linux-mtd.lists.infradead.org", "list_email": "linux-mtd@lists.infradead.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20240124175302.1750912-9-willy@infradead.org>", "list_archive_url": null, "date": "2024-01-24T17:52:51", "name": "[v2,08/15] ubifs: Convert ubifs_write_begin() to use a folio", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "f451971a7f9bcbf6b568cf26f41b2ce3ea49356e", "submitter": { "id": 70855, "url": "http://patchwork.ozlabs.org/api/people/70855/?format=api", "name": "Matthew Wilcox", "email": "willy@infradead.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20240124175302.1750912-9-willy@infradead.org/mbox/", "series": [ { "id": 391975, "url": "http://patchwork.ozlabs.org/api/series/391975/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/list/?series=391975", "date": "2024-01-24T17:52:56", "name": "ubifs folio conversion", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/391975/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1890369/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1890369/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=iGycSmut;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=N0W/4RN9;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4TKs5W44BJz23f0\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 25 Jan 2024 04:53:51 +1100 (AEDT)", "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux))\n\tid 1rShRK-004a4i-04;\n\tWed, 24 Jan 2024 17:53:30 +0000", "from casper.infradead.org ([2001:8b0:10b:1236::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux))\n\tid 1rShRF-004Zzd-2S\n\tfor linux-mtd@bombadil.infradead.org;\n\tWed, 24 Jan 2024 17:53:25 +0000", "from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red\n Hat Linux))\n\tid 1rShQv-00000007LVe-1dNa;\n\tWed, 24 Jan 2024 17:53:05 +0000" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=YjWB0yWH4+C+hu92Obfwp2TibxTXVikZ6ZCB0TVhuRk=; b=iGycSmutYUmUrH\n\tLQ8iYxkBdhLWp6icQKlU4PBPQqPqyMKQnxWhbxYjJIwXo7rAt1AnYkb29sNnRekc2DhPTD9VplmCo\n\t3gqfSep0XryxiVXbzH0THdR/dyLGtoQMv7T3u9vOhDO4xZp3aaeLvHPaz/B8jBWUaNtFiOaFukeuE\n\tkXvxhkoFfq3j7SUZ/UapWm5W+5ruoSdf9AaLriNndM+yO/8nuCEsKCKELWU9z7LU+aJPbaqf4qrzG\n\tCkTPZWJ/wNLY4hmBE5xdElELC9zHmVYBLHKu7Gf5pYBfszVLsCOySgxemcDSMJBimPI8HE/xrV1Fs\n\tv/rvZgk5KO/LHRsHx7cg==;", "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version:\n\tReferences:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:\n\tContent-Type:Content-ID:Content-Description;\n\tbh=myqNdypVDbPYSg5YAYZPXmed5Q22UouItoM0k9nn62w=; b=N0W/4RN9qOyKfBUOmaU4v8XyGI\n\t1N/872GVz1bu+72k8dWgI3wGRNDLIrB9Tunk7OtXZvF1sbeJQEoQlddy9N362UtrYlIRYLchVmLJA\n\tq3QiDo3z7vhEpIWKjO5vrLWho19P7T4onZy5uvK7sXzuRBi61R1gKSJ/hjjdFoUBYlbdt0yp9P+ns\n\t62pqB+4bzFZ64uZl7K4lFKmCDJj+xKqGes/gWUGCebyCkoG78lFMjfOlaW/h1lanaks7vjkZPx0WB\n\telFcD6GALk4G1NKfNjF26jVPSBu+SRvhAprUZNXHmh5b3rhyzgvBmAxKUDf254d0VksHbU+uXSZE2\n\tEVwbbi+w==;" ], "From": "\"Matthew Wilcox (Oracle)\" <willy@infradead.org>", "To": "Richard Weinberger <richard@nod.at>", "Cc": "\"Matthew Wilcox (Oracle)\" <willy@infradead.org>,\n\tlinux-mtd@lists.infradead.org,\n\tZhihao Cheng <chengzhihao1@huawei.com>", "Subject": "[PATCH v2 08/15] ubifs: Convert ubifs_write_begin() to use a folio", "Date": "Wed, 24 Jan 2024 17:52:51 +0000", "Message-ID": "<20240124175302.1750912-9-willy@infradead.org>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20240124175302.1750912-1-willy@infradead.org>", "References": "<20240124175302.1750912-1-willy@infradead.org>", "MIME-Version": "1.0", "X-BeenThere": "linux-mtd@lists.infradead.org", "X-Mailman-Version": "2.1.34", "Precedence": "list", "List-Id": "Linux MTD discussion mailing list <linux-mtd.lists.infradead.org>", "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-mtd>,\n <mailto:linux-mtd-request@lists.infradead.org?subject=unsubscribe>", "List-Archive": "<http://lists.infradead.org/pipermail/linux-mtd/>", "List-Post": "<mailto:linux-mtd@lists.infradead.org>", "List-Help": "<mailto:linux-mtd-request@lists.infradead.org?subject=help>", "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-mtd>,\n <mailto:linux-mtd-request@lists.infradead.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Sender": "\"linux-mtd\" <linux-mtd-bounces@lists.infradead.org>", "Errors-To": "linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "Save eight calls to compound_head() by using the new folio API.\nRemove a few assumptions that would break with large folios.\n\nSigned-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>\nReviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>\n---\n fs/ubifs/file.c | 32 ++++++++++++++++----------------\n 1 file changed, 16 insertions(+), 16 deletions(-)", "diff": "diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c\nindex cc4d2ec95b70..13c078bdf156 100644\n--- a/fs/ubifs/file.c\n+++ b/fs/ubifs/file.c\n@@ -426,7 +426,7 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \tpgoff_t index = pos >> PAGE_SHIFT;\n \tint err, appending = !!(pos + len > inode->i_size);\n \tint skipped_read = 0;\n-\tstruct page *page;\n+\tstruct folio *folio;\n \n \tubifs_assert(c, ubifs_inode(inode)->ui_size == inode->i_size);\n \tubifs_assert(c, !c->ro_media && !c->ro_mount);\n@@ -435,13 +435,14 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \t\treturn -EROFS;\n \n \t/* Try out the fast-path part first */\n-\tpage = grab_cache_page_write_begin(mapping, index);\n-\tif (unlikely(!page))\n-\t\treturn -ENOMEM;\n+\tfolio = __filemap_get_folio(mapping, index, FGP_WRITEBEGIN,\n+\t\t\tmapping_gfp_mask(mapping));\n+\tif (IS_ERR(folio))\n+\t\treturn PTR_ERR(folio);\n \n-\tif (!PageUptodate(page)) {\n+\tif (!folio_test_uptodate(folio)) {\n \t\t/* The page is not loaded from the flash */\n-\t\tif (!(pos & ~PAGE_MASK) && len == PAGE_SIZE) {\n+\t\tif (pos == folio_pos(folio) && len >= folio_size(folio)) {\n \t\t\t/*\n \t\t\t * We change whole page so no need to load it. But we\n \t\t\t * do not know whether this page exists on the media or\n@@ -451,19 +452,19 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \t\t\t * media. Thus, we are setting the @PG_checked flag\n \t\t\t * here.\n \t\t\t */\n-\t\t\tSetPageChecked(page);\n+\t\t\tfolio_set_checked(folio);\n \t\t\tskipped_read = 1;\n \t\t} else {\n-\t\t\terr = do_readpage(page);\n+\t\t\terr = do_readpage(&folio->page);\n \t\t\tif (err) {\n-\t\t\t\tunlock_page(page);\n-\t\t\t\tput_page(page);\n+\t\t\t\tfolio_unlock(folio);\n+\t\t\t\tfolio_put(folio);\n \t\t\t\treturn err;\n \t\t\t}\n \t\t}\n \t}\n \n-\terr = allocate_budget(c, page, ui, appending);\n+\terr = allocate_budget(c, &folio->page, ui, appending);\n \tif (unlikely(err)) {\n \t\tubifs_assert(c, err == -ENOSPC);\n \t\t/*\n@@ -471,7 +472,7 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \t\t * write all of it, then it is not up to date.\n \t\t */\n \t\tif (skipped_read)\n-\t\t\tClearPageChecked(page);\n+\t\t\tfolio_clear_checked(folio);\n \t\t/*\n \t\t * Budgeting failed which means it would have to force\n \t\t * write-back but didn't, because we set the @fast flag in the\n@@ -483,8 +484,8 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \t\t\tubifs_assert(c, mutex_is_locked(&ui->ui_mutex));\n \t\t\tmutex_unlock(&ui->ui_mutex);\n \t\t}\n-\t\tunlock_page(page);\n-\t\tput_page(page);\n+\t\tfolio_unlock(folio);\n+\t\tfolio_put(folio);\n \n \t\treturn write_begin_slow(mapping, pos, len, pagep);\n \t}\n@@ -495,9 +496,8 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping,\n \t * with @ui->ui_mutex locked if we are appending pages, and unlocked\n \t * otherwise. This is an optimization (slightly hacky though).\n \t */\n-\t*pagep = page;\n+\t*pagep = &folio->page;\n \treturn 0;\n-\n }\n \n /**\n", "prefixes": [ "v2", "08/15" ] }