Curve is a sandbox project hosted by the CNCF Foundation. It's cloud-native, high-performance, and easy to operate. Curve is an open-source distributed storage system for block and shared file storage.
when run tpc-ds test, the rename operator return failed: -1, internal error!
the log print:
Unlink find nlink <= 0, nlink =
To Reproduce (复现方法)
multi client do rename dir operator parallel, the nlink of parent dir would bigger than expected, or do rename dir and create dir parallel, the nlink of parent dir would less than expected.
Expected behavior (期望行为)
nlink of parent dir, should correspond to it's sub dir after parallel operator!
after rename operator, on client side to unlink src parent nlink is read-modify-write, which is not an atomic operator, conflict with create/remove dir or other client rename!
Describe the bug (描述bug)
when run tpc-ds test, the rename operator return
failed: -1, internal error!
the log print:
Unlink find nlink <= 0, nlink =
To Reproduce (复现方法)
multi client do rename dir operator parallel, the nlink of parent dir would bigger than expected, or do rename dir and create dir parallel, the nlink of parent dir would less than expected.
Expected behavior (期望行为)
nlink of parent dir, should correspond to it's sub dir after parallel operator!
Versions (各种版本)
OS: ubuntu22 Compiler: default branch: release2.7 commit id: b1254187d18f53c6235a9e55d013645f8e35066d
Additional context/screenshots (更多上下文/截图)
after rename operator, on client side to unlink src parent nlink is read-modify-write, which is not an atomic operator, conflict with create/remove dir or other client rename!