Description of problem: the function inode_needs_lookup: 1953 uint64_t need_lookup = 0; 1954 gf_boolean_t ret = _gf_false; 1955 int op_ret = -1; 1956 1957 if (!inode || !this) 1958 return ret; 1959 1960 ret = _gf_true; 1961 1962 op_ret = inode_ctx_get (inode, this, &need_lookup); 1963 if (!op_ret && need_lookup == LOOKUP_NOT_NEEDED) { 1964 ret = _gf_false; 1965 } 1966 1967 return ret; The inode will be state LOOKUP_NOT_NEEDED after checked by this function. It will be wrong if the next lookup fop on this inode go to failed.And maybe there will be a race condition, the other thread will check this inode's state before it's current lookup finish. Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
REVIEW: https://review.gluster.org/17002 (fuse: Shouldn't set inode_ctx to be LOOKUP_NOT_NEEDED before lookup fop finish.) posted (#1) for review on master by Zhou Zhengping (johnzzpcrystal)
'inode_need_lookup()' itself is now now (glusterfs-6.x) removed.