MDCache中handle_cache_expire()函數處理MCacheExpire類消息。發送MCacheExpire類消息的MDS進程已經出現了若干個inode、dir以及dentry在cache中超時的狀況,所以發送MCacheExpire類消息的MDS進程須要將這些消息同步到其餘的MDS進程上。接收到MCacheExpire類消息的MDS進程首先遍歷MCacheExpire類消息中的realms數組,對於MDS進程的export_state處於EXPORTING/LOGGINGFINISH/WARNING/NOTIFYING則將MCacheExpire類消息保存到delayed_expire數組中。遍歷MDCacheExpire類消息中的inodes數組且調用inode_remove_replica()函數將inode信息從MDCache中刪除,以後遍歷MDCacheExpire類消息中的dirs數組且調用dir->remove_replica()函數將dir信息從MDCache中刪除,最後遍歷dentries數組且調用dentry_remove_replica()函數將dentry信息從MDCache中刪除。node