从代码中看,有如下四种情况可以出发afr_launch_self_heal,从而导致afr_self_heal的执行:
reason = "lookup detected pending operations"; ======就是afr_lookup
在afr模块中的调用先后关系是 afr_lookup ->afr_lookup_cbk -> afr_lookup_done -> afr_lookup_perform_self_heal -> afr_launch_self_heal
reason = "checksums of directory differ"; ======afr_opendir
afr_opendir -> afr_opendir_cbk -> afr_examine_dir -> afr_examine_dir_readdir_cbk -> afr_launch_self_heal.
reason = "subvolume came online";
snprintf (reason, sizeof (reason), "stale subvolume %d detected", st_child);
主要的修复都是在afr_self_heal去调用的
还有从其他网站看见的文章