sapling/eden/fs/inodes
Xavier Deguillard ec5a6ef1f0 nfs: implement the READDIR RPC
Summary:
The NFS readdir turns out to be pretty similar to the FUSE one, with a couple
of differences. For one, it only populates the directory entry name, it also
puts a limit on the total size of the serialized result, including all the
NFS/XDR overhead.

It is not specified if the . and .. entries need to be returned, but since the
NFS spec is usually pretty explicit about these and makes it clear that this is
for the most part a client burden, I didn't add these. I may have to revisit
this later when I get to manually browse a repository.

Since the READDIR RPC doesn't populate any filehandle, the client will have to
issue a LOOKUP RPC for each entries, potentially leading to some
inefficiencies. A future diff will implement the READDIRPLUS to fix these.

Reviewed By: chadaustin

Differential Revision: D26802310

fbshipit-source-id: b821b57021d0c2dca33427975b1acd665173bc5c
2021-03-18 10:08:50 -07:00
..
overlay add new operation-aware APIs to IOverlay 2021-03-02 09:58:16 -08:00
sqliteoverlay sqlite: release StatementCache before releasing SqliteDatabase 2021-03-16 23:30:22 -07:00
test fuse: rename DirList into FuseDirList 2021-03-18 10:08:49 -07:00
treeoverlay overlay: use PersistentSqliteStatement in TreeOverlayStore 2021-03-15 12:01:48 -07:00
CacheHint.h Tidy up license headers 2019-10-11 05:28:23 -07:00
CheckoutAction.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
CheckoutAction.h Avoid overfetching in checkout 2020-11-03 10:58:22 -08:00
CheckoutContext.cpp Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
CheckoutContext.h logging for thrift object fetch: checkout 2020-07-26 23:09:40 -07:00
CMakeLists.txt nfs: implement SETATTR RPC 2021-03-11 08:31:07 -08:00
DeferredDiffEntry.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
DeferredDiffEntry.h add an ObjectFetchContext interface 2020-02-05 13:15:01 -08:00
DirEntry.cpp remove dependency on glog 2020-11-10 16:31:15 -08:00
DirEntry.h remove dependency on glog 2020-11-10 16:31:15 -08:00
EdenDispatcherFactory.cpp fs: add an NfsDispatcher 2021-02-17 23:32:38 -08:00
EdenDispatcherFactory.h fs: add an NfsDispatcher 2021-02-17 23:32:38 -08:00
EdenMount.cpp inodes: thread an ObjectContext into unlink/rmdir 2021-03-04 17:51:50 -08:00
EdenMount.h inodes: mount plumbing 2021-02-22 22:40:38 -08:00
EdenMountError.h Tidy up license headers 2019-10-11 05:28:23 -07:00
FileInode.cpp inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
FileInode.h inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
FuseDispatcherImpl.cpp fuse: rename DirList into FuseDirList 2021-03-18 10:08:49 -07:00
FuseDispatcherImpl.h fuse: rename DirList into FuseDirList 2021-03-18 10:08:49 -07:00
GlobNode.cpp Rename Try::throwIfFailed -> throwUnlessValue 2021-01-11 13:05:17 -08:00
GlobNode.h Allow specifying commits to match against and prefetch in globFiles 2020-10-29 13:34:06 -07:00
InodeBase.cpp Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
InodeBase.h inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeError.cpp allow querying Overlay file size outside of FileInode 2020-10-23 11:16:10 -07:00
InodeError.h Tidy up license headers 2019-10-11 05:28:23 -07:00
InodeLoader.h edenfs: change PathMap CaseSensitivity to runtime option 2020-09-18 08:43:14 -07:00
InodeMap.cpp inodes: make the fs refcount a flag on Windows 2020-12-04 09:13:37 -08:00
InodeMap.h inodes: rename the fuseRefcount in InodeMap 2020-11-16 09:03:18 -08:00
InodeMetadata.cpp inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeMetadata.h inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeNumber.cpp inodes: move fuse/InodeNumber.{cpp,h} into inodes/ 2020-09-02 12:15:48 -07:00
InodeNumber.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtr-defs.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtr.cpp Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
InodePtr.h remove dependency on glog 2020-11-10 16:31:15 -08:00
InodePtrFwd.h Tidy up license headers 2019-10-11 05:28:23 -07:00
InodeTable.h Apply clang-format update fixes 2021-01-10 10:06:29 -08:00
InodeTimestamps.cpp inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
InodeTimestamps.h inodes: make InodeBase::setattr independant from FUSE 2021-03-05 11:11:19 -08:00
IOverlay.h add new operation-aware APIs to IOverlay 2021-03-02 09:58:16 -08:00
NfsDispatcherImpl.cpp nfs: implement the READDIR RPC 2021-03-18 10:08:50 -07:00
NfsDispatcherImpl.h nfs: implement the READDIR RPC 2021-03-18 10:08:50 -07:00
Overlay.cpp overlay: add option to turn on TreeOverlay 2021-03-02 09:58:18 -08:00
Overlay.h inodes: make loadOverlayDir to return empty dir when missing 2021-03-02 09:58:18 -08:00
OverlayFile.cpp implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
OverlayFile.h implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
OverlayFileAccess.cpp implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
OverlayFileAccess.h implement FUSE_FALLOCATE 2021-01-20 19:04:59 -08:00
ParentInodeInfo.h Tidy up license headers 2019-10-11 05:28:23 -07:00
PrjfsDispatcherImpl.cpp inodes: thread an ObjectContext into unlink/rmdir 2021-03-04 17:51:50 -08:00
PrjfsDispatcherImpl.h inodes: move dispatchers around 2021-02-10 11:52:06 -08:00
RequestContext.cpp telemetry: switch to using quantile stats instead of histograms 2021-02-14 16:37:08 -08:00
RequestContext.h telemetry: switch to using quantile stats instead of histograms 2021-02-14 16:37:08 -08:00
ServerState.cpp nfs: add NfsServer class 2021-02-09 12:47:11 -08:00
ServerState.h nfs: add NfsServer class 2021-02-09 12:47:11 -08:00
Traverse.cpp inodes: make loadOverlayDir to return empty dir when missing 2021-03-02 09:58:18 -08:00
Traverse.h inodes: rename FUSE refcount to fs refcount 2020-11-04 17:34:01 -08:00
TreeInode.cpp nfs: implement the READDIR RPC 2021-03-18 10:08:50 -07:00
TreeInode.h nfs: implement the READDIR RPC 2021-03-18 10:08:50 -07:00
TreePrefetchLease.cpp limit the number of tree prefetch operations that can run in parallel 2019-12-20 16:14:19 -08:00
TreePrefetchLease.h fix one case of logging of null ClientPid 2020-08-31 10:05:02 -07:00