erofs: fix erofs_insert_workgroup() lockref usage
authorGao Xiang <hsiangkao@linux.alibaba.com>
Tue, 31 Oct 2023 06:05:24 +0000 (14:05 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Tue, 31 Oct 2023 10:59:49 +0000 (18:59 +0800)
commit1a0ac8bd7a4fa5b2f4ef14c3b1e9d6e5a5faae06
tree44fc7354129097ff2775dcc4c2ede3e3860929e6
parentf5deddce60b50b55bcafeebaab1408d203b0f204
erofs: fix erofs_insert_workgroup() lockref usage

As Linus pointed out [1], lockref_put_return() is fundamentally
designed to be something that can fail.  It behaves as a fastpath-only
thing, and the failure case needs to be handled anyway.

Actually, since the new pcluster was just allocated without being
populated, it won't be accessed by others until it is inserted into
XArray, so lockref helpers are actually unneeded here.

Let's just set the proper reference count on initializing.

[1] https://lore.kernel.org/r/CAHk-=whCga8BeQnJ3ZBh_Hfm9ctba_wpF444LpwRybVNMzO6Dw@mail.gmail.com

Fixes: 7674a42f35ea ("erofs: use struct lockref to replace handcrafted approach")
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20231031060524.1103921-1-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
fs/erofs/utils.c
fs/erofs/zdata.c