changes to protect directory splitting from concurrent modifies/lookups:
- mds_fid2locked_dentry() takes UPDATE lock on the inode. depending on the given mode for LOOKUP lock new routine mds_lock_mode_for_dir() learns what mode to use for UPDATE lock. it could be: - LCK_CR - lookup case. it protects directory from concurrent splitting and don't invalidate client cache readdir() - LCK_CW - modify case. it protects directory from concurrent splitting and invalidate client cache for readdir() - LCK_EX - modify with possible splitting. protects from any parallel access - mds_getattr_name(), mds_open(), mds_reint_setattr(), mds_reint_create(), mds_get_parent_child_locked(), mds_reint_unlink(), mds_reint_rename() and mds_get_parents_children_lock() have been modified to play new game with directory locking - mds_splitting_expected() predicts splitting possibility
Showing
- lustre/include/linux/lustre_mds.h 1 addition, 1 deletionlustre/include/linux/lustre_mds.h
- lustre/mds/handler.c 61 additions, 20 deletionslustre/mds/handler.c
- lustre/mds/mds_internal.h 4 additions, 1 deletionlustre/mds/mds_internal.h
- lustre/mds/mds_lmv.c 43 additions, 17 deletionslustre/mds/mds_lmv.c
- lustre/mds/mds_open.c 4 additions, 4 deletionslustre/mds/mds_open.c
- lustre/mds/mds_reint.c 54 additions, 51 deletionslustre/mds/mds_reint.c
Loading
Please register or sign in to comment