file_systems: add entry_cache_(add/missing) in btrfs,ext2,exfat lookup methods.

Change-Id: I77857421a65f371bc885f1d4eb66ef2ab4376e56
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5252
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Jérôme Duval
2022-04-28 19:16:48 +00:00
committed by Adrien Destugues
parent 2cecdeed2e
commit cf5f513b3b
3 changed files with 13 additions and 2 deletions
@@ -382,8 +382,12 @@ btrfs_lookup(fs_volume* _volume, fs_vnode* _directory, const char* name,
return status;
status = DirectoryIterator(directory).Lookup(name, strlen(name), _vnodeID);
if (status != B_OK)
if (status != B_OK) {
if (status == B_ENTRY_NOT_FOUND)
entry_cache_add_missing(volume->ID(), directory->ID(), name);
return status;
}
entry_cache_add(volume->ID(), directory->ID(), name, *_vnodeID);
return get_vnode(volume->FSVolume(), *_vnodeID, NULL);
}
@@ -397,10 +397,13 @@ exfat_lookup(fs_volume* _volume, fs_vnode* _directory, const char* name,
status = DirectoryIterator(directory).Lookup(name, strlen(name), _vnodeID);
if (status != B_OK) {
ERROR("exfat_lookup: name %s (%s)\n", name, strerror(status));
if (status == B_ENTRY_NOT_FOUND)
entry_cache_add_missing(volume->ID(), directory->ID(), name);
return status;
}
TRACE("exfat_lookup: ID %" B_PRIdINO "\n", *_vnodeID);
entry_cache_add(volume->ID(), directory->ID(), name, *_vnodeID);
return get_vnode(volume->FSVolume(), *_vnodeID, NULL);
}
@@ -467,8 +467,12 @@ ext2_lookup(fs_volume* _volume, fs_vnode* _directory, const char* name,
ObjectDeleter<DirectoryIterator> iteratorDeleter(iterator);
status = iterator->FindEntry(name, _vnodeID);
if (status != B_OK)
if (status != B_OK) {
if (status == B_ENTRY_NOT_FOUND)
entry_cache_add_missing(volume->ID(), directory->ID(), name);
return status;
}
entry_cache_add(volume->ID(), directory->ID(), name, *_vnodeID);
return get_vnode(volume->FSVolume(), *_vnodeID, NULL);
}