Bug #1429
closedcfuse assert failed assert(diri->dn_set.size() < 2)
0%
Description
This assertion happens when a directory is moved on one client, and then the other client changes to that directory. I'm able to reproduce it reliably with the following pattern:
node1:
mkdir /c/d1
mkdir /c/d2
node2:
cd /c/
ls
node1:
cd /c/
mv d2 d1/
node2:
cd /c/d1/d2
ls
../../src/client/Client.cc: 4280: FAILED assert(diri->dn_set.size() < 2)
ceph version (commit:)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x89) [0x7468c1]
2: (Client::readdir_r_cb(dir_result_t*, int ()(void, dirent*, stat*, int, long), void*)+0x408) [0x68119c]
3: /usr/ceph/bin/cfuse() [0x655660]
4: (()+0x12546) [0x7ffff7bb9546]
5: (fuse_session_loop()+0x75) [0x7ffff7bb7cb5]
6: (ceph_fuse_ll_main(Client*, int, char const**, int)+0x4fd) [0x655fc7]
7: (main()+0x5ad) [0x64cad4]
8: (_libc_start_main()+0xff) [0x7ffff630deff]
9: /usr/ceph/bin/cfuse() [0x64c3b9]
ceph version (commit:)
1: (ceph::_ceph_assert_fail(char const*, char const*, int, char const*)+0x89) [0x7468c1]
2: (Client::readdir_r_cb(dir_result_t*, int ()(void, dirent*, stat*, int, long), void*)+0x408) [0x68119c]
3: /usr/ceph/bin/cfuse() [0x655660]
4: (()+0x12546) [0x7ffff7bb9546]
5: (fuse_session_loop()+0x75) [0x7ffff7bb7cb5]
6: (ceph_fuse_ll_main(Client*, int, char const**, int)+0x4fd) [0x655fc7]
7: (main()+0x5ad) [0x64cad4]
8: (__libc_start_main()+0xff) [0x7ffff630deff]
9: /usr/ceph/bin/cfuse() [0x64c3b9]