Re: [PATCH 0/5] Fix races & improve the radix tree iterator patterns
On Thu, Jan 28, 2016 at 10:17 AM, Konstantin Khlebnikov wrote: > On Thu, Jan 28, 2016 at 12:17 AM, Matthew Wilcox > wrote: >> From: Matthew Wilcox >> >> The first two patches here are bugfixes, and I would like to see them >> make their way into stable ASAP since they can lead to data corruption >> (very low probabilty). >> >> The last three patches do not qualify as bugfixes. They simply improve >> the standard pattern used to do radix tree iterations by removing the >> 'goto restart' part. Partially this is because this is an ugly & >> confusing goto, and partially because with multi-order entries in the >> tree, it'll be more likely that we'll see an indirect_ptr bit, and >> it's more efficient to kep going from the point of the iteration we're >> currently in than restart from the beginning each time. > > Ack whole set. > > I think we should go deeper in hide dereference/retry inside iterator. > Something like radix_tree_for_each_data(data, slot, root, iter, start). > I'll prepare patch for that. After second thought: there'ra not so many users for new sugar. This scheme with radix_tree_deref_retry - radix_tree_iter_retry complicated but fine. > >> >> Matthew Wilcox (5): >> radix-tree: Fix race in gang lookup >> hwspinlock: Fix race between radix tree insertion and lookup >> btrfs: Use radix_tree_iter_retry() >> mm: Use radix_tree_iter_retry() >> radix-tree,shmem: Introduce radix_tree_iter_next() >> >> drivers/hwspinlock/hwspinlock_core.c | 4 +++ >> fs/btrfs/tests/btrfs-tests.c | 3 +- >> include/linux/radix-tree.h | 31 + >> lib/radix-tree.c | 12 ++-- >> mm/filemap.c | 53 >> >> mm/shmem.c | 30 ++-- >> 6 files changed, 78 insertions(+), 55 deletions(-) >> >> -- >> 2.7.0.rc3 >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majord...@kvack.org. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: mailto:"d...@kvack.org";> em...@kvack.org
Re: [PATCH 0/5] Fix races & improve the radix tree iterator patterns
On Thu, Jan 28, 2016 at 12:17 AM, Matthew Wilcox wrote: > From: Matthew Wilcox > > The first two patches here are bugfixes, and I would like to see them > make their way into stable ASAP since they can lead to data corruption > (very low probabilty). > > The last three patches do not qualify as bugfixes. They simply improve > the standard pattern used to do radix tree iterations by removing the > 'goto restart' part. Partially this is because this is an ugly & > confusing goto, and partially because with multi-order entries in the > tree, it'll be more likely that we'll see an indirect_ptr bit, and > it's more efficient to kep going from the point of the iteration we're > currently in than restart from the beginning each time. Ack whole set. I think we should go deeper in hide dereference/retry inside iterator. Something like radix_tree_for_each_data(data, slot, root, iter, start). I'll prepare patch for that. > > Matthew Wilcox (5): > radix-tree: Fix race in gang lookup > hwspinlock: Fix race between radix tree insertion and lookup > btrfs: Use radix_tree_iter_retry() > mm: Use radix_tree_iter_retry() > radix-tree,shmem: Introduce radix_tree_iter_next() > > drivers/hwspinlock/hwspinlock_core.c | 4 +++ > fs/btrfs/tests/btrfs-tests.c | 3 +- > include/linux/radix-tree.h | 31 + > lib/radix-tree.c | 12 ++-- > mm/filemap.c | 53 > > mm/shmem.c | 30 ++-- > 6 files changed, 78 insertions(+), 55 deletions(-) > > -- > 2.7.0.rc3 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majord...@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: mailto:"d...@kvack.org";> em...@kvack.org
[PATCH 0/5] Fix races & improve the radix tree iterator patterns
From: Matthew Wilcox The first two patches here are bugfixes, and I would like to see them make their way into stable ASAP since they can lead to data corruption (very low probabilty). The last three patches do not qualify as bugfixes. They simply improve the standard pattern used to do radix tree iterations by removing the 'goto restart' part. Partially this is because this is an ugly & confusing goto, and partially because with multi-order entries in the tree, it'll be more likely that we'll see an indirect_ptr bit, and it's more efficient to kep going from the point of the iteration we're currently in than restart from the beginning each time. Matthew Wilcox (5): radix-tree: Fix race in gang lookup hwspinlock: Fix race between radix tree insertion and lookup btrfs: Use radix_tree_iter_retry() mm: Use radix_tree_iter_retry() radix-tree,shmem: Introduce radix_tree_iter_next() drivers/hwspinlock/hwspinlock_core.c | 4 +++ fs/btrfs/tests/btrfs-tests.c | 3 +- include/linux/radix-tree.h | 31 + lib/radix-tree.c | 12 ++-- mm/filemap.c | 53 mm/shmem.c | 30 ++-- 6 files changed, 78 insertions(+), 55 deletions(-) -- 2.7.0.rc3