Skip to content
Snippets Groups Projects
  • Yury Umanets's avatar
    dd69b18a
    - returned back OBD_MD_FID. For many reasons its removal was wrong. · dd69b18a
    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.
    dd69b18a
    History
    - returned back OBD_MD_FID. For many reasons its removal was wrong.
    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