staging: erofs: introduce workstation for decompression
authorGao Xiang <gaoxiang25@huawei.com>
Thu, 26 Jul 2018 12:22:05 +0000 (20:22 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jul 2018 15:24:10 +0000 (17:24 +0200)
commite7e9a307be9d75ecc3bf20b362af88140dfb4304
treea640d916a61f5945c0f1f204fbdeafbd6471d330
parenta15813126272e5f81311e5e1330162baa40e5b0a
staging: erofs: introduce workstation for decompression

This patch introduces another concept used by the unzip
subsystem called 'workstation'. It can be seen as a sparse
array that stores pointers pointed to data structures
related to the corresponding physical blocks.

All lookup cases are protected by RCU read lock. Besides,
reference count and spin_lock are also introduced to
manage its lifetime and serialize all update operations.

'workstation' is currently implemented on the in-kernel
radix tree approach for backward compatibility.
With the evolution of linux kernel, it could be migrated
into XArray implementation in the future.

Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/erofs/internal.h
drivers/staging/erofs/super.c
drivers/staging/erofs/utils.c