Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/829940/?format=api
{ "id": 829940, "url": "http://patchwork.ozlabs.org/api/1.2/patches/829940/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20171024152415.22864-12-jack@suse.cz/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/1.2/projects/8/?format=api", "name": "Linux ext4 filesystem development", "link_name": "linux-ext4", "list_id": "linux-ext4.vger.kernel.org", "list_email": "linux-ext4@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20171024152415.22864-12-jack@suse.cz>", "list_archive_url": null, "date": "2017-10-24T15:24:08", "name": "[11/17] dax: Allow tuning whether dax_insert_mapping_entry() dirties entry", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "aa64250668911ff1445c9364b566c05adfdb48e3", "submitter": { "id": 363, "url": "http://patchwork.ozlabs.org/api/1.2/people/363/?format=api", "name": "Jan Kara", "email": "jack@suse.cz" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20171024152415.22864-12-jack@suse.cz/mbox/", "series": [ { "id": 10008, "url": "http://patchwork.ozlabs.org/api/1.2/series/10008/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=10008", "date": "2017-10-24T15:23:57", "name": "dax, ext4, xfs: Synchronous page faults", "version": 5, "mbox": "http://patchwork.ozlabs.org/series/10008/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/829940/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/829940/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<linux-ext4-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming@ozlabs.org", "Delivered-To": "patchwork-incoming@ozlabs.org", "Authentication-Results": "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-ext4-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yLxtH0LN2z9t4Z\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 25 Oct 2017 02:25:43 +1100 (AEDT)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S932471AbdJXPZm (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 24 Oct 2017 11:25:42 -0400", "from mx2.suse.de ([195.135.220.15]:36115 \"EHLO mx2.suse.de\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S932330AbdJXPZc (ORCPT <rfc822;linux-ext4@vger.kernel.org>);\n\tTue, 24 Oct 2017 11:25:32 -0400", "from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254])\n\tby mx2.suse.de (Postfix) with ESMTP id 29687AD3A;\n\tTue, 24 Oct 2017 15:25:28 +0000 (UTC)", "by quack2.suse.cz (Postfix, from userid 1000)\n\tid 68F2C1E35D8; Tue, 24 Oct 2017 17:25:27 +0200 (CEST)" ], "X-Virus-Scanned": "by amavisd-new at test-mx.suse.de", "From": "Jan Kara <jack@suse.cz>", "To": "Dan Williams <dan.j.williams@intel.com>", "Cc": "Ross Zwisler <ross.zwisler@linux.intel.com>,\n\tChristoph Hellwig <hch@infradead.org>,\n\t<linux-ext4@vger.kernel.org>, linux-nvdimm@lists.01.org,\n\t<linux-fsdevel@vger.kernel.org>, <linux-xfs@vger.kernel.org>,\n\tlinux-api@vger.kernel.org, <linux-mm@kvack.org>, Jan Kara <jack@suse.cz>", "Subject": "[PATCH 11/17] dax: Allow tuning whether dax_insert_mapping_entry()\n\tdirties entry", "Date": "Tue, 24 Oct 2017 17:24:08 +0200", "Message-Id": "<20171024152415.22864-12-jack@suse.cz>", "X-Mailer": "git-send-email 2.12.3", "In-Reply-To": "<20171024152415.22864-1-jack@suse.cz>", "References": "<20171024152415.22864-1-jack@suse.cz>", "Sender": "linux-ext4-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<linux-ext4.vger.kernel.org>", "X-Mailing-List": "linux-ext4@vger.kernel.org" }, "content": "Currently we dirty radix tree entry whenever dax_insert_mapping_entry()\ngets called for a write fault. With synchronous page faults we would\nlike to insert clean radix tree entry and dirty it only once we call\nfdatasync() and update page tables to save some unnecessary cache\nflushing. Add 'dirty' argument to dax_insert_mapping_entry() for that.\n\nReviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>\nReviewed-by: Christoph Hellwig <hch@lst.de>\nSigned-off-by: Jan Kara <jack@suse.cz>\n---\n fs/dax.c | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)", "diff": "diff --git a/fs/dax.c b/fs/dax.c\nindex 5ddf15161390..efc210ff6665 100644\n--- a/fs/dax.c\n+++ b/fs/dax.c\n@@ -526,13 +526,13 @@ static int copy_user_dax(struct block_device *bdev, struct dax_device *dax_dev,\n static void *dax_insert_mapping_entry(struct address_space *mapping,\n \t\t\t\t struct vm_fault *vmf,\n \t\t\t\t void *entry, sector_t sector,\n-\t\t\t\t unsigned long flags)\n+\t\t\t\t unsigned long flags, bool dirty)\n {\n \tstruct radix_tree_root *page_tree = &mapping->page_tree;\n \tvoid *new_entry;\n \tpgoff_t index = vmf->pgoff;\n \n-\tif (vmf->flags & FAULT_FLAG_WRITE)\n+\tif (dirty)\n \t\t__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);\n \n \tif (dax_is_zero_entry(entry) && !(flags & RADIX_DAX_ZERO_PAGE)) {\n@@ -569,7 +569,7 @@ static void *dax_insert_mapping_entry(struct address_space *mapping,\n \t\tentry = new_entry;\n \t}\n \n-\tif (vmf->flags & FAULT_FLAG_WRITE)\n+\tif (dirty)\n \t\tradix_tree_tag_set(page_tree, index, PAGECACHE_TAG_DIRTY);\n \n \tspin_unlock_irq(&mapping->tree_lock);\n@@ -881,7 +881,7 @@ static int dax_load_hole(struct address_space *mapping, void *entry,\n \t}\n \n \tentry2 = dax_insert_mapping_entry(mapping, vmf, entry, 0,\n-\t\t\tRADIX_DAX_ZERO_PAGE);\n+\t\t\tRADIX_DAX_ZERO_PAGE, false);\n \tif (IS_ERR(entry2)) {\n \t\tret = VM_FAULT_SIGBUS;\n \t\tgoto out;\n@@ -1182,7 +1182,7 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp,\n \n \t\tentry = dax_insert_mapping_entry(mapping, vmf, entry,\n \t\t\t\t\t\t dax_iomap_sector(&iomap, pos),\n-\t\t\t\t\t\t 0);\n+\t\t\t\t\t\t 0, write);\n \t\tif (IS_ERR(entry)) {\n \t\t\terror = PTR_ERR(entry);\n \t\t\tgoto error_finish_iomap;\n@@ -1258,7 +1258,7 @@ static int dax_pmd_load_hole(struct vm_fault *vmf, struct iomap *iomap,\n \t\tgoto fallback;\n \n \tret = dax_insert_mapping_entry(mapping, vmf, entry, 0,\n-\t\t\tRADIX_DAX_PMD | RADIX_DAX_ZERO_PAGE);\n+\t\t\tRADIX_DAX_PMD | RADIX_DAX_ZERO_PAGE, false);\n \tif (IS_ERR(ret))\n \t\tgoto fallback;\n \n@@ -1379,7 +1379,7 @@ static int dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp,\n \n \t\tentry = dax_insert_mapping_entry(mapping, vmf, entry,\n \t\t\t\t\t\tdax_iomap_sector(&iomap, pos),\n-\t\t\t\t\t\tRADIX_DAX_PMD);\n+\t\t\t\t\t\tRADIX_DAX_PMD, write);\n \t\tif (IS_ERR(entry))\n \t\t\tgoto finish_iomap;\n \n", "prefixes": [ "11/17" ] }