- fixes and improvements in GNS:
- making it work in some stat cases (stat target is behind mount object) - making it work in sys_mount() control path (is mount point is behind mount object) - to avoid deadlock is mount case is_subdir() is used for detecting is current dentry is parent of dentry being in progress of mounting. - do not mount on revalidate if there is not valid @nd applied. - using nd->flags if possible for both lookup and revalidate cases. - added debug info printing in mounting cases. - totaly removed -ERESTARTSYS approach stuff. - fixed bug with many waiters on ->ll_gns_mount_finished - only first of them will find GNS in IDLE state and will start mounting and the rest will assert on wrong GNS state (MOUNTING) - reinit ->ll_gns_mount_finished after all waiters are awakaned, this fixes the bug when after first using this completion it does not functions, because complete_all() has slighly diff. semanthics then complete() and namely does not just decrease ->done but sets it to MAX_INT/2. - fully rewritten sanity-gns.sh to make it more flexible and easy to add new sanity tests.
Showing
- lustre/llite/dcache.c 14 additions, 8 deletionslustre/llite/dcache.c
- lustre/llite/llite_gns.c 29 additions, 37 deletionslustre/llite/llite_gns.c
- lustre/llite/llite_internal.h 1 addition, 0 deletionslustre/llite/llite_internal.h
- lustre/llite/llite_lib.c 1 addition, 0 deletionslustre/llite/llite_lib.c
- lustre/llite/namei.c 12 additions, 10 deletionslustre/llite/namei.c
- lustre/tests/sanity-gns.sh 303 additions, 250 deletionslustre/tests/sanity-gns.sh
Loading
Please register or sign in to comment