Bug #43272 ยป 0001-ceph-fix-race-in-concurrent-__ceph_remove_cap-invoca.patch
fs/ceph/caps.c | ||
---|---|---|
{
|
||
struct ceph_mds_session *session = cap->session;
|
||
struct ceph_inode_info *ci = cap->ci;
|
||
struct ceph_mds_client *mdsc =
|
||
ceph_sb_to_client(ci->vfs_inode.i_sb)->mdsc;
|
||
struct ceph_mds_client *mdsc;
|
||
int removed = 0;
|
||
/* 'ci' being NULL means he remove have already occurred */
|
||
if (!ci) {
|
||
dout("%s: cap inode is NULL\n", __func__);
|
||
return;
|
||
}
|
||
dout("__ceph_remove_cap %p from %p\n", cap, &ci->vfs_inode);
|
||
mdsc = ceph_inode_to_client(&ci->vfs_inode)->mdsc;
|
||
/* remove from inode's cap rbtree, and clear auth cap */
|
||
rb_erase(&cap->ci_node, &ci->i_caps);
|
||
if (ci->i_auth_cap == cap) {
|