diff options
author | Gao Xiang <gaoxiang25@huawei.com> | 2020-02-20 03:46:42 +0100 |
---|---|---|
committer | Gao Xiang <gaoxiang25@huawei.com> | 2020-03-03 16:27:25 +0100 |
commit | 64094a04414f0b2fb7e31e1c57a67e91e390d66c (patch) | |
tree | e39ebae96a3290a69216c187d4298c7da8bdc3a8 /fs/erofs/super.c | |
parent | Linux 5.6-rc4 (diff) | |
download | linux-64094a04414f0b2fb7e31e1c57a67e91e390d66c.tar.xz linux-64094a04414f0b2fb7e31e1c57a67e91e390d66c.zip |
erofs: convert workstn to XArray
XArray has friendly APIs and it will replace the old radix
tree in the near future.
This convert makes use of __xa_cmpxchg when inserting on
a just inserted item by other thread. In detail, instead
of totally looking up again as what we did for the old
radix tree, it will try to legitimize the current in-tree
item in the XArray therefore more effective.
In addition, naming is rather a challenge for non-English
speaker like me. The basic idea of workstn is to provide
a runtime sparse array with items arranged in the physical
block number order. Such items (was called workgroup) can be
used to record compress clusters or for later new features.
However, both workgroup and workstn seem not good names from
whatever point of view, so I'd like to rename them as pslot
and managed_pslots to stand for physical slots. This patch
handles the second as a part of the radix tree convert.
Cc: Matthew Wilcox <willy@infradead.org>
Link: https://lore.kernel.org/r/20200220024642.91529-1-gaoxiang25@huawei.com
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Diffstat (limited to 'fs/erofs/super.c')
-rw-r--r-- | fs/erofs/super.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 057e6d7b5b7f..b514c67e5fc2 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -425,7 +425,7 @@ static int erofs_fill_super(struct super_block *sb, void *data, int silent) sb->s_flags &= ~SB_POSIXACL; #ifdef CONFIG_EROFS_FS_ZIP - INIT_RADIX_TREE(&sbi->workstn_tree, GFP_ATOMIC); + xa_init(&sbi->managed_pslots); #endif /* get the root inode */ |