-
Yury Umanets authored
- fixed declation of OBD_MD.. flags. They should be declared like the following: #define OBD_MD_FLALL (0xffffffffffffffffLL) to show compiller explicitly that they are 64bit value and should considered as such. - fixed md_reint_rename(). It should first check if objects are the same then check if tgt is subdir of src because for the same inodes is_subdir() returns 1 and mds_reint_rename() for renaming object into itself it returned -EINVAL; - added asserts in LMV checking if body->valid contains valid fid before accessing it to check if object is splitted. - in lmv_intent.c after md_intent_lock() checking not only error code, but also disposition, because there are cases when we're interested in name which does not exist, lock is not taken and policy_res2 is cleared in mds_intent_policy(). In this case we should do nothing (especially access body->id1 in LMV), but exit. This is because body->id1 is zero and (body->valid & OBD_MD_FID) == 0 because say mds_getattr_lock() failed before filling out as inode is not found.
Yury Umanets authored- fixed declation of OBD_MD.. flags. They should be declared like the following: #define OBD_MD_FLALL (0xffffffffffffffffLL) to show compiller explicitly that they are 64bit value and should considered as such. - fixed md_reint_rename(). It should first check if objects are the same then check if tgt is subdir of src because for the same inodes is_subdir() returns 1 and mds_reint_rename() for renaming object into itself it returned -EINVAL; - added asserts in LMV checking if body->valid contains valid fid before accessing it to check if object is splitted. - in lmv_intent.c after md_intent_lock() checking not only error code, but also disposition, because there are cases when we're interested in name which does not exist, lock is not taken and policy_res2 is cleared in mds_intent_policy(). In this case we should do nothing (especially access body->id1 in LMV), but exit. This is because body->id1 is zero and (body->valid & OBD_MD_FID) == 0 because say mds_getattr_lock() failed before filling out as inode is not found.
mdc_locks.c 25.37 KiB