Currently for an typical namenode operation a path can be resolved multiple times. Usually the FSPermissionChecker first takes the path string as input and resolve the path before the real checking. After permission checking the path is then resolved again (and again) for real operations in FSNamesystem and FSDirectory. Ideally we should resolve the path only once, and use INodesInPath internally afterwards. As a first step, we can start from avoiding path resolving in FSPermissionChecker.