Re: [PATCH v4 07/12] dax: coordinate locking for offsets in PMD range
From: Jan Kara <jack@suse.cz>
Date: 2016-10-03 09:55:18
Also in:
linux-fsdevel, linux-mm, linux-xfs, lkml, nvdimm
On Thu 29-09-16 16:49:25, Ross Zwisler wrote:
quoted hunk ↗ jump to hunk
DAX radix tree locking currently locks entries based on the unique combination of the 'mapping' pointer and the pgoff_t 'index' for the entry. This works for PTEs, but as we move to PMDs we will need to have all the offsets within the range covered by the PMD to map to the same bit lock. To accomplish this, for ranges covered by a PMD entry we will instead lock based on the page offset of the beginning of the PMD entry. The 'mapping' pointer is still used in the same way. Signed-off-by: Ross Zwisler <redacted> --- fs/dax.c | 37 ++++++++++++++++++++++++------------- include/linux/dax.h | 2 +- mm/filemap.c | 2 +- 3 files changed, 26 insertions(+), 15 deletions(-)diff --git a/fs/dax.c b/fs/dax.c index baef586..406feea 100644 --- a/fs/dax.c +++ b/fs/dax.c@@ -64,10 +64,17 @@ static int __init init_dax_wait_table(void) } fs_initcall(init_dax_wait_table); +static pgoff_t dax_entry_start(pgoff_t index, void *entry) +{ + if (RADIX_DAX_TYPE(entry) == RADIX_DAX_PMD) + index &= (PMD_MASK >> PAGE_SHIFT);
Hum, but if we shift right, top bits of PMD_MASK will become zero - not something we want I guess... You rather want to mask with something like: ~((1UL << (PMD_SHIFT - PAGE_SHIFT)) - 1)
quoted hunk ↗ jump to hunk
@@ -447,10 +457,11 @@ restart: return entry; } -void dax_wake_mapping_entry_waiter(struct address_space *mapping, +void dax_wake_mapping_entry_waiter(void *entry, struct address_space *mapping, pgoff_t index, bool wake_all)
Nitpick: Ordering of arguments would look more logical to me like: dax_wake_mapping_entry_waiter(mapping, index, entry, wake_all) Other than that the patch looks good to me. Honza -- Jan Kara [off-list ref] SUSE Labs, CR -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>