remove the fusell namespace

Summary: Move everything in the `facebook::eden::fusell` namespace to `facebook::eden`

Reviewed By: chadaustin

Differential Revision: D7314458

fbshipit-source-id: db56d3e5fb898235e1376ac76077cf780d9b4698
This commit is contained in:
Adam Simpkins 2018-03-19 17:01:15 -07:00 committed by Facebook Github Bot
parent da3c070d70
commit bfcf4c574a
62 changed files with 437 additions and 562 deletions

View File

@ -7,11 +7,10 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "BufVec.h"
#include "eden/fs/fuse/BufVec.h"
namespace facebook {
namespace eden {
namespace fusell {
BufVec::Buf::Buf(std::unique_ptr<folly::IOBuf> buf) : buf(std::move(buf)) {}
@ -51,6 +50,6 @@ std::string BufVec::copyData() const {
}
return rv;
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -13,7 +13,6 @@
namespace facebook {
namespace eden {
namespace fusell {
/**
* Represents data that may come from a buffer or a file descriptor.
@ -63,6 +62,6 @@ class BufVec {
*/
std::string copyData() const;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -8,12 +8,12 @@
*
*/
#pragma once
#include "DirList.h"
#include "FileHandleBase.h"
#include "eden/fs/fuse/FileHandleBase.h"
namespace facebook {
namespace eden {
namespace fusell {
class DirList;
class DirHandle : public FileHandleBase {
public:
@ -35,6 +35,6 @@ class DirHandle : public FileHandleBase {
*/
virtual folly::Future<folly::Unit> fsyncdir(bool datasync) = 0;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "DirList.h"
#include "eden/fs/fuse/DirList.h"
#include "eden/fs/fuse/FuseTypes.h"
@ -15,7 +15,6 @@ using folly::StringPiece;
namespace facebook {
namespace eden {
namespace fusell {
DirList::DirList(size_t maxSize)
: buf_(new char[maxSize]), end_(buf_.get() + maxSize), cur_(buf_.get()) {}
@ -51,6 +50,6 @@ bool DirList::add(StringPiece name, const struct stat& st, off_t off) {
StringPiece DirList::getBuf() const {
return StringPiece(buf_.get(), cur_ - buf_.get());
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -10,11 +10,11 @@
#pragma once
#include <folly/Range.h>
#include <sys/stat.h>
#include <memory>
#include "eden/fs/utils/DirType.h"
namespace facebook {
namespace eden {
namespace fusell {
/**
* Helper for populating directory listings.
@ -46,6 +46,6 @@ class DirList {
folly::StringPiece getBuf() const;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -25,7 +25,6 @@ using namespace std::chrono;
namespace facebook {
namespace eden {
namespace fusell {
Dispatcher::Attr::Attr(const struct stat& st, uint64_t timeout)
: st(st), timeout_seconds(timeout) {}
@ -81,35 +80,34 @@ void Dispatcher::initConnection(const fuse_init_out& out) {
void Dispatcher::destroy() {}
folly::Future<fuse_entry_out> Dispatcher::lookup(
fusell::InodeNumber /*parent*/,
InodeNumber /*parent*/,
PathComponentPiece /*name*/) {
throwSystemErrorExplicit(ENOENT);
}
folly::Future<folly::Unit> Dispatcher::forget(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
unsigned long /*nlookup*/) {
return Unit{};
}
folly::Future<Dispatcher::Attr> Dispatcher::getattr(
fusell::InodeNumber /*ino*/) {
folly::Future<Dispatcher::Attr> Dispatcher::getattr(InodeNumber /*ino*/) {
throwSystemErrorExplicit(ENOENT);
}
folly::Future<Dispatcher::Attr> Dispatcher::setattr(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
const fuse_setattr_in& /*attr*/
) {
FUSELL_NOT_IMPL();
}
folly::Future<std::string> Dispatcher::readlink(fusell::InodeNumber /*ino*/) {
folly::Future<std::string> Dispatcher::readlink(InodeNumber /*ino*/) {
FUSELL_NOT_IMPL();
}
folly::Future<fuse_entry_out> Dispatcher::mknod(
fusell::InodeNumber /*parent*/,
InodeNumber /*parent*/,
PathComponentPiece /*name*/,
mode_t /*mode*/,
dev_t /*rdev*/) {
@ -117,56 +115,49 @@ folly::Future<fuse_entry_out> Dispatcher::mknod(
}
folly::Future<fuse_entry_out>
Dispatcher::mkdir(fusell::InodeNumber, PathComponentPiece, mode_t) {
Dispatcher::mkdir(InodeNumber, PathComponentPiece, mode_t) {
FUSELL_NOT_IMPL();
}
folly::Future<folly::Unit> Dispatcher::unlink(
fusell::InodeNumber,
PathComponentPiece) {
folly::Future<folly::Unit> Dispatcher::unlink(InodeNumber, PathComponentPiece) {
FUSELL_NOT_IMPL();
}
folly::Future<folly::Unit> Dispatcher::rmdir(
fusell::InodeNumber,
PathComponentPiece) {
folly::Future<folly::Unit> Dispatcher::rmdir(InodeNumber, PathComponentPiece) {
FUSELL_NOT_IMPL();
}
folly::Future<fuse_entry_out> Dispatcher::symlink(
fusell::InodeNumber,
PathComponentPiece,
folly::StringPiece) {
folly::Future<fuse_entry_out>
Dispatcher::symlink(InodeNumber, PathComponentPiece, folly::StringPiece) {
FUSELL_NOT_IMPL();
}
folly::Future<folly::Unit> Dispatcher::rename(
fusell::InodeNumber,
InodeNumber,
PathComponentPiece,
fusell::InodeNumber,
InodeNumber,
PathComponentPiece) {
FUSELL_NOT_IMPL();
}
folly::Future<fuse_entry_out>
Dispatcher::link(fusell::InodeNumber, fusell::InodeNumber, PathComponentPiece) {
Dispatcher::link(InodeNumber, InodeNumber, PathComponentPiece) {
FUSELL_NOT_IMPL();
}
folly::Future<std::shared_ptr<FileHandle>> Dispatcher::open(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
int /*flags*/) {
FUSELL_NOT_IMPL();
}
folly::Future<std::shared_ptr<DirHandle>> Dispatcher::opendir(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
int /*flags*/) {
FUSELL_NOT_IMPL();
}
folly::Future<struct fuse_kstatfs> Dispatcher::statfs(
fusell::InodeNumber /*ino*/) {
folly::Future<struct fuse_kstatfs> Dispatcher::statfs(InodeNumber /*ino*/) {
struct fuse_kstatfs info = {};
// Suggest a large blocksize to software that looks at that kind of thing
@ -189,7 +180,7 @@ folly::Future<struct fuse_kstatfs> Dispatcher::statfs(
}
folly::Future<folly::Unit> Dispatcher::setxattr(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
folly::StringPiece /*name*/,
folly::StringPiece /*value*/,
int /*flags*/) {
@ -205,24 +196,24 @@ const int Dispatcher::kENOATTR =
;
folly::Future<std::string> Dispatcher::getxattr(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
folly::StringPiece /*name*/) {
throwSystemErrorExplicit(kENOATTR);
}
folly::Future<std::vector<std::string>> Dispatcher::listxattr(
fusell::InodeNumber /*ino*/) {
InodeNumber /*ino*/) {
return std::vector<std::string>();
}
folly::Future<folly::Unit> Dispatcher::removexattr(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
folly::StringPiece /*name*/) {
FUSELL_NOT_IMPL();
}
folly::Future<folly::Unit> Dispatcher::access(
fusell::InodeNumber /*ino*/,
InodeNumber /*ino*/,
int /*mask*/) {
// Note that if you mount with the "default_permissions" kernel mount option,
// the kernel will perform all permissions checks for you, and will never
@ -234,14 +225,12 @@ folly::Future<folly::Unit> Dispatcher::access(
}
folly::Future<Dispatcher::Create>
Dispatcher::create(fusell::InodeNumber, PathComponentPiece, mode_t, int) {
Dispatcher::create(InodeNumber, PathComponentPiece, mode_t, int) {
FUSELL_NOT_IMPL();
}
folly::Future<uint64_t> Dispatcher::bmap(
fusell::InodeNumber /*ino*/,
size_t /*blocksize*/,
uint64_t /*idx*/) {
folly::Future<uint64_t>
Dispatcher::bmap(InodeNumber /*ino*/, size_t /*blocksize*/, uint64_t /*idx*/) {
FUSELL_NOT_IMPL();
}
@ -252,6 +241,6 @@ const fuse_init_out& Dispatcher::getConnInfo() const {
ThreadLocalEdenStats* Dispatcher::getStats() const {
return stats_;
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -25,7 +25,6 @@ class Future;
namespace facebook {
namespace eden {
namespace fusell {
#define FUSELL_NOT_IMPL() \
do { \
@ -80,7 +79,7 @@ class Dispatcher {
* Lookup a directory entry by name and get its attributes
*/
virtual folly::Future<fuse_entry_out> lookup(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name);
/**
@ -103,7 +102,7 @@ class Dispatcher {
* @param nlookup the number of lookups to forget
*/
virtual folly::Future<folly::Unit> forget(
fusell::InodeNumber ino,
InodeNumber ino,
unsigned long nlookup);
/**
@ -129,7 +128,7 @@ class Dispatcher {
*
* @param ino the inode number
*/
virtual folly::Future<Attr> getattr(fusell::InodeNumber ino);
virtual folly::Future<Attr> getattr(InodeNumber ino);
/**
* Set file attributes
@ -146,7 +145,7 @@ class Dispatcher {
* file information filled in for ftruncate
*/
virtual folly::Future<Attr> setattr(
fusell::InodeNumber ino,
InodeNumber ino,
const fuse_setattr_in& attr);
/**
@ -154,7 +153,7 @@ class Dispatcher {
*
* @param ino the inode number
*/
virtual folly::Future<std::string> readlink(fusell::InodeNumber ino);
virtual folly::Future<std::string> readlink(InodeNumber ino);
/**
* Create file node
@ -167,11 +166,8 @@ class Dispatcher {
* @param mode file type and mode with which to create the new file
* @param rdev the device number (only valid if created file is a device)
*/
virtual folly::Future<fuse_entry_out> mknod(
fusell::InodeNumber parent,
PathComponentPiece name,
mode_t mode,
dev_t rdev);
virtual folly::Future<fuse_entry_out>
mknod(InodeNumber parent, PathComponentPiece name, mode_t mode, dev_t rdev);
/**
* Create a directory
@ -181,7 +177,7 @@ class Dispatcher {
* @param mode with which to create the new file
*/
virtual folly::Future<fuse_entry_out>
mkdir(fusell::InodeNumber parent, PathComponentPiece name, mode_t mode);
mkdir(InodeNumber parent, PathComponentPiece name, mode_t mode);
/**
* Remove a file
@ -190,7 +186,7 @@ class Dispatcher {
* @param name to remove
*/
virtual folly::Future<folly::Unit> unlink(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name);
/**
@ -200,7 +196,7 @@ class Dispatcher {
* @param name to remove
*/
virtual folly::Future<folly::Unit> rmdir(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name);
/**
@ -210,10 +206,8 @@ class Dispatcher {
* @param name to create
* @param link the contents of the symbolic link
*/
virtual folly::Future<fuse_entry_out> symlink(
fusell::InodeNumber parent,
PathComponentPiece name,
folly::StringPiece link);
virtual folly::Future<fuse_entry_out>
symlink(InodeNumber parent, PathComponentPiece name, folly::StringPiece link);
/**
* Rename a file
@ -224,9 +218,9 @@ class Dispatcher {
* @param newname new name
*/
virtual folly::Future<folly::Unit> rename(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
fusell::InodeNumber newparent,
InodeNumber newparent,
PathComponentPiece newname);
/**
@ -236,10 +230,8 @@ class Dispatcher {
* @param newparent inode number of the new parent directory
* @param newname new name to create
*/
virtual folly::Future<fuse_entry_out> link(
fusell::InodeNumber ino,
fusell::InodeNumber newparent,
PathComponentPiece newname);
virtual folly::Future<fuse_entry_out>
link(InodeNumber ino, InodeNumber newparent, PathComponentPiece newname);
/**
* Open a file
@ -248,7 +240,7 @@ class Dispatcher {
* O_TRUNC) are available in the flags parameter.
*/
virtual folly::Future<std::shared_ptr<FileHandle>> open(
fusell::InodeNumber ino,
InodeNumber ino,
int flags);
/**
@ -257,7 +249,7 @@ class Dispatcher {
* open(2) flags are available in the flags parameter.
*/
virtual folly::Future<std::shared_ptr<DirHandle>> opendir(
fusell::InodeNumber ino,
InodeNumber ino,
int flags);
/**
@ -265,13 +257,13 @@ class Dispatcher {
*
* @param ino the inode number, zero means "undefined"
*/
virtual folly::Future<struct fuse_kstatfs> statfs(fusell::InodeNumber ino);
virtual folly::Future<struct fuse_kstatfs> statfs(InodeNumber ino);
/**
* Set an extended attribute
*/
virtual folly::Future<folly::Unit> setxattr(
fusell::InodeNumber ino,
InodeNumber ino,
folly::StringPiece name,
folly::StringPiece value,
int flags);
@ -279,15 +271,14 @@ class Dispatcher {
* Get an extended attribute
*/
virtual folly::Future<std::string> getxattr(
fusell::InodeNumber ino,
InodeNumber ino,
folly::StringPiece name);
static const int kENOATTR;
/**
* List extended attribute names
*/
virtual folly::Future<std::vector<std::string>> listxattr(
fusell::InodeNumber ino);
virtual folly::Future<std::vector<std::string>> listxattr(InodeNumber ino);
/**
* Remove an extended attribute
@ -296,7 +287,7 @@ class Dispatcher {
* @param name of the extended attribute
*/
virtual folly::Future<folly::Unit> removexattr(
fusell::InodeNumber ino,
InodeNumber ino,
folly::StringPiece name);
/**
@ -313,7 +304,7 @@ class Dispatcher {
* @param ino the inode number
* @param mask requested access mode
*/
virtual folly::Future<folly::Unit> access(fusell::InodeNumber ino, int mask);
virtual folly::Future<folly::Unit> access(InodeNumber ino, int mask);
struct Create {
fuse_entry_out entry;
@ -339,11 +330,8 @@ class Dispatcher {
* @param name to create
* @param mode file type and mode with which to create the new file
*/
virtual folly::Future<Create> create(
fusell::InodeNumber parent,
PathComponentPiece name,
mode_t mode,
int flags);
virtual folly::Future<Create>
create(InodeNumber parent, PathComponentPiece name, mode_t mode, int flags);
/**
* Map block index within file to block index within device
@ -358,9 +346,8 @@ class Dispatcher {
* @param idx block index within file
*/
virtual folly::Future<uint64_t>
bmap(fusell::InodeNumber ino, size_t blocksize, uint64_t idx);
bmap(InodeNumber ino, size_t blocksize, uint64_t idx);
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "EdenStats.h"
#include "eden/fs/fuse/EdenStats.h"
#include <folly/container/Array.h>
#include <chrono>
@ -29,7 +29,6 @@ constexpr auto kDurations = folly::make_array(
namespace facebook {
namespace eden {
namespace fusell {
EdenStats::EdenStats() {}
@ -70,6 +69,6 @@ void EdenStats::recordLatency(
(this->*item)->addValue(now, elapsed.count());
#endif
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -32,7 +32,6 @@ class ThreadLocal;
namespace facebook {
namespace eden {
namespace fusell {
/**
* A tag class for using with folly::ThreadLocal when storing EdenStats.
@ -128,6 +127,6 @@ class EdenStats
folly::TimeseriesHistogram<int64_t> createHistogram(const std::string& name);
#endif
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -7,13 +7,12 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "FileHandle.h"
#include "eden/fs/fuse/FileHandle.h"
using namespace folly;
namespace facebook {
namespace eden {
namespace fusell {
bool FileHandle::usesDirectIO() const {
return false;
@ -25,6 +24,5 @@ bool FileHandle::isSeekable() const {
return true;
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -8,11 +8,10 @@
*
*/
#pragma once
#include "FileHandleBase.h"
#include "eden/fs/fuse/FileHandleBase.h"
namespace facebook {
namespace eden {
namespace fusell {
class FileHandle : public FileHandleBase {
public:
@ -90,6 +89,6 @@ class FileHandle : public FileHandleBase {
*/
virtual folly::Future<folly::Unit> fsync(bool datasync) = 0;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -7,13 +7,12 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "FileHandleBase.h"
#include "eden/fs/fuse/FileHandleBase.h"
using namespace folly;
namespace facebook {
namespace eden {
namespace fusell {
FileHandleBase::~FileHandleBase() {}
@ -29,6 +28,6 @@ folly::Future<unsigned> FileHandleBase::poll(
std::unique_ptr<PollHandle> /*ph*/) {
FUSELL_NOT_IMPL();
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -9,13 +9,12 @@
*/
#pragma once
#include <folly/futures/Future.h>
#include "BufVec.h"
#include "Dispatcher.h"
#include "PollHandle.h"
#include "eden/fs/fuse/BufVec.h"
#include "eden/fs/fuse/Dispatcher.h"
#include "eden/fs/fuse/PollHandle.h"
namespace facebook {
namespace eden {
namespace fusell {
class Dispatcher;
@ -27,7 +26,7 @@ class FileHandleBase {
* Return the inode number.
* This is used in lieu of getattr() by the code that serializes
* the FileHandleMap. */
virtual fusell::InodeNumber getInodeNumber() = 0;
virtual InodeNumber getInodeNumber() = 0;
/**
* Get file attributes
@ -87,6 +86,6 @@ class FileHandleBase {
*/
virtual folly::Future<unsigned> poll(std::unique_ptr<PollHandle> ph);
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -23,7 +23,6 @@ using apache::thrift::CompactSerializer;
namespace facebook {
namespace eden {
namespace fusell {
std::shared_ptr<FileHandleBase> FileHandleMap::getGenericFileHandle(
uint64_t fh) {
@ -144,6 +143,5 @@ SerializedFileHandleMap FileHandleMap::serializeMap() {
return result;
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -14,13 +14,11 @@
namespace facebook {
namespace eden {
class SerializedFileHandleMap;
namespace fusell {
class FileHandle;
class DirHandle;
class FileHandle;
class FileHandleBase;
class SerializedFileHandleMap;
/** Keeps track of file handle numbers and their associate FileHandleBase
*
@ -83,6 +81,6 @@ class FileHandleMap {
std::unordered_map<uint64_t, std::shared_ptr<FileHandleBase>>>
handles_;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -15,6 +15,7 @@
#include <folly/system/ThreadName.h>
#include <signal.h>
#include "eden/fs/fuse/DirHandle.h"
#include "eden/fs/fuse/DirList.h"
#include "eden/fs/fuse/Dispatcher.h"
#include "eden/fs/fuse/FileHandle.h"
#include "eden/fs/fuse/RequestData.h"
@ -24,7 +25,6 @@ using std::string;
namespace facebook {
namespace eden {
namespace fusell {
namespace {
@ -431,10 +431,7 @@ void FuseChannel::destroy() {
}
}
void FuseChannel::invalidateInode(
fusell::InodeNumber ino,
off_t off,
off_t len) {
void FuseChannel::invalidateInode(InodeNumber ino, off_t off, off_t len) {
fuse_notify_inval_inode_out notify;
notify.ino = ino.get();
notify.off = off;
@ -469,9 +466,7 @@ void FuseChannel::invalidateInode(
}
}
void FuseChannel::invalidateEntry(
fusell::InodeNumber parent,
PathComponentPiece name) {
void FuseChannel::invalidateEntry(InodeNumber parent, PathComponentPiece name) {
auto namePiece = name.stringPiece();
fuse_notify_inval_entry_out notify = {};
@ -1028,7 +1023,7 @@ folly::Future<folly::Unit> FuseChannel::fuseLookup(
const fuse_in_header* header,
const uint8_t* arg) {
PathComponentPiece name{reinterpret_cast<const char*>(arg)};
const auto parent = fusell::InodeNumber{header->nodeid};
const auto parent = InodeNumber{header->nodeid};
XLOG(DBG7) << "FUSE_LOOKUP";
@ -1042,8 +1037,7 @@ folly::Future<folly::Unit> FuseChannel::fuseForget(
const uint8_t* arg) {
auto forget = reinterpret_cast<const fuse_forget_in*>(arg);
XLOG(DBG7) << "FUSE_FORGET";
return dispatcher_
->forget(fusell::InodeNumber{header->nodeid}, forget->nlookup)
return dispatcher_->forget(InodeNumber{header->nodeid}, forget->nlookup)
.then([]() { RequestData::get().replyNone(); });
}
@ -1065,7 +1059,7 @@ folly::Future<folly::Unit> FuseChannel::fuseGetAttr(
// otherwise, fall through to regular inode based lookup
}
return dispatcher_->getattr(fusell::InodeNumber{header->nodeid})
return dispatcher_->getattr(InodeNumber{header->nodeid})
.then([](Dispatcher::Attr attr) {
RequestData::get().sendReply(attr.asFuseAttr());
});
@ -1083,7 +1077,7 @@ folly::Future<folly::Unit> FuseChannel::fuseSetAttr(
RequestData::get().sendReply(attr.asFuseAttr());
});
} else {
return dispatcher_->setattr(fusell::InodeNumber{header->nodeid}, *setattr)
return dispatcher_->setattr(InodeNumber{header->nodeid}, *setattr)
.then([](Dispatcher::Attr attr) {
RequestData::get().sendReply(attr.asFuseAttr());
});
@ -1094,7 +1088,7 @@ folly::Future<folly::Unit> FuseChannel::fuseReadLink(
const fuse_in_header* header,
const uint8_t* arg) {
XLOG(DBG7) << "FUSE_READLINK";
return dispatcher_->readlink(fusell::InodeNumber{header->nodeid})
return dispatcher_->readlink(InodeNumber{header->nodeid})
.then([](std::string&& str) {
RequestData::get().sendReply(folly::StringPiece(str));
});
@ -1108,7 +1102,7 @@ folly::Future<folly::Unit> FuseChannel::fuseSymlink(
const PathComponentPiece name{nameStr};
const StringPiece link{nameStr + name.stringPiece().size() + 1};
return dispatcher_->symlink(fusell::InodeNumber{header->nodeid}, name, link)
return dispatcher_->symlink(InodeNumber{header->nodeid}, name, link)
.then([](fuse_entry_out param) { RequestData::get().sendReply(param); });
}
@ -1136,7 +1130,7 @@ folly::Future<folly::Unit> FuseChannel::fuseMknod(
XLOG(DBG7) << "FUSE_MKNOD " << name;
return dispatcher_
->mknod(fusell::InodeNumber{header->nodeid}, name, nod->mode, nod->rdev)
->mknod(InodeNumber{header->nodeid}, name, nod->mode, nod->rdev)
.then([](fuse_entry_out entry) { RequestData::get().sendReply(entry); });
}
@ -1156,8 +1150,7 @@ folly::Future<folly::Unit> FuseChannel::fuseMkdir(
XLOG(DBG7) << "mode = " << dir->mode << "; umask = " << dir->umask;
return dispatcher_
->mkdir(
fusell::InodeNumber{header->nodeid}, name, dir->mode & ~dir->umask)
->mkdir(InodeNumber{header->nodeid}, name, dir->mode & ~dir->umask)
.then([](fuse_entry_out entry) { RequestData::get().sendReply(entry); });
}
@ -1169,8 +1162,9 @@ folly::Future<folly::Unit> FuseChannel::fuseUnlink(
XLOG(DBG7) << "FUSE_UNLINK " << name;
return dispatcher_->unlink(fusell::InodeNumber{header->nodeid}, name)
.then([]() { RequestData::get().replyError(0); });
return dispatcher_->unlink(InodeNumber{header->nodeid}, name).then([]() {
RequestData::get().replyError(0);
});
}
folly::Future<folly::Unit> FuseChannel::fuseRmdir(
@ -1181,8 +1175,9 @@ folly::Future<folly::Unit> FuseChannel::fuseRmdir(
XLOG(DBG7) << "FUSE_RMDIR " << name;
return dispatcher_->rmdir(fusell::InodeNumber{header->nodeid}, name)
.then([]() { RequestData::get().replyError(0); });
return dispatcher_->rmdir(InodeNumber{header->nodeid}, name).then([]() {
RequestData::get().replyError(0);
});
}
folly::Future<folly::Unit> FuseChannel::fuseRename(
@ -1197,9 +1192,9 @@ folly::Future<folly::Unit> FuseChannel::fuseRename(
XLOG(DBG7) << "FUSE_RENAME " << oldName << " -> " << newName;
return dispatcher_
->rename(
fusell::InodeNumber{header->nodeid},
InodeNumber{header->nodeid},
oldName,
fusell::InodeNumber{rename->newdir},
InodeNumber{rename->newdir},
newName)
.then([]() { RequestData::get().replyError(0); });
}
@ -1214,10 +1209,7 @@ folly::Future<folly::Unit> FuseChannel::fuseLink(
XLOG(DBG7) << "FUSE_LINK " << newName;
return dispatcher_
->link(
fusell::InodeNumber{link->oldnodeid},
fusell::InodeNumber{header->nodeid},
newName)
->link(InodeNumber{link->oldnodeid}, InodeNumber{header->nodeid}, newName)
.then([](fuse_entry_out param) { RequestData::get().sendReply(param); });
}
@ -1226,7 +1218,7 @@ folly::Future<folly::Unit> FuseChannel::fuseOpen(
const uint8_t* arg) {
const auto open = reinterpret_cast<const fuse_open_in*>(arg);
XLOG(DBG7) << "FUSE_OPEN";
return dispatcher_->open(fusell::InodeNumber{header->nodeid}, open->flags)
return dispatcher_->open(InodeNumber{header->nodeid}, open->flags)
.then([this](std::shared_ptr<FileHandle> fh) {
if (!fh) {
throw std::runtime_error("Dispatcher::open failed to set fh");
@ -1256,7 +1248,7 @@ folly::Future<folly::Unit> FuseChannel::fuseStatFs(
const fuse_in_header* header,
const uint8_t* arg) {
XLOG(DBG7) << "FUSE_STATFS";
return dispatcher_->statfs(fusell::InodeNumber{header->nodeid})
return dispatcher_->statfs(InodeNumber{header->nodeid})
.then([](struct fuse_kstatfs&& info) {
fuse_statfs_out out = {};
out.st = info;
@ -1300,8 +1292,7 @@ folly::Future<folly::Unit> FuseChannel::fuseSetXAttr(
XLOG(DBG7) << "FUSE_SETXATTR";
return dispatcher_
->setxattr(
fusell::InodeNumber{header->nodeid}, attrName, value, setxattr->flags)
->setxattr(InodeNumber{header->nodeid}, attrName, value, setxattr->flags)
.then([]() { RequestData::get().replyError(0); });
}
@ -1312,7 +1303,7 @@ folly::Future<folly::Unit> FuseChannel::fuseGetXAttr(
const auto nameStr = reinterpret_cast<const char*>(getxattr + 1);
const StringPiece attrName{nameStr};
XLOG(DBG7) << "FUSE_GETXATTR";
return dispatcher_->getxattr(fusell::InodeNumber{header->nodeid}, attrName)
return dispatcher_->getxattr(InodeNumber{header->nodeid}, attrName)
.then([size = getxattr->size](std::string attr) {
auto& request = RequestData::get();
if (size == 0) {
@ -1332,7 +1323,7 @@ folly::Future<folly::Unit> FuseChannel::fuseListXAttr(
const uint8_t* arg) {
const auto listattr = reinterpret_cast<const fuse_getxattr_in*>(arg);
XLOG(DBG7) << "FUSE_LISTXATTR";
return dispatcher_->listxattr(fusell::InodeNumber{header->nodeid})
return dispatcher_->listxattr(InodeNumber{header->nodeid})
.then([size = listattr->size](std::vector<std::string> attrs) {
auto& request = RequestData::get();
@ -1368,7 +1359,7 @@ folly::Future<folly::Unit> FuseChannel::fuseRemoveXAttr(
const auto nameStr = reinterpret_cast<const char*>(arg);
const StringPiece attrName{nameStr};
XLOG(DBG7) << "FUSE_REMOVEXATTR";
return dispatcher_->removexattr(fusell::InodeNumber{header->nodeid}, attrName)
return dispatcher_->removexattr(InodeNumber{header->nodeid}, attrName)
.then([]() { RequestData::get().replyError(0); });
}
@ -1389,7 +1380,7 @@ folly::Future<folly::Unit> FuseChannel::fuseOpenDir(
const uint8_t* arg) {
const auto open = reinterpret_cast<const fuse_open_in*>(arg);
XLOG(DBG7) << "FUSE_OPENDIR";
return dispatcher_->opendir(fusell::InodeNumber{header->nodeid}, open->flags)
return dispatcher_->opendir(InodeNumber{header->nodeid}, open->flags)
.then([this](std::shared_ptr<DirHandle> dh) {
if (!dh) {
throw std::runtime_error("Dispatcher::opendir failed to set dh");
@ -1449,7 +1440,7 @@ folly::Future<folly::Unit> FuseChannel::fuseAccess(
const uint8_t* arg) {
const auto access = reinterpret_cast<const fuse_access_in*>(arg);
XLOG(DBG7) << "FUSE_ACCESS";
return dispatcher_->access(fusell::InodeNumber{header->nodeid}, access->mask)
return dispatcher_->access(InodeNumber{header->nodeid}, access->mask)
.then([]() { RequestData::get().replyError(0); });
}
@ -1460,11 +1451,7 @@ folly::Future<folly::Unit> FuseChannel::fuseCreate(
const PathComponentPiece name{reinterpret_cast<const char*>(create + 1)};
XLOG(DBG7) << "FUSE_CREATE " << name;
return dispatcher_
->create(
fusell::InodeNumber{header->nodeid},
name,
create->mode,
create->flags)
->create(InodeNumber{header->nodeid}, name, create->mode, create->flags)
.then([this](Dispatcher::Create info) {
fuse_open_out out = {};
if (info.fh->usesDirectIO()) {
@ -1504,7 +1491,7 @@ folly::Future<folly::Unit> FuseChannel::fuseBmap(
const auto bmap = reinterpret_cast<const fuse_bmap_in*>(arg);
XLOG(DBG7) << "FUSE_BMAP";
return dispatcher_
->bmap(fusell::InodeNumber{header->nodeid}, bmap->blocksize, bmap->block)
->bmap(InodeNumber{header->nodeid}, bmap->blocksize, bmap->block)
.then([](uint64_t resultIdx) {
fuse_bmap_out out;
out.block = resultIdx;
@ -1521,12 +1508,11 @@ folly::Future<folly::Unit> FuseChannel::fuseBatchForget(
XLOG(DBG7) << "FUSE_BATCH_FORGET";
while (item != end) {
dispatcher_->forget(fusell::InodeNumber{item->nodeid}, item->nlookup);
dispatcher_->forget(InodeNumber{item->nodeid}, item->nlookup);
++item;
}
return Unit{};
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -29,7 +29,6 @@ class RequestContext;
namespace facebook {
namespace eden {
namespace fusell {
class Dispatcher;
@ -173,7 +172,7 @@ class FuseChannel {
* or negative to invalidate attributes only
* @param len the amount of cache to invalidate or 0 for all
*/
void invalidateInode(fusell::InodeNumber ino, off_t off, off_t len);
void invalidateInode(InodeNumber ino, off_t off, off_t len);
/**
* Notify to invalidate parent attributes and the dentry matching
@ -182,7 +181,7 @@ class FuseChannel {
* @param parent inode number
* @param name file name
*/
void invalidateEntry(fusell::InodeNumber parent, PathComponentPiece name);
void invalidateEntry(InodeNumber parent, PathComponentPiece name);
/**
* Sends a reply to a kernel request that consists only of the error
@ -499,6 +498,6 @@ class FuseChannelDeleter {
channel->destroy();
}
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -14,7 +14,6 @@
namespace facebook {
namespace eden {
namespace fusell {
std::ostream& operator<<(std::ostream& os, InodeNumber ino) {
return os << ino.getRawValue();
@ -28,6 +27,5 @@ void toAppend(InodeNumber ino, folly::fbstring* result) {
folly::toAppend(ino.getRawValue(), result);
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -20,7 +20,6 @@
#endif
namespace facebook {
namespace eden {
namespace fusell {
/**
* Represents ino_t behind a slightly safer API. In general, it is a bug if
@ -127,22 +126,20 @@ struct FuseChannelData {
fuse_init_out connInfo;
};
} // namespace fusell
constexpr fusell::InodeNumber operator""_ino(unsigned long long ino) {
return fusell::InodeNumber{ino};
constexpr InodeNumber operator""_ino(unsigned long long ino) {
return InodeNumber{ino};
}
/// The inode number of the mount's root directory.
constexpr fusell::InodeNumber kRootNodeId = 1_ino;
constexpr InodeNumber kRootNodeId = 1_ino;
} // namespace eden
} // namespace facebook
namespace std {
template <>
struct hash<facebook::eden::fusell::InodeNumber> {
size_t operator()(facebook::eden::fusell::InodeNumber n) const {
struct hash<facebook::eden::InodeNumber> {
size_t operator()(facebook::eden::InodeNumber n) const {
// TODO: It may be worth using a different hash function. The default
// std::hash for integers is the identity function. But since we allocate
// inode numbers monotonically, this should be okay.
@ -153,9 +150,9 @@ struct hash<facebook::eden::fusell::InodeNumber> {
namespace folly {
template <>
class FormatValue<facebook::eden::fusell::InodeNumber> {
class FormatValue<facebook::eden::InodeNumber> {
public:
explicit FormatValue(facebook::eden::fusell::InodeNumber ino) : ino_(ino) {}
explicit FormatValue(facebook::eden::InodeNumber ino) : ino_(ino) {}
template <class FormatCallback>
void format(FormatArg& arg, FormatCallback& cb) const {
@ -163,6 +160,6 @@ class FormatValue<facebook::eden::fusell::InodeNumber> {
}
private:
const facebook::eden::fusell::InodeNumber ino_;
const facebook::eden::InodeNumber ino_;
};
} // namespace folly

View File

@ -7,11 +7,10 @@
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#include "PollHandle.h"
#include "eden/fs/fuse/PollHandle.h"
namespace facebook {
namespace eden {
namespace fusell {
void PollHandle::Deleter::operator()(fuse_pollhandle* /*h*/) {
#if FUSE_MAJOR_VERSION >= 8
@ -26,6 +25,6 @@ void PollHandle::notify() {
fuse_lowlevel_notify_poll(h_.get());
#endif
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -13,7 +13,6 @@
namespace facebook {
namespace eden {
namespace fusell {
// Some compatibility cruft for working with OSX Fuse
#if FUSE_MINOR_VERSION < 8
@ -37,6 +36,6 @@ class PollHandle {
// Requests that the kernel poll the associated file
void notify();
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -18,9 +18,8 @@ using namespace std::chrono;
namespace facebook {
namespace eden {
namespace fusell {
const std::string RequestData::kKey("fusell");
const std::string RequestData::kKey("fuse");
RequestData::RequestData(
FuseChannel* channel,
@ -130,6 +129,6 @@ void RequestData::genericErrorHandler(const std::exception& err) {
XLOG(DBG5) << folly::exceptionStr(err);
RequestData::get().replyError(EIO);
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -18,7 +18,6 @@
namespace facebook {
namespace eden {
namespace fusell {
class Dispatcher;
@ -129,6 +128,6 @@ class RequestData : public folly::RequestData {
folly::Future<folly::Unit> interrupter_;
std::atomic<bool> interrupted_{false};
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -23,7 +23,6 @@
#include "eden/fs/utils/PathFuncs.h"
using namespace facebook::eden;
using namespace facebook::eden::fusell;
using folly::exceptionStr;
using folly::makeFuture;
using std::string;
@ -43,7 +42,7 @@ class TestDispatcher : public Dispatcher {
TestDispatcher(ThreadLocalEdenStats* stats, const UserInfo& identity)
: Dispatcher(stats), identity_(identity) {}
folly::Future<Attr> getattr(fusell::InodeNumber ino) override {
folly::Future<Attr> getattr(InodeNumber ino) override {
if (ino == kRootNodeId) {
struct stat st = {};
st.st_ino = ino.get();

View File

@ -30,9 +30,6 @@ using std::string;
using std::unique_ptr;
using std::vector;
using facebook::eden::fusell::PrivHelperConn;
using facebook::eden::fusell::PrivHelperServer;
namespace facebook {
namespace eden {

View File

@ -96,9 +96,7 @@ class PrivHelper {
virtual int stop() = 0;
};
namespace fusell {
class PrivHelperServer;
}
/**
* Fork a separate privileged helper process, for performing mounts.
@ -115,7 +113,7 @@ std::unique_ptr<PrivHelper> startPrivHelper(const UserInfo& userInfo);
* This is really only intended for use in unit tests.
*/
std::unique_ptr<PrivHelper> startPrivHelper(
fusell::PrivHelperServer* server,
PrivHelperServer* server,
const UserInfo& userInfo);
} // namespace eden

View File

@ -41,7 +41,6 @@ DEFINE_int32(
namespace facebook {
namespace eden {
namespace fusell {
namespace {
@ -475,6 +474,6 @@ void PrivHelperConn::rethrowErrorResponse(const Message* msg) {
PrivHelperError::PrivHelperError(StringPiece remoteExType, StringPiece msg)
: message_(folly::to<string>(remoteExType, ": ", msg)) {}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -20,7 +20,6 @@ class File;
namespace facebook {
namespace eden {
namespace fusell {
/*
* A helper class for sending and receiving messages on the privhelper socket.
@ -200,6 +199,6 @@ class PrivHelperError : public std::exception {
private:
std::string message_;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -39,7 +39,6 @@ using std::string;
namespace facebook {
namespace eden {
namespace fusell {
PrivHelperServer::PrivHelperServer() {}
@ -432,6 +431,6 @@ void PrivHelperServer::run() {
// Unmount all active mount points
cleanupMountPoints();
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -14,7 +14,7 @@
#include <set>
#include <string>
#include <unordered_map>
#include "PrivHelperConn.h"
#include "eden/fs/fuse/privhelper/PrivHelperConn.h"
namespace folly {
class File;
@ -22,7 +22,6 @@ class File;
namespace facebook {
namespace eden {
namespace fusell {
/*
* PrivHelperServer runs the main loop for the privhelper server process.
@ -70,6 +69,6 @@ class PrivHelperServer {
std::set<std::string> mountPoints_;
std::unordered_multimap<std::string, std::string> bindMountPoints_;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -24,7 +24,7 @@
#include <vector>
using namespace folly::string_piece_literals;
using namespace facebook::eden::fusell;
using namespace facebook::eden;
using facebook::eden::UserInfo;
using folly::ByteRange;
using folly::checkUnixError;

View File

@ -20,7 +20,6 @@ using std::string;
namespace facebook {
namespace eden {
namespace fusell {
PrivHelperTestServer::PrivHelperTestServer() {}
@ -100,6 +99,6 @@ bool PrivHelperTestServer::checkIfMarkerFileHasContents(
throw;
}
}
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -15,7 +15,6 @@
namespace facebook {
namespace eden {
namespace fusell {
/*
* A subclass of PrivHelperServer that doesn't actually perform
@ -53,6 +52,6 @@ class PrivHelperTestServer : public PrivHelperServer {
const std::string pathToMarkerFile,
const std::string contents) const;
};
} // namespace fusell
} // namespace eden
} // namespace facebook

View File

@ -14,7 +14,7 @@
TEST(BufVecTest, BufVec) {
auto root = folly::IOBuf::wrapBuffer("hello", 5);
root->appendChain(folly::IOBuf::wrapBuffer("world", 5));
const auto bufVec = facebook::eden::fusell::BufVec{std::move(root)};
const auto bufVec = facebook::eden::BufVec{std::move(root)};
EXPECT_EQ(10u, bufVec.size());
EXPECT_EQ(10u, bufVec.copyData().size());
EXPECT_EQ("helloworld", bufVec.copyData());

View File

@ -15,7 +15,6 @@
#include "eden/fs/fuse/gen-cpp2/handlemap_types.h"
using namespace facebook::eden;
using namespace facebook::eden::fusell;
using folly::Future;
using folly::test::TemporaryFile;
@ -23,9 +22,9 @@ namespace {
class FakeDirHandle : public DirHandle {
public:
explicit FakeDirHandle(fusell::InodeNumber inode) : inode_(inode) {}
explicit FakeDirHandle(InodeNumber inode) : inode_(inode) {}
fusell::InodeNumber getInodeNumber() override {
InodeNumber getInodeNumber() override {
return inode_;
}
folly::Future<Dispatcher::Attr> getattr() override {
@ -44,14 +43,14 @@ class FakeDirHandle : public DirHandle {
}
private:
fusell::InodeNumber inode_;
InodeNumber inode_;
};
class FakeFileHandle : public FileHandle {
public:
explicit FakeFileHandle(fusell::InodeNumber inode) : inode_(inode) {}
explicit FakeFileHandle(InodeNumber inode) : inode_(inode) {}
fusell::InodeNumber getInodeNumber() override {
InodeNumber getInodeNumber() override {
return inode_;
}
folly::Future<Dispatcher::Attr> getattr() override {
@ -79,7 +78,7 @@ class FakeFileHandle : public FileHandle {
}
private:
fusell::InodeNumber inode_;
InodeNumber inode_;
};
} // namespace

View File

@ -21,7 +21,6 @@
#include "eden/fs/testharness/TestDispatcher.h"
using namespace facebook::eden;
using namespace facebook::eden::fusell;
using namespace std::literals::chrono_literals;
using folly::ByteRange;
using folly::Future;

View File

@ -49,8 +49,8 @@ namespace {
/** Compute a fuse_entry_out */
fuse_entry_out computeEntryParam(
fusell::InodeNumber number,
const fusell::Dispatcher::Attr& attr) {
InodeNumber number,
const Dispatcher::Attr& attr) {
fuse_entry_out entry;
entry.nodeid = number.get();
entry.generation = 1;
@ -64,15 +64,14 @@ fuse_entry_out computeEntryParam(
}
} // namespace
folly::Future<fusell::Dispatcher::Attr> EdenDispatcher::getattr(
fusell::InodeNumber ino) {
folly::Future<Dispatcher::Attr> EdenDispatcher::getattr(InodeNumber ino) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "getattr({})", ino);
return inodeMap_->lookupInode(ino).then(
[](const InodePtr& inode) { return inode->getattr(); });
}
folly::Future<std::shared_ptr<fusell::DirHandle>> EdenDispatcher::opendir(
fusell::InodeNumber ino,
folly::Future<std::shared_ptr<DirHandle>> EdenDispatcher::opendir(
InodeNumber ino,
int flags) {
FB_LOGF(
mount_->getStraceLogger(), DBG7, "opendir({}, flags={:x})", ino, flags);
@ -81,7 +80,7 @@ folly::Future<std::shared_ptr<fusell::DirHandle>> EdenDispatcher::opendir(
}
folly::Future<fuse_entry_out> EdenDispatcher::lookup(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece namepiece) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "lookup({}, {})", parent, namepiece);
return inodeMap_->lookupTreeInode(parent)
@ -89,7 +88,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::lookup(
return tree->getOrLoadChild(name);
})
.then([](const InodePtr& inode) {
return inode->getattr().then([inode](fusell::Dispatcher::Attr attr) {
return inode->getattr().then([inode](Dispatcher::Attr attr) {
inode->incFuseRefcount();
// Preserve inode's life for the duration of the prefetch.
inode->prefetch().ensure([inode] {});
@ -113,8 +112,8 @@ folly::Future<fuse_entry_out> EdenDispatcher::lookup(
});
}
folly::Future<fusell::Dispatcher::Attr> EdenDispatcher::setattr(
fusell::InodeNumber ino,
folly::Future<Dispatcher::Attr> EdenDispatcher::setattr(
InodeNumber ino,
const fuse_setattr_in& attr) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "setattr({})", ino);
return inodeMap_->lookupInode(ino).then(
@ -122,23 +121,23 @@ folly::Future<fusell::Dispatcher::Attr> EdenDispatcher::setattr(
}
folly::Future<folly::Unit> EdenDispatcher::forget(
fusell::InodeNumber ino,
InodeNumber ino,
unsigned long nlookup) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "forget({}, {})", ino, nlookup);
inodeMap_->decFuseRefcount(ino, nlookup);
return Unit{};
}
folly::Future<std::shared_ptr<fusell::FileHandle>> EdenDispatcher::open(
fusell::InodeNumber ino,
folly::Future<std::shared_ptr<FileHandle>> EdenDispatcher::open(
InodeNumber ino,
int flags) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "open({}, flags={:x})", ino, flags);
return inodeMap_->lookupFileInode(ino).then(
[flags](const FileInodePtr& inode) { return inode->open(flags); });
}
folly::Future<fusell::Dispatcher::Create> EdenDispatcher::create(
fusell::InodeNumber parent,
folly::Future<Dispatcher::Create> EdenDispatcher::create(
InodeNumber parent,
PathComponentPiece name,
mode_t mode,
int flags) {
@ -156,7 +155,7 @@ folly::Future<fusell::Dispatcher::Create> EdenDispatcher::create(
return parentInode->create(childName, mode, flags);
})
.then([=](TreeInode::CreateResult created) {
fusell::Dispatcher::Create result;
Dispatcher::Create result;
created.inode->incFuseRefcount();
result.entry =
computeEntryParam(created.inode->getNodeId(), created.attr);
@ -165,14 +164,14 @@ folly::Future<fusell::Dispatcher::Create> EdenDispatcher::create(
});
}
folly::Future<std::string> EdenDispatcher::readlink(fusell::InodeNumber ino) {
folly::Future<std::string> EdenDispatcher::readlink(InodeNumber ino) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "readlink({})", ino);
return inodeMap_->lookupFileInode(ino).then(
[](const FileInodePtr& inode) { return inode->readlink(); });
}
folly::Future<fuse_entry_out> EdenDispatcher::mknod(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
mode_t mode,
dev_t rdev) {
@ -187,7 +186,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::mknod(
return inodeMap_->lookupTreeInode(parent).then(
[childName = PathComponent{name}, mode, rdev](const TreeInodePtr& inode) {
auto child = inode->mknod(childName, mode, rdev);
return child->getattr().then([child](fusell::Dispatcher::Attr attr) {
return child->getattr().then([child](Dispatcher::Attr attr) {
child->incFuseRefcount();
return computeEntryParam(child->getNodeId(), attr);
});
@ -195,7 +194,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::mknod(
}
folly::Future<fuse_entry_out> EdenDispatcher::mkdir(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
mode_t mode) {
FB_LOGF(
@ -208,7 +207,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::mkdir(
return inodeMap_->lookupTreeInode(parent).then(
[childName = PathComponent{name}, mode](const TreeInodePtr& inode) {
auto child = inode->mkdir(childName, mode);
return child->getattr().then([child](fusell::Dispatcher::Attr attr) {
return child->getattr().then([child](Dispatcher::Attr attr) {
child->incFuseRefcount();
return computeEntryParam(child->getNodeId(), attr);
});
@ -216,7 +215,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::mkdir(
}
folly::Future<folly::Unit> EdenDispatcher::unlink(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "unlink({}, {})", parent, name);
return inodeMap_->lookupTreeInode(parent).then(
@ -226,7 +225,7 @@ folly::Future<folly::Unit> EdenDispatcher::unlink(
}
folly::Future<folly::Unit> EdenDispatcher::rmdir(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "rmdir({}, {})", parent, name);
return inodeMap_->lookupTreeInode(parent).then(
@ -236,7 +235,7 @@ folly::Future<folly::Unit> EdenDispatcher::rmdir(
}
folly::Future<fuse_entry_out> EdenDispatcher::symlink(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
StringPiece link) {
FB_LOGF(
@ -253,9 +252,9 @@ folly::Future<fuse_entry_out> EdenDispatcher::symlink(
}
folly::Future<folly::Unit> EdenDispatcher::rename(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece namePiece,
fusell::InodeNumber newParent,
InodeNumber newParent,
PathComponentPiece newNamePiece) {
FB_LOGF(
mount_->getStraceLogger(),
@ -281,8 +280,8 @@ folly::Future<folly::Unit> EdenDispatcher::rename(
}
folly::Future<fuse_entry_out> EdenDispatcher::link(
fusell::InodeNumber ino,
fusell::InodeNumber newParent,
InodeNumber ino,
InodeNumber newParent,
PathComponentPiece newName) {
FB_LOGF(
mount_->getStraceLogger(),
@ -299,9 +298,7 @@ folly::Future<fuse_entry_out> EdenDispatcher::link(
EPERM, "hard links are not supported in eden mount points");
}
Future<string> EdenDispatcher::getxattr(
fusell::InodeNumber ino,
StringPiece name) {
Future<string> EdenDispatcher::getxattr(InodeNumber ino, StringPiece name) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "getxattr({}, {})", ino, name);
return inodeMap_->lookupInode(ino).then(
[attrName = name.str()](const InodePtr& inode) {
@ -309,7 +306,7 @@ Future<string> EdenDispatcher::getxattr(
});
}
Future<vector<string>> EdenDispatcher::listxattr(fusell::InodeNumber ino) {
Future<vector<string>> EdenDispatcher::listxattr(InodeNumber ino) {
FB_LOGF(mount_->getStraceLogger(), DBG7, "listxattr({})", ino);
return inodeMap_->lookupInode(ino).then(
[](const InodePtr& inode) { return inode->listxattr(); });

View File

@ -23,7 +23,7 @@ class TreeInode;
/**
* A FUSE request dispatcher for eden mount points.
*/
class EdenDispatcher : public fusell::Dispatcher {
class EdenDispatcher : public Dispatcher {
public:
/*
* Create an EdenDispatcher.
@ -31,64 +31,54 @@ class EdenDispatcher : public fusell::Dispatcher {
*/
explicit EdenDispatcher(EdenMount* mount);
folly::Future<Attr> getattr(fusell::InodeNumber ino) override;
folly::Future<Attr> setattr(
fusell::InodeNumber ino,
const fuse_setattr_in& attr) override;
folly::Future<std::shared_ptr<fusell::DirHandle>> opendir(
fusell::InodeNumber ino,
int flags) override;
folly::Future<Attr> getattr(InodeNumber ino) override;
folly::Future<Attr> setattr(InodeNumber ino, const fuse_setattr_in& attr)
override;
folly::Future<std::shared_ptr<DirHandle>> opendir(InodeNumber ino, int flags)
override;
folly::Future<fuse_entry_out> lookup(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name) override;
folly::Future<folly::Unit> forget(
fusell::InodeNumber ino,
unsigned long nlookup) override;
folly::Future<std::shared_ptr<fusell::FileHandle>> open(
fusell::InodeNumber ino,
int flags) override;
folly::Future<std::string> readlink(fusell::InodeNumber ino) override;
folly::Future<folly::Unit> forget(InodeNumber ino, unsigned long nlookup)
override;
folly::Future<std::shared_ptr<FileHandle>> open(InodeNumber ino, int flags)
override;
folly::Future<std::string> readlink(InodeNumber ino) override;
folly::Future<fuse_entry_out> mknod(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
mode_t mode,
dev_t rdev) override;
folly::Future<fuse_entry_out> mkdir(
fusell::InodeNumber parent,
PathComponentPiece name,
mode_t mode) override;
folly::Future<folly::Unit> unlink(
fusell::InodeNumber parent,
PathComponentPiece name) override;
folly::Future<folly::Unit> rmdir(
fusell::InodeNumber parent,
PathComponentPiece name) override;
folly::Future<fuse_entry_out>
mkdir(InodeNumber parent, PathComponentPiece name, mode_t mode) override;
folly::Future<folly::Unit> unlink(InodeNumber parent, PathComponentPiece name)
override;
folly::Future<folly::Unit> rmdir(InodeNumber parent, PathComponentPiece name)
override;
folly::Future<fuse_entry_out> symlink(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
folly::StringPiece link) override;
folly::Future<folly::Unit> rename(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
fusell::InodeNumber newparent,
InodeNumber newparent,
PathComponentPiece newname) override;
folly::Future<fuse_entry_out> link(
fusell::InodeNumber ino,
fusell::InodeNumber newparent,
InodeNumber ino,
InodeNumber newparent,
PathComponentPiece newname) override;
folly::Future<Dispatcher::Create> create(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name,
mode_t mode,
int flags) override;
folly::Future<std::string> getxattr(
fusell::InodeNumber ino,
folly::StringPiece name) override;
folly::Future<std::vector<std::string>> listxattr(
fusell::InodeNumber ino) override;
folly::Future<std::string> getxattr(InodeNumber ino, folly::StringPiece name)
override;
folly::Future<std::vector<std::string>> listxattr(InodeNumber ino) override;
private:
// The EdenMount that owns this EdenDispatcher.

View File

@ -22,7 +22,7 @@ EdenFileHandle::~EdenFileHandle() {
inode_->fileHandleDidClose();
}
folly::Future<fusell::Dispatcher::Attr> EdenFileHandle::getattr() {
folly::Future<Dispatcher::Attr> EdenFileHandle::getattr() {
FB_LOGF(
inode_->getMount()->getStraceLogger(),
DBG7,
@ -31,11 +31,11 @@ folly::Future<fusell::Dispatcher::Attr> EdenFileHandle::getattr() {
return inode_->getattr();
}
fusell::InodeNumber EdenFileHandle::getInodeNumber() {
InodeNumber EdenFileHandle::getInodeNumber() {
return inode_->getNodeId();
}
folly::Future<fusell::Dispatcher::Attr> EdenFileHandle::setattr(
folly::Future<Dispatcher::Attr> EdenFileHandle::setattr(
const fuse_setattr_in& attr) {
FB_LOGF(
inode_->getMount()->getStraceLogger(),
@ -53,7 +53,7 @@ bool EdenFileHandle::isSeekable() const {
return true;
}
folly::Future<fusell::BufVec> EdenFileHandle::read(size_t size, off_t off) {
folly::Future<BufVec> EdenFileHandle::read(size_t size, off_t off) {
FB_LOGF(
inode_->getMount()->getStraceLogger(),
DBG7,
@ -64,7 +64,7 @@ folly::Future<fusell::BufVec> EdenFileHandle::read(size_t size, off_t off) {
return inode_->read(size, off);
}
folly::Future<size_t> EdenFileHandle::write(fusell::BufVec&& buf, off_t off) {
folly::Future<size_t> EdenFileHandle::write(BufVec&& buf, off_t off) {
FB_LOGF(
inode_->getMount()->getStraceLogger(),
DBG7,

View File

@ -18,7 +18,7 @@ class Blob;
class FileInode;
class LocalStore;
class EdenFileHandle : public fusell::FileHandle {
class EdenFileHandle : public FileHandle {
public:
/**
* The caller is responsible for incrementing any reference counts in the
@ -38,15 +38,14 @@ class EdenFileHandle : public fusell::FileHandle {
// Calls fileHandleDidClose on the associated inode.
~EdenFileHandle() override;
fusell::InodeNumber getInodeNumber() override;
folly::Future<fusell::Dispatcher::Attr> getattr() override;
folly::Future<fusell::Dispatcher::Attr> setattr(
const fuse_setattr_in& attr) override;
InodeNumber getInodeNumber() override;
folly::Future<Dispatcher::Attr> getattr() override;
folly::Future<Dispatcher::Attr> setattr(const fuse_setattr_in& attr) override;
bool preserveCache() const override;
bool isSeekable() const override;
folly::Future<fusell::BufVec> read(size_t size, off_t off) override;
folly::Future<BufVec> read(size_t size, off_t off) override;
folly::Future<size_t> write(fusell::BufVec&& buf, off_t off) override;
folly::Future<size_t> write(BufVec&& buf, off_t off) override;
folly::Future<size_t> write(folly::StringPiece data, off_t off) override;
folly::Future<folly::Unit> flush(uint64_t lock_owner) override;
folly::Future<folly::Unit> fsync(bool datasync) override;
@ -60,5 +59,6 @@ class EdenFileHandle : public fusell::FileHandle {
FileInodePtr inode_;
};
} // namespace eden
} // namespace facebook

View File

@ -44,8 +44,6 @@
#include "eden/fs/utils/Clock.h"
#include "eden/fs/utils/UnboundedQueueThreadPool.h"
using facebook::eden::fusell::FuseChannel;
using facebook::eden::fusell::FuseChannelData;
using folly::Future;
using folly::makeFuture;
using folly::setThreadName;
@ -370,7 +368,7 @@ const AbsolutePath& EdenMount::getPath() const {
return path_;
}
fusell::ThreadLocalEdenStats* EdenMount::getStats() const {
ThreadLocalEdenStats* EdenMount::getStats() const {
return &serverState_->getStats();
}
@ -388,7 +386,7 @@ folly::Future<std::shared_ptr<const Tree>> EdenMount::getRootTreeFuture()
return objectStore_->getTreeForCommit(commitHash);
}
fusell::InodeNumber EdenMount::getDotEdenInodeNumber() const {
InodeNumber EdenMount::getDotEdenInodeNumber() const {
return dotEdenInodeNumber_;
}

View File

@ -40,10 +40,6 @@ class Future;
namespace facebook {
namespace eden {
namespace fusell {
class FuseChannel;
class MountPoint;
} // namespace fusell
class BindMount;
class CheckoutConflict;
@ -51,9 +47,11 @@ class ClientConfig;
class Clock;
class DiffContext;
class EdenDispatcher;
class FuseChannel;
class InodeDiffCallback;
class InodeMap;
class Journal;
class MountPoint;
class ObjectStore;
class Overlay;
class ServerState;
@ -81,8 +79,7 @@ enum class CounterName {
* EdenMount contains all of the data about a specific eden mount point.
*
* This contains:
* - The fusell::MountPoint object which manages our FUSE interactions with the
* kernel.
* - The MountPoint object which manages our FUSE interactions with the kernel.
* - The ObjectStore object used for retreiving/storing object data.
* - The Overlay object used for storing local changes (that have not been
* committed/snapshotted yet).
@ -154,7 +151,7 @@ class EdenMount {
* synchronization here with the mount start operation. This method provides
* no internal synchronization of its own.)
*/
fusell::FuseChannel* getFuseChannel() const;
FuseChannel* getFuseChannel() const;
/**
* Return the path to the mount point.
@ -230,7 +227,7 @@ class EdenMount {
TreeInodePtr getRootInode() const;
/** Get the inode number for the .eden dir */
fusell::InodeNumber getDotEdenInodeNumber() const;
InodeNumber getDotEdenInodeNumber() const;
/** Convenience method for getting the Tree for the root of the mount. */
std::shared_ptr<const Tree> getRootTree() const;
@ -375,7 +372,7 @@ class EdenMount {
* Today this is the global stats instance, but in the future it will be
* a mount point specific instance.
*/
fusell::ThreadLocalEdenStats* getStats() const;
ThreadLocalEdenStats* getStats() const;
folly::Logger& getStraceLogger() {
return straceLogger_;
@ -418,7 +415,7 @@ class EdenMount {
* This spins up worker threads to service the existing FUSE channel and
* returns immediately, or throws an exception on error.
*/
void takeoverFuse(fusell::FuseChannelData takeoverData);
void takeoverFuse(FuseChannelData takeoverData);
/**
* Obtains a future that will complete once the fuse channel has wound down.
@ -554,7 +551,7 @@ class EdenMount {
* Once the FuseChannel has been initialized, set up callbacks to clean up
* correctly when the channel shuts down.
*/
void fuseInitSuccessful(fusell::FuseChannel::StopFuture&& fuseCompleteFuture);
void fuseInitSuccessful(FuseChannel::StopFuture&& fuseCompleteFuture);
/**
* Private destructor.
@ -580,7 +577,7 @@ class EdenMount {
std::unique_ptr<EdenDispatcher> dispatcher_;
std::unique_ptr<ObjectStore> objectStore_;
std::shared_ptr<Overlay> overlay_;
fusell::InodeNumber dotEdenInodeNumber_{};
InodeNumber dotEdenInodeNumber_{};
/**
* A mutex around all name-changing operations in this mount point.
@ -673,7 +670,7 @@ class EdenMount {
/**
* The associated fuse channel to the kernel.
*/
std::unique_ptr<fusell::FuseChannel, fusell::FuseChannelDeleter> channel_;
std::unique_ptr<FuseChannel, FuseChannelDeleter> channel_;
/**
* The clock. This is also available as serverState_->getClock().

View File

@ -147,7 +147,7 @@ folly::File FileInode::getFile(FileInode::State& state) const {
FileInode::State::~State() = default;
std::tuple<FileInodePtr, FileInode::FileHandlePtr> FileInode::create(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
@ -169,7 +169,7 @@ std::tuple<FileInodePtr, FileInode::FileHandlePtr> FileInode::create(
// The FileInode is in NOT_LOADED or MATERIALIZED_IN_OVERLAY state.
FileInode::FileInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
@ -184,7 +184,7 @@ FileInode::FileInode(
// The FileInode is in MATERIALIZED_IN_OVERLAY state.
FileInode::FileInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
@ -193,16 +193,16 @@ FileInode::FileInode(
: InodeBase(ino, mode_to_dtype(mode), std::move(parentInode), name),
state_(folly::in_place, this, mode, ctime) {}
folly::Future<fusell::Dispatcher::Attr> FileInode::getattr() {
folly::Future<Dispatcher::Attr> FileInode::getattr() {
// Future optimization opportunity: right now, if we have not already
// materialized the data from the entry, we have to materialize it
// from the store. If we augmented our metadata we could avoid this,
// and this would speed up operations like `ls`.
return stat().then(
[](const struct stat& st) { return fusell::Dispatcher::Attr{st}; });
[](const struct stat& st) { return Dispatcher::Attr{st}; });
}
folly::Future<fusell::Dispatcher::Attr> FileInode::setInodeAttr(
folly::Future<Dispatcher::Attr> FileInode::setInodeAttr(
const fuse_setattr_in& attr) {
// Minor optimization: if we know that the file is being completely truncated
// as part of this operation, there's no need to fetch the underlying data,
@ -214,7 +214,7 @@ folly::Future<fusell::Dispatcher::Attr> FileInode::setInodeAttr(
return future.then([self = inodePtrFromThis(), attr]() {
self->materializeInParent();
auto result = fusell::Dispatcher::Attr{self->getMount()->initStatData()};
auto result = Dispatcher::Attr{self->getMount()->initStatData()};
auto state = self->state_.wlock();
CHECK_EQ(State::MATERIALIZED_IN_OVERLAY, state->tag)
@ -354,7 +354,7 @@ folly::Optional<Hash> FileInode::getBlobHash() const {
return state_.rlock()->hash;
}
folly::Future<std::shared_ptr<fusell::FileHandle>> FileInode::open(int flags) {
folly::Future<std::shared_ptr<FileHandle>> FileInode::open(int flags) {
if (dtype_t::Symlink == getType()) {
// Linux reports ELOOP if you try to open a symlink with O_NOFOLLOW set.
// Since it isn't clear whether FUSE will allow this to happen, this
@ -562,7 +562,7 @@ folly::Future<std::string> FileInode::readAll() {
});
}
fusell::BufVec FileInode::read(size_t size, off_t off) {
BufVec FileInode::read(size_t size, off_t off) {
// It's potentially possible here to optimize a fast path here only requiring
// a read lock. However, since a write lock is required to update atime and
// cache the file handle in the case of a materialized file, do the simple
@ -582,7 +582,7 @@ fusell::BufVec FileInode::read(size_t size, off_t off) {
checkUnixError(res);
buf->append(res);
return fusell::BufVec{std::move(buf)};
return BufVec{std::move(buf)};
} else {
// read() is either called by the FileHandle or FileInode. They must
// guarantee openCount > 0.
@ -592,7 +592,7 @@ fusell::BufVec FileInode::read(size_t size, off_t off) {
if (!cursor.canAdvance(off)) {
// Seek beyond EOF. Return an empty result.
return fusell::BufVec{folly::IOBuf::wrapBuffer("", 0)};
return BufVec{folly::IOBuf::wrapBuffer("", 0)};
}
cursor.skip(off);
@ -600,11 +600,11 @@ fusell::BufVec FileInode::read(size_t size, off_t off) {
std::unique_ptr<folly::IOBuf> result;
cursor.cloneAtMost(result, size);
return fusell::BufVec{std::move(result)};
return BufVec{std::move(result)};
}
}
folly::Future<size_t> FileInode::write(fusell::BufVec&& buf, off_t off) {
folly::Future<size_t> FileInode::write(BufVec&& buf, off_t off) {
auto state = state_.wlock();
if (State::MATERIALIZED_IN_OVERLAY != state->tag) {

View File

@ -23,11 +23,8 @@ class File;
namespace facebook {
namespace eden {
namespace fusell {
class BufVec;
}
class Blob;
class BufVec;
class EdenFileHandle;
class Hash;
class ObjectStore;
@ -44,7 +41,7 @@ class FileInode : public InodeBase {
* returns a new EdenFileHandle to it.
*/
static std::tuple<FileInodePtr, FileHandlePtr> create(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
@ -57,7 +54,7 @@ class FileInode : public InodeBase {
* NOT_LOADED state.
*/
FileInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
@ -69,19 +66,19 @@ class FileInode : public InodeBase {
* Overlay::openFile.
*/
FileInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parentInode,
PathComponentPiece name,
mode_t mode,
folly::File&& file,
timespec ctime);
folly::Future<fusell::Dispatcher::Attr> getattr() override;
folly::Future<Dispatcher::Attr> getattr() override;
/// Throws InodeError EINVAL if inode is not a symbolic node.
folly::Future<std::string> readlink();
folly::Future<std::shared_ptr<fusell::FileHandle>> open(int flags);
folly::Future<std::shared_ptr<FileHandle>> open(int flags);
folly::Future<std::vector<std::string>> listxattr() override;
folly::Future<std::string> getxattr(folly::StringPiece name) override;
@ -359,9 +356,9 @@ class FileInode : public InodeBase {
* Precondition: openCount > 0. This is held because read is only called by
* FileInode or FileHandle.
*/
fusell::BufVec read(size_t size, off_t off);
BufVec read(size_t size, off_t off);
folly::Future<size_t> write(fusell::BufVec&& buf, off_t off);
folly::Future<size_t> write(BufVec&& buf, off_t off);
folly::Future<struct stat> stat();
void flush(uint64_t lock_owner);
@ -376,7 +373,7 @@ class FileInode : public InodeBase {
* Helper function used in setattr to perform FileInode specific operations
* during setattr.
*/
folly::Future<fusell::Dispatcher::Attr> setInodeAttr(
folly::Future<Dispatcher::Attr> setInodeAttr(
const fuse_setattr_in& attr) override;
folly::Synchronized<State> state_;

View File

@ -42,7 +42,7 @@ InodeBase::InodeBase(EdenMount* mount)
}
InodeBase::InodeBase(
fusell::InodeNumber ino,
InodeNumber ino,
dtype_t type,
TreeInodePtr parent,
PathComponentPiece name)
@ -58,7 +58,7 @@ InodeBase::InodeBase(
}
// See Dispatcher::getattr
folly::Future<fusell::Dispatcher::Attr> InodeBase::getattr() {
folly::Future<Dispatcher::Attr> InodeBase::getattr() {
FUSELL_NOT_IMPL();
}
folly::Future<folly::Unit> InodeBase::setxattr(
@ -316,7 +316,7 @@ ParentInodeInfo InodeBase::getParentInfo() const {
}
// See Dispatcher::setattr
folly::Future<fusell::Dispatcher::Attr> InodeBase::setattr(
folly::Future<Dispatcher::Attr> InodeBase::setattr(
const fuse_setattr_in& attr) {
// Check if gid and uid are same or not.
if (attr.valid & (FATTR_UID | FATTR_GID)) {

View File

@ -41,14 +41,14 @@ class InodeBase {
* Constructor for all non-root inodes.
*/
InodeBase(
fusell::InodeNumber ino,
InodeNumber ino,
dtype_t type,
TreeInodePtr parent,
PathComponentPiece name);
virtual ~InodeBase();
fusell::InodeNumber getNodeId() const {
InodeNumber getNodeId() const {
return ino_;
}
@ -102,11 +102,10 @@ class InodeBase {
}
// See Dispatcher::getattr
virtual folly::Future<fusell::Dispatcher::Attr> getattr();
virtual folly::Future<Dispatcher::Attr> getattr();
// See Dispatcher::setattr
virtual folly::Future<fusell::Dispatcher::Attr> setattr(
const fuse_setattr_in& attr);
virtual folly::Future<Dispatcher::Attr> setattr(const fuse_setattr_in& attr);
virtual folly::Future<folly::Unit>
setxattr(folly::StringPiece name, folly::StringPiece value, int flags);
@ -402,10 +401,10 @@ class InodeBase {
* present and fills timestamps and other FileInode related fields or
* TreeInode related fields.
*/
virtual folly::Future<fusell::Dispatcher::Attr> setInodeAttr(
virtual folly::Future<Dispatcher::Attr> setInodeAttr(
const fuse_setattr_in& attr) = 0;
fusell::InodeNumber const ino_;
InodeNumber const ino_;
dtype_t const type_;
@ -423,8 +422,8 @@ class InodeBase {
* API has performed on this inode. We must remember this inode number
* for as long as the FUSE API has references to it. (However, we may unload
* the Inode object itself, destroying ourself and letting the InodeMap
* simply remember the association of the fusell::InodeNumber with our
* location in the file system.)
* simply remember the association of the InodeNumber with our location in
* the file system.)
*/
std::atomic<uint32_t> numFuseReferences_{0};

View File

@ -49,7 +49,7 @@ InodeMap::~InodeMap() {
// destroy the EdenMount.
}
void InodeMap::setMaximumExistingInodeNumber(fusell::InodeNumber max) {
void InodeMap::setMaximumExistingInodeNumber(InodeNumber max) {
DCHECK_GE(max, kRootNodeId);
auto previous = nextInodeNumber_.exchange(max.get() + 1);
DCHECK_EQ(0, previous) << "setMaximumExistingInodeNumber called twice";
@ -82,8 +82,8 @@ void InodeMap::initializeFromTakeover(
nextInodeNumber_.store(takeover.nextInodeNumber);
for (const auto& entry : takeover.unloadedInodes) {
auto unloadedEntry = UnloadedInode(
fusell::InodeNumber::fromThrift(entry.inodeNumber),
fusell::InodeNumber::fromThrift(entry.parentInode),
InodeNumber::fromThrift(entry.inodeNumber),
InodeNumber::fromThrift(entry.parentInode),
PathComponentPiece{entry.name});
unloadedEntry.numFuseReferences = entry.numFuseReferences;
if (entry.numFuseReferences < 0) {
@ -101,8 +101,7 @@ void InodeMap::initializeFromTakeover(
unloadedEntry.mode = entry.mode;
auto result = data->unloadedInodes_.emplace(
fusell::InodeNumber::fromThrift(entry.inodeNumber),
std::move(unloadedEntry));
InodeNumber::fromThrift(entry.inodeNumber), std::move(unloadedEntry));
if (!result.second) {
auto message = folly::to<std::string>(
"failed to emplace inode number ",
@ -114,7 +113,7 @@ void InodeMap::initializeFromTakeover(
}
}
Future<InodePtr> InodeMap::lookupInode(fusell::InodeNumber number) {
Future<InodePtr> InodeMap::lookupInode(InodeNumber number) {
// Lock the data.
// We hold it while doing most of our work below, but explicitly unlock it
// before triggering inode loading or before fulfilling any Promises.
@ -136,9 +135,9 @@ Future<InodePtr> InodeMap::lookupInode(fusell::InodeNumber number) {
// Look up the data in the unloadedInodes_ map.
auto unloadedIter = data->unloadedInodes_.find(number);
if (UNLIKELY(unloadedIter == data->unloadedInodes_.end())) {
// This generally shouldn't happen. If a fusell::InodeNumber has been
// allocated we should always know about it. It's a bug if our caller calls
// us with an invalid fusell::InodeNumber number.
// This generally shouldn't happen. If a InodeNumber has been allocated we
// should always know about it. It's a bug if our caller calls us with an
// invalid InodeNumber number.
auto bug = EDEN_BUG() << "InodeMap called with unknown inode number "
<< number;
return folly::makeFuture<InodePtr>(bug.toException());
@ -239,7 +238,7 @@ void InodeMap::setupParentLookupPromise(
Promise<InodePtr>& promise,
PathComponentPiece childName,
bool isUnlinked,
fusell::InodeNumber childInodeNumber,
InodeNumber childInodeNumber,
folly::Optional<Hash> hash,
mode_t mode) {
promise.getFuture()
@ -261,7 +260,7 @@ void InodeMap::startChildLookup(
const InodePtr& parent,
PathComponentPiece childName,
bool isUnlinked,
fusell::InodeNumber childInodeNumber,
InodeNumber childInodeNumber,
folly::Optional<Hash> hash,
mode_t mode) {
auto treeInode = parent.asTreePtrOrNull();
@ -322,7 +321,7 @@ InodeMap::PromiseVector InodeMap::inodeLoadComplete(InodeBase* inode) {
}
void InodeMap::inodeLoadFailed(
fusell::InodeNumber number,
InodeNumber number,
const folly::exception_wrapper& ex) {
XLOG(ERR) << "failed to load inode " << number << ": "
<< folly::exceptionStr(ex);
@ -332,8 +331,7 @@ void InodeMap::inodeLoadFailed(
}
}
InodeMap::PromiseVector InodeMap::extractPendingPromises(
fusell::InodeNumber number) {
InodeMap::PromiseVector InodeMap::extractPendingPromises(InodeNumber number) {
PromiseVector promises;
{
auto data = data_.wlock();
@ -346,17 +344,17 @@ InodeMap::PromiseVector InodeMap::extractPendingPromises(
return promises;
}
Future<TreeInodePtr> InodeMap::lookupTreeInode(fusell::InodeNumber number) {
Future<TreeInodePtr> InodeMap::lookupTreeInode(InodeNumber number) {
return lookupInode(number).then(
[](const InodePtr& inode) { return inode.asTreePtr(); });
}
Future<FileInodePtr> InodeMap::lookupFileInode(fusell::InodeNumber number) {
Future<FileInodePtr> InodeMap::lookupFileInode(InodeNumber number) {
return lookupInode(number).then(
[](const InodePtr& inode) { return inode.asFilePtr(); });
}
InodePtr InodeMap::lookupLoadedInode(fusell::InodeNumber number) {
InodePtr InodeMap::lookupLoadedInode(InodeNumber number) {
auto data = data_.rlock();
auto it = data->loadedInodes_.find(number);
if (it == data->loadedInodes_.end()) {
@ -365,7 +363,7 @@ InodePtr InodeMap::lookupLoadedInode(fusell::InodeNumber number) {
return it->second.getPtr();
}
TreeInodePtr InodeMap::lookupLoadedTree(fusell::InodeNumber number) {
TreeInodePtr InodeMap::lookupLoadedTree(InodeNumber number) {
auto inode = lookupLoadedInode(number);
if (!inode) {
return nullptr;
@ -373,7 +371,7 @@ TreeInodePtr InodeMap::lookupLoadedTree(fusell::InodeNumber number) {
return inode.asTreePtr();
}
FileInodePtr InodeMap::lookupLoadedFile(fusell::InodeNumber number) {
FileInodePtr InodeMap::lookupLoadedFile(InodeNumber number) {
auto inode = lookupLoadedInode(number);
if (!inode) {
return nullptr;
@ -381,13 +379,13 @@ FileInodePtr InodeMap::lookupLoadedFile(fusell::InodeNumber number) {
return inode.asFilePtr();
}
UnloadedInodeData InodeMap::lookupUnloadedInode(fusell::InodeNumber number) {
UnloadedInodeData InodeMap::lookupUnloadedInode(InodeNumber number) {
auto data = data_.rlock();
auto it = data->unloadedInodes_.find(number);
if (it == data->unloadedInodes_.end()) {
// This generally shouldn't happen. If a fusell::InodeNumber has been
// allocated we should always know about it. It's a bug if our caller calls
// us with an invalid fusell::InodeNumber number.
// This generally shouldn't happen. If a InodeNumber has been allocated we
// should always know about it. It's a bug if our caller calls us with an
// invalid InodeNumber number.
XLOG(ERR) << "InodeMap called with unknown inode number " << number;
throwSystemErrorExplicit(EINVAL, "unknown inode number ", number);
}
@ -396,13 +394,13 @@ UnloadedInodeData InodeMap::lookupUnloadedInode(fusell::InodeNumber number) {
}
folly::Optional<RelativePath> InodeMap::getPathForInode(
fusell::InodeNumber inodeNumber) {
InodeNumber inodeNumber) {
auto data = data_.rlock();
return getPathForInodeHelper(inodeNumber, data);
}
folly::Optional<RelativePath> InodeMap::getPathForInodeHelper(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
const folly::Synchronized<Members>::ConstLockedPtr& data) {
auto loadedIt = data->loadedInodes_.find(inodeNumber);
if (loadedIt != data->loadedInodes_.cend()) {
@ -433,7 +431,7 @@ folly::Optional<RelativePath> InodeMap::getPathForInodeHelper(
}
}
void InodeMap::decFuseRefcount(fusell::InodeNumber number, uint32_t count) {
void InodeMap::decFuseRefcount(InodeNumber number, uint32_t count) {
auto data = data_.wlock();
// First check in the loaded inode map
@ -731,7 +729,7 @@ void InodeMap::unloadInode(
bool InodeMap::shouldLoadChild(
const TreeInode* parent,
PathComponentPiece name,
fusell::InodeNumber childInode,
InodeNumber childInode,
folly::Promise<InodePtr> promise) {
auto data = data_.wlock();
// This is a sanity check - no big deal if we race with allocateInodeNumber.
@ -739,7 +737,7 @@ bool InodeMap::shouldLoadChild(
auto iter = data->unloadedInodes_.find(childInode);
UnloadedInode* unloadedData{nullptr};
if (iter == data->unloadedInodes_.end()) {
fusell::InodeNumber parentNumber = parent->getNodeId();
InodeNumber parentNumber = parent->getNodeId();
auto newUnloadedData = UnloadedInode(childInode, parentNumber, name);
auto ret =
data->unloadedInodes_.emplace(childInode, std::move(newUnloadedData));
@ -761,24 +759,23 @@ bool InodeMap::shouldLoadChild(
return isFirstPromise;
}
fusell::InodeNumber InodeMap::allocateInodeNumber() {
// fusell::InodeNumber should generally be 64-bits wide, in which case it
// isn't even worth bothering to handle the case where nextInodeNumber_ wraps.
// We don't need to bother checking for conflicts with existing inode numbers
// since this can only happen if we wrap around.
// We don't currently support platforms with 32-bit inode numbers.
InodeNumber InodeMap::allocateInodeNumber() {
// InodeNumber should generally be 64-bits wide, in which case it isn't even
// worth bothering to handle the case where nextInodeNumber_ wraps. We don't
// need to bother checking for conflicts with existing inode numbers since
// this can only happen if we wrap around. We don't currently support
// platforms with 32-bit inode numbers.
static_assert(
sizeof(nextInodeNumber_) == sizeof(fusell::InodeNumber),
"expected nextInodeNumber_ and fusell::InodeNumber to have the same size");
sizeof(nextInodeNumber_) == sizeof(InodeNumber),
"expected nextInodeNumber_ and InodeNumber to have the same size");
static_assert(
sizeof(fusell::InodeNumber) >= 8,
"expected fusell::InodeNumber to be at least 64 bits");
sizeof(InodeNumber) >= 8, "expected InodeNumber to be at least 64 bits");
// This could be a relaxed atomic operation. It doesn't matter on x86 but
// might on ARM.
auto previous = nextInodeNumber_++;
DCHECK_NE(0, previous) << "allocateInodeNumber called before initialize";
return fusell::InodeNumber{previous};
return InodeNumber{previous};
}
void InodeMap::inodeCreated(const InodePtr& inode) {

View File

@ -35,28 +35,25 @@ class TreeInode;
class ParentInodeInfo;
struct UnloadedInodeData {
UnloadedInodeData(fusell::InodeNumber p, PathComponentPiece n)
: parent(p), name(n) {}
UnloadedInodeData(InodeNumber p, PathComponentPiece n) : parent(p), name(n) {}
fusell::InodeNumber const parent;
InodeNumber const parent;
PathComponent const name;
};
class InodeMapLock;
/**
* InodeMap allows looking up Inode objects based on a inode number
* (fusell::InodeNumber).
* InodeMap allows looking up Inode objects based on a inode number.
*
* All operations on this class are thread-safe.
*
* Note that fusell::InodeNumber values and Inode objects have separate
* lifetimes:
* - fusell::InodeNumber numbers are allocated when we need to return a
* fusell::InodeNumber value to the FUSE APIs. These are generally allocated by
* lookup() calls. FUSE will call forget() to let us know when we can forget
* about a fusell::InodeNumber value. (We may not necessarily forget about the
* fusell::InodeNumber value immediately, though.)
* Note that InodeNumber values and Inode objects have separate lifetimes:
* - Inode numbers are allocated when we need to return a InodeNumber value to
* the FUSE APIs. These are generally allocated by lookup() calls. FUSE will
* call forget() to let us know when we can forget about a InodeNumber value.
* (We may not necessarily forget about the InodeNumber value immediately,
* though.)
*
* - InodeBase objects are needed when we have to actually operate on a file or
* directory. Any operation more than looking up a file name (or some of its
@ -71,26 +68,26 @@ class InodeMapLock;
* the entire repository we don't want to keep Inode objects loaded for all
* files forever.)
*
* We can unload an InodeBase object even when the fusell::InodeNumber value is
* still valid. Therefore this class contains two separate maps:
* - (fusell::InodeNumber --> InodeBase)
* We can unload an InodeBase object even when the InodeNumber value is still
* valid. Therefore this class contains two separate maps:
* - (InodeNumber --> InodeBase)
* This map stores all currently loaded Inodes.
* - (fusell::InodeNumber --> (parent fusell::InodeNumber, name))
* - (InodeNumber --> (parent InodeNumber, name))
* This map contains information about Inodes that are not currently loaded.
* This map contains enough information to identify the file or directory in
* question if we do need to load the inode. The parent directory's
* fusell::InodeNumber may not be loaded either; we have to load it first in
* order to load the inode in question.
* InodeNumber may not be loaded either; we have to load it first in order to
* load the inode in question.
*
* Additional Notes about fusell::InodeNumber allocation:
* - fusell::InodeNumber numbers are primarily allocated via the
* Additional Notes about InodeNumber allocation:
* - InodeNumber numbers are primarily allocated via the
* EdenDispatcher::lookup() call.
*
* Rather than only allocate a fusell::InodeNumber in this case, we go ahead
* and load the actual TreeInode/FileInode, since FUSE is very likely to make
* another call for this inode next. Therefore, in this case the newly
* allocated inode number is inserted directly into loadedInodes_, without ever
* being in unloadedInodes_.
* Rather than only allocate a InodeNumber in this case, we go ahead and load
* the actual TreeInode/FileInode, since FUSE is very likely to make another
* call for this inode next. Therefore, in this case the newly allocated
* inode number is inserted directly into loadedInodes_, without ever being
* in unloadedInodes_.
*
* The unloadedInodes_ map is primarily for inodes that were loaded and have
* since been unloaded due to inactivity.
@ -98,8 +95,8 @@ class InodeMapLock;
* - Inode objects can either be allocated via EdenDispatcher::lookup(), or via
* an operation on a TreeInode looking up a child entry.
*
* We currently always allocate a fusell::InodeNumber value for any new Inode
* object even if it is not needed yet by the FUSE APIs.
* We currently always allocate a InodeNumber value for any new Inode object
* even if it is not needed yet by the FUSE APIs.
*/
class InodeMap {
public:
@ -121,7 +118,7 @@ class InodeMap {
* mounted before, this should be the maximum value across all the
* outstanding inodes.
*/
void setMaximumExistingInodeNumber(fusell::InodeNumber max);
void setMaximumExistingInodeNumber(InodeNumber max);
/**
* Initialize the InodeMap
@ -175,7 +172,7 @@ class InodeMap {
* invoked immediately in the calling thread (if the Inode is already
* available), or it may be invoked later in a different thread.
*/
folly::Future<InodePtr> lookupInode(fusell::InodeNumber number);
folly::Future<InodePtr> lookupInode(InodeNumber number);
/**
* Lookup a TreeInode object by inode number.
@ -184,7 +181,7 @@ class InodeMap {
* The returned Future throws ENOTDIR if this inode number does not refer to
* a directory.
*/
folly::Future<TreeInodePtr> lookupTreeInode(fusell::InodeNumber number);
folly::Future<TreeInodePtr> lookupTreeInode(InodeNumber number);
/**
* Lookup a FileInode object by inode number.
@ -193,7 +190,7 @@ class InodeMap {
* The returned Future throws EISDIR if this inode number refers to a
* directory.
*/
folly::Future<FileInodePtr> lookupFileInode(fusell::InodeNumber number);
folly::Future<FileInodePtr> lookupFileInode(InodeNumber number);
/**
* Lookup an Inode object by inode number, if it alread exists.
@ -202,7 +199,7 @@ class InodeMap {
* but nullptr if one is not loaded. lookupUnloadedInode() can then be
* called to find data for the unloaded inode.
*/
InodePtr lookupLoadedInode(fusell::InodeNumber number);
InodePtr lookupLoadedInode(InodeNumber number);
/**
* Lookup a loaded TreeInode object by inode number, if it alread exists.
@ -210,7 +207,7 @@ class InodeMap {
* Returns nullptr if this inode object is not currently loaded.
* Throws ENOTDIR if this inode is loaded but does not refer to a directory.
*/
TreeInodePtr lookupLoadedTree(fusell::InodeNumber number);
TreeInodePtr lookupLoadedTree(InodeNumber number);
/**
* Lookup a loaded FileInode object by inode number, if it alread exists.
@ -218,7 +215,7 @@ class InodeMap {
* Returns nullptr if this inode object is not currently loaded.
* Throws EISDIR if this inode is loaded but refers to a directory.
*/
FileInodePtr lookupLoadedFile(fusell::InodeNumber number);
FileInodePtr lookupLoadedFile(InodeNumber number);
/**
* Lookup data about an unloaded Inode object.
@ -227,7 +224,7 @@ class InodeMap {
* inode is not currently loaded. Unloaded inode data will only be found if
* the object is not currently loaded.
*/
UnloadedInodeData lookupUnloadedInode(fusell::InodeNumber number);
UnloadedInodeData lookupUnloadedInode(InodeNumber number);
/**
* Recursively determines the path for a loaded or unloaded inode. If the
@ -239,8 +236,7 @@ class InodeMap {
* If there is an unlinked inode in the path, this function returns
* folly::none. If the inode is invalid, it throws EINVAL.
*/
folly::Optional<RelativePath> getPathForInode(
fusell::InodeNumber inodeNumber);
folly::Optional<RelativePath> getPathForInode(InodeNumber inodeNumber);
/**
* Decrement the number of outstanding FUSE references to an inode number.
@ -252,7 +248,7 @@ class InodeMap {
* object. Therefore decrements are performed on the InodeMap so that we can
* avoid loading an Inode object just to decrement its reference count.
*/
void decFuseRefcount(fusell::InodeNumber number, uint32_t count = 1);
void decFuseRefcount(InodeNumber number, uint32_t count = 1);
/**
* Shutdown the InodeMap.
@ -345,7 +341,7 @@ class InodeMap {
bool shouldLoadChild(
const TreeInode* parent,
PathComponentPiece name,
fusell::InodeNumber childInode,
InodeNumber childInode,
folly::Promise<InodePtr> promise);
/**
@ -369,7 +365,7 @@ class InodeMap {
* This should be called when an attempt to load a child inode fails.
*/
void inodeLoadFailed(
fusell::InodeNumber number,
InodeNumber number,
const folly::exception_wrapper& exception);
/**
@ -389,7 +385,7 @@ class InodeMap {
* TODO: It would be easy to extend this function to allocate a range of
* inode values in one atomic operation.
*/
fusell::InodeNumber allocateInodeNumber();
InodeNumber allocateInodeNumber();
void inodeCreated(const InodePtr& inode);
@ -422,13 +418,13 @@ class InodeMap {
*/
struct UnloadedInode {
UnloadedInode(
fusell::InodeNumber num,
fusell::InodeNumber parentNum,
InodeNumber num,
InodeNumber parentNum,
PathComponentPiece entryName)
: number(num), parent(parentNum), name(entryName) {}
fusell::InodeNumber const number;
fusell::InodeNumber const parent;
InodeNumber const number;
InodeNumber const parent;
PathComponent const name;
/**
@ -514,12 +510,12 @@ class InodeMap {
* looked up the InodeMap will wrap the Inode in an InodePtr so that the
* caller acquires a reference.
*/
std::unordered_map<fusell::InodeNumber, LoadedInode> loadedInodes_;
std::unordered_map<InodeNumber, LoadedInode> loadedInodes_;
/**
* The map of currently unloaded inodes
*/
std::unordered_map<fusell::InodeNumber, UnloadedInode> unloadedInodes_;
std::unordered_map<InodeNumber, UnloadedInode> unloadedInodes_;
/**
* A promise to fulfill once shutdown() completes.
@ -544,14 +540,14 @@ class InodeMap {
folly::Promise<InodePtr>& promise,
PathComponentPiece childName,
bool isUnlinked,
fusell::InodeNumber childInodeNumber,
InodeNumber childInodeNumber,
folly::Optional<Hash> hash,
mode_t mode);
void startChildLookup(
const InodePtr& parent,
PathComponentPiece childName,
bool isUnlinked,
fusell::InodeNumber childInodeNumber,
InodeNumber childInodeNumber,
folly::Optional<Hash> hash,
mode_t mode);
@ -562,10 +558,10 @@ class InodeMap {
* This method acquires the data_ lock internally.
* It should never be called while already holding the lock.
*/
PromiseVector extractPendingPromises(fusell::InodeNumber number);
PromiseVector extractPendingPromises(InodeNumber number);
folly::Optional<RelativePath> getPathForInodeHelper(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
const folly::Synchronized<Members>::ConstLockedPtr& data);
/**

View File

@ -205,7 +205,7 @@ void Overlay::initNewOverlay() {
}
Optional<TreeInode::Dir> Overlay::loadOverlayDir(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
InodeMap* /*inodeMap*/) const {
TreeInode::Dir result;
auto dirData = deserializeOverlayDir(inodeNumber, result.timeStamps);
@ -225,16 +225,15 @@ Optional<TreeInode::Dir> Overlay::loadOverlayDir(
result.entries.emplace(
PathComponentPiece{name},
value.mode,
fusell::InodeNumber::fromThrift(value.inodeNumber));
InodeNumber::fromThrift(value.inodeNumber));
}
}
return folly::Optional<TreeInode::Dir>(std::move(result));
}
void Overlay::saveOverlayDir(
fusell::InodeNumber inodeNumber,
const TreeInode::Dir& dir) const {
void Overlay::saveOverlayDir(InodeNumber inodeNumber, const TreeInode::Dir& dir)
const {
// TODO: T20282158 clean up access of child inode information.
//
// Translate the data to the thrift equivalents
@ -278,14 +277,14 @@ void Overlay::saveOverlayDir(
getFilePath(inodeNumber).stringPiece(), iov.data(), iov.size());
}
void Overlay::removeOverlayData(fusell::InodeNumber inodeNumber) const {
void Overlay::removeOverlayData(InodeNumber inodeNumber) const {
auto path = getFilePath(inodeNumber);
if (::unlink(path.value().c_str()) != 0 && errno != ENOENT) {
folly::throwSystemError("error unlinking overlay file: ", path);
}
}
fusell::InodeNumber Overlay::getMaxRecordedInode() {
InodeNumber Overlay::getMaxRecordedInode() {
// TODO: We should probably store the max inode number in the header file
// during graceful unmount. When opening an overlay we can then simply read
// back the max inode number from this file if the overlay was shut down
@ -304,7 +303,7 @@ fusell::InodeNumber Overlay::getMaxRecordedInode() {
// simpler scan of opening every single file. For now we have to walk the
// directory tree from the root downwards.
auto maxInode = kRootNodeId;
std::vector<fusell::InodeNumber> toProcess;
std::vector<InodeNumber> toProcess;
toProcess.push_back(maxInode);
while (!toProcess.empty()) {
auto dirInodeNumber = toProcess.back();
@ -320,8 +319,7 @@ fusell::InodeNumber Overlay::getMaxRecordedInode() {
if (entry.second.inodeNumber == 0) {
continue;
}
auto entryInode =
fusell::InodeNumber::fromThrift(entry.second.inodeNumber);
auto entryInode = InodeNumber::fromThrift(entry.second.inodeNumber);
maxInode = std::max(maxInode, entryInode);
if (mode_to_dtype(entry.second.mode) == dtype_t::Dir) {
toProcess.push_back(entryInode);
@ -343,8 +341,7 @@ fusell::InodeNumber Overlay::getMaxRecordedInode() {
auto entryInodeNumber =
folly::tryTo<uint64_t>(entry.path().filename().string());
if (entryInodeNumber.hasValue()) {
maxInode =
std::max(maxInode, fusell::InodeNumber{entryInodeNumber.value()});
maxInode = std::max(maxInode, InodeNumber{entryInodeNumber.value()});
}
}
}
@ -356,7 +353,7 @@ const AbsolutePath& Overlay::getLocalDir() const {
return localDir_;
}
AbsolutePath Overlay::getFilePath(fusell::InodeNumber inodeNumber) const {
AbsolutePath Overlay::getFilePath(InodeNumber inodeNumber) const {
std::array<char, 2> subdir;
formatSubdirPath(
MutableStringPiece{subdir.data(), subdir.size()}, inodeNumber.get());
@ -367,7 +364,7 @@ AbsolutePath Overlay::getFilePath(fusell::InodeNumber inodeNumber) const {
}
Optional<overlay::OverlayDir> Overlay::deserializeOverlayDir(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
InodeTimestamps& timeStamps) const {
auto path = getFilePath(inodeNumber);
@ -467,7 +464,7 @@ void Overlay::addHeaderToOverlayFile(int fd, timespec ctime) {
// Helper function to create an overlay file
folly::File Overlay::createOverlayFile(
fusell::InodeNumber childNumber,
InodeNumber childNumber,
timespec ctime) {
auto filePath = getFilePath(childNumber);
folly::File file(filePath.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);

View File

@ -50,19 +50,17 @@ class Overlay {
/** Returns the path to the root of the Overlay storage area */
const AbsolutePath& getLocalDir() const;
void saveOverlayDir(
fusell::InodeNumber inodeNumber,
const TreeInode::Dir& dir) const;
void saveOverlayDir(InodeNumber inodeNumber, const TreeInode::Dir& dir) const;
folly::Optional<TreeInode::Dir> loadOverlayDir(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
InodeMap* inodeMap) const;
void removeOverlayData(fusell::InodeNumber inodeNumber) const;
void removeOverlayData(InodeNumber inodeNumber) const;
/**
* Get the path to the overlay file for the given inode
*/
AbsolutePath getFilePath(fusell::InodeNumber inodeNumber) const;
AbsolutePath getFilePath(InodeNumber inodeNumber) const;
/**
* Creates header for the files stored in Overlay
*/
@ -84,9 +82,7 @@ class Overlay {
/**
* Helper function that creates a new overlay file and adds header to it
*/
folly::File createOverlayFile(
fusell::InodeNumber childNumber,
timespec ctime);
folly::File createOverlayFile(InodeNumber childNumber, timespec ctime);
/**
* Updates the timestamps of an overlay file appropriately
@ -103,7 +99,7 @@ class Overlay {
* handed out from this point forwards are always greater than any inodes
* already tracked in the overlay.
*/
fusell::InodeNumber getMaxRecordedInode();
InodeNumber getMaxRecordedInode();
/**
* Constants for an header in overlay file.
@ -119,7 +115,7 @@ class Overlay {
void readExistingOverlay(int infoFD);
void initNewOverlay();
folly::Optional<overlay::OverlayDir> deserializeOverlayDir(
fusell::InodeNumber inodeNumber,
InodeNumber inodeNumber,
InodeTimestamps& timeStamps) const;
/**
* Helper function to add header to the overlay file

View File

@ -59,7 +59,7 @@ class ServerState {
* Get the ThreadLocalEdenStats object that tracks process-wide (rather than
* per-mount) statistics.
*/
fusell::ThreadLocalEdenStats& getStats() {
ThreadLocalEdenStats& getStats() {
return edenStats_;
}
@ -97,7 +97,7 @@ class ServerState {
private:
AbsolutePath socketPath_;
UserInfo userInfo_;
fusell::ThreadLocalEdenStats edenStats_;
ThreadLocalEdenStats edenStats_;
std::shared_ptr<PrivHelper> privHelper_;
std::shared_ptr<UnboundedQueueThreadPool> threadPool_;
std::shared_ptr<Clock> clock_;

View File

@ -91,7 +91,7 @@ class TreeInode::IncompleteInodeLoad {
TreeInode* inode,
Future<unique_ptr<InodeBase>>&& future,
PathComponentPiece name,
fusell::InodeNumber number)
InodeNumber number)
: treeInode_{inode},
number_{number},
name_{name},
@ -132,13 +132,13 @@ class TreeInode::IncompleteInodeLoad {
// to null in any IncompleteInodeLoad objects that are moved-away from.
// We don't actually own the TreeInode and we don't destroy it.
std::unique_ptr<TreeInode, NoopDeleter> treeInode_;
fusell::InodeNumber number_;
InodeNumber number_;
PathComponent name_;
Future<unique_ptr<InodeBase>> future_;
};
TreeInode::TreeInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parent,
PathComponentPiece name,
std::shared_ptr<const Tree>&& tree)
@ -152,7 +152,7 @@ TreeInode::TreeInode(
parent->getInodeMap())) {}
TreeInode::TreeInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parent,
PathComponentPiece name,
Dir&& dir)
@ -173,12 +173,12 @@ TreeInode::TreeInode(EdenMount* mount, Dir&& dir)
TreeInode::~TreeInode() {}
folly::Future<fusell::Dispatcher::Attr> TreeInode::getattr() {
folly::Future<Dispatcher::Attr> TreeInode::getattr() {
return getAttrLocked(&*contents_.rlock());
}
fusell::Dispatcher::Attr TreeInode::getAttrLocked(const Dir* contents) {
fusell::Dispatcher::Attr attr(getMount()->initStatData());
Dispatcher::Attr TreeInode::getAttrLocked(const Dir* contents) {
Dispatcher::Attr attr(getMount()->initStatData());
attr.st.st_mode = S_IFDIR | 0755;
attr.st.st_ino = getNodeId().get();
@ -209,7 +209,7 @@ Future<InodePtr> TreeInode::getOrLoadChild(PathComponentPiece name) {
folly::Optional<Future<InodePtr>> returnFuture;
InodePtr childInodePtr;
InodeMap::PromiseVector promises;
fusell::InodeNumber childNumber;
InodeNumber childNumber;
{
auto contents = contents_.wlock();
auto iter = contents->entries.find(name);
@ -337,7 +337,7 @@ Future<InodePtr> TreeInode::getChildRecursive(RelativePathPiece path) {
return future.ensure([p = std::move(processor)]() mutable { p.reset(); });
}
fusell::InodeNumber TreeInode::getChildInodeNumber(PathComponentPiece name) {
InodeNumber TreeInode::getChildInodeNumber(PathComponentPiece name) {
auto contents = contents_.wlock();
auto iter = contents->entries.find(name);
if (iter == contents->entries.end()) {
@ -360,7 +360,7 @@ fusell::InodeNumber TreeInode::getChildInodeNumber(PathComponentPiece name) {
void TreeInode::loadUnlinkedChildInode(
PathComponentPiece name,
fusell::InodeNumber number,
InodeNumber number,
folly::Optional<Hash> hash,
mode_t mode) {
try {
@ -417,9 +417,7 @@ void TreeInode::loadUnlinkedChildInode(
}
}
void TreeInode::loadChildInode(
PathComponentPiece name,
fusell::InodeNumber number) {
void TreeInode::loadChildInode(PathComponentPiece name, InodeNumber number) {
folly::Optional<folly::Future<unique_ptr<InodeBase>>> future;
{
auto contents = contents_.rlock();
@ -458,7 +456,7 @@ void TreeInode::loadChildInode(
void TreeInode::registerInodeLoadComplete(
folly::Future<unique_ptr<InodeBase>>& future,
PathComponentPiece name,
fusell::InodeNumber number) {
InodeNumber number) {
// This method should never be called with the contents_ lock held. If the
// future is already ready we will try to acquire the contents_ lock now.
future
@ -515,7 +513,7 @@ void TreeInode::inodeLoadComplete(
Future<unique_ptr<InodeBase>> TreeInode::startLoadingInodeNoThrow(
const Entry& entry,
PathComponentPiece name,
fusell::InodeNumber number) noexcept {
InodeNumber number) noexcept {
// The callers of startLoadingInodeNoThrow() need to make sure that they
// always call InodeMap::inodeLoadComplete() or InodeMap::inodeLoadFailed()
// afterwards.
@ -537,7 +535,7 @@ Future<unique_ptr<InodeBase>> TreeInode::startLoadingInodeNoThrow(
Future<unique_ptr<InodeBase>> TreeInode::startLoadingInode(
const Entry& entry,
PathComponentPiece name,
fusell::InodeNumber number) {
InodeNumber number) {
XLOG(DBG5) << "starting to load inode " << number << ": " << getLogPath()
<< " / \"" << name << "\"";
DCHECK(entry.getInode() == nullptr);
@ -581,7 +579,7 @@ Future<unique_ptr<InodeBase>> TreeInode::startLoadingInode(
number, inodePtrFromThis(), name, std::move(overlayDir.value()));
}
std::shared_ptr<fusell::DirHandle> TreeInode::opendir() {
std::shared_ptr<DirHandle> TreeInode::opendir() {
return std::make_shared<TreeInodeDirHandle>(inodePtrFromThis());
}
@ -648,7 +646,7 @@ void TreeInode::materialize(const RenameLock* renameLock) {
void TreeInode::childMaterialized(
const RenameLock& renameLock,
PathComponentPiece childName,
fusell::InodeNumber childNodeId) {
InodeNumber childNodeId) {
{
auto contents = contents_.wlock();
auto iter = contents->entries.find(childName);
@ -824,7 +822,7 @@ TreeInode::create(PathComponentPiece name, mode_t mode, int /*flags*/) {
// Now that we have the file handle, let's look up the attributes.
auto getattrResult = handle->getattr();
return getattrResult.then(
[=, handle = std::move(handle)](fusell::Dispatcher::Attr attr) mutable {
[=, handle = std::move(handle)](Dispatcher::Attr attr) mutable {
CreateResult result(getMount());
// Return all of the results back to the kernel.
@ -1136,7 +1134,7 @@ folly::Future<folly::Unit> TreeInode::removeImpl(
// Set the flushKernelCache parameter to true unless this was triggered by a
// FUSE request, in which case the kernel will automatically update its
// cache correctly.
bool flushKernelCache = !fusell::RequestData::isFuseRequest();
bool flushKernelCache = !RequestData::isFuseRequest();
int errnoValue =
tryRemoveChild(renameLock, name, nullChildPtr, flushKernelCache);
if (errnoValue == 0) {
@ -2617,7 +2615,7 @@ void TreeInode::invalidateFuseCache(PathComponentPiece name) {
}
void TreeInode::invalidateFuseCacheIfRequired(PathComponentPiece name) {
if (fusell::RequestData::isFuseRequest()) {
if (RequestData::isFuseRequest()) {
// no need to flush the cache if we are inside a FUSE request handler
return;
}
@ -2801,7 +2799,7 @@ folly::Future<InodePtr> TreeInode::loadChildLocked(
std::vector<IncompleteInodeLoad>* pendingLoads) {
DCHECK(!entry.getInode());
fusell::InodeNumber childNumber;
InodeNumber childNumber;
folly::Promise<InodePtr> promise;
auto future = promise.getFuture();
if (entry.hasInodeNumber()) {
@ -3127,10 +3125,10 @@ void TreeInode::updateOverlayHeader() const {
Overlay::updateTimestampToHeader(file.fd(), contents->timeStamps);
}
}
folly::Future<fusell::Dispatcher::Attr> TreeInode::setInodeAttr(
folly::Future<Dispatcher::Attr> TreeInode::setInodeAttr(
const fuse_setattr_in& attr) {
materialize();
fusell::Dispatcher::Attr result(getMount()->initStatData());
Dispatcher::Attr result(getMount()->initStatData());
// We do not have size field for directories and currently TreeInode does not
// have any field like FileInode::state_::mode to set the mode. May be in the

View File

@ -76,18 +76,18 @@ class TreeInode : public InodeBase {
/**
* Create a hash for a non-materialized entry.
*/
Entry(mode_t m, Hash hash) : Entry(m, fusell::InodeNumber{}, hash) {}
Entry(mode_t m, Hash hash) : Entry(m, InodeNumber{}, hash) {}
/**
* Create a hash for a non-materialized entry.
*/
Entry(mode_t m, fusell::InodeNumber number, Hash hash)
Entry(mode_t m, InodeNumber number, Hash hash)
: mode_(m), hash_{hash}, isLoading_(false), inodeNumber_(number) {}
/**
* Create a hash for a materialized entry.
*/
Entry(mode_t m, fusell::InodeNumber number)
Entry(mode_t m, InodeNumber number)
: mode_(m), isLoading_(false), inodeNumber_{number} {
DCHECK(number.hasValue());
}
@ -119,18 +119,18 @@ class TreeInode : public InodeBase {
bool hasInodeNumber() const {
return inodeNumber_.hasValue();
}
fusell::InodeNumber getInodeNumber() const {
InodeNumber getInodeNumber() const {
DCHECK(inodeNumber_.hasValue());
return inodeNumber_;
}
void setInodeNumber(fusell::InodeNumber number) {
void setInodeNumber(InodeNumber number) {
DCHECK(number.hasValue());
DCHECK(!inodeNumber_.hasValue());
DCHECK(!inode_);
inodeNumber_ = number;
}
void setMaterialized(fusell::InodeNumber inode) {
void setMaterialized(InodeNumber inode) {
DCHECK(inodeNumber_.empty() || inode == inodeNumber_);
inodeNumber_ = inode;
hash_.clear();
@ -251,7 +251,7 @@ class TreeInode : public InodeBase {
* non-zero if hash_ is not set. (It may also be non-zero even when hash_
* is set.)
*/
fusell::InodeNumber inodeNumber_{};
InodeNumber inodeNumber_{};
/**
* A pointer to the child inode, if it is loaded, or null if it is not
@ -300,7 +300,7 @@ class TreeInode : public InodeBase {
/** Holds the results of a create operation. */
struct CreateResult {
/// file attributes and cache ttls.
fusell::Dispatcher::Attr attr;
Dispatcher::Attr attr;
/// The newly created inode instance.
InodePtr inode;
/// The newly opened file handle.
@ -310,14 +310,14 @@ class TreeInode : public InodeBase {
};
TreeInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parent,
PathComponentPiece name,
std::shared_ptr<const Tree>&& tree);
/// Construct an inode that only has backing in the Overlay area
TreeInode(
fusell::InodeNumber ino,
InodeNumber ino,
TreeInodePtr parent,
PathComponentPiece name,
Dir&& dir);
@ -328,10 +328,10 @@ class TreeInode : public InodeBase {
~TreeInode() override;
folly::Future<fusell::Dispatcher::Attr> getattr() override;
folly::Future<Dispatcher::Attr> getattr() override;
folly::Future<folly::Unit> prefetch() override;
void updateOverlayHeader() const override;
fusell::Dispatcher::Attr getAttrLocked(const Dir* contents);
Dispatcher::Attr getAttrLocked(const Dir* contents);
/** Implements the InodeBase method used by the Dispatcher
* to create the Inode instance for a given name */
@ -353,9 +353,9 @@ class TreeInode : public InodeBase {
*/
folly::Future<InodePtr> getChildRecursive(RelativePathPiece name);
fusell::InodeNumber getChildInodeNumber(PathComponentPiece name);
InodeNumber getChildInodeNumber(PathComponentPiece name);
std::shared_ptr<fusell::DirHandle> opendir();
std::shared_ptr<DirHandle> opendir();
folly::Future<folly::Unit> rename(
PathComponentPiece name,
TreeInodePtr newParent,
@ -483,7 +483,7 @@ class TreeInode : public InodeBase {
void childMaterialized(
const RenameLock& renameLock,
PathComponentPiece childName,
fusell::InodeNumber childNodeId);
InodeNumber childNodeId);
/**
* Update this directory when a child entry is dematerialized.
@ -511,7 +511,7 @@ class TreeInode : public InodeBase {
* The TreeInode will call InodeMap::inodeLoadComplete() or
* InodeMap::inodeLoadFailed() when the load finishes.
*/
void loadChildInode(PathComponentPiece name, fusell::InodeNumber number);
void loadChildInode(PathComponentPiece name, InodeNumber number);
/**
* Internal API only for use by InodeMap.
@ -524,7 +524,7 @@ class TreeInode : public InodeBase {
*/
void loadUnlinkedChildInode(
PathComponentPiece name,
fusell::InodeNumber number,
InodeNumber number,
folly::Optional<Hash> hash,
mode_t mode);
@ -620,7 +620,7 @@ class TreeInode : public InodeBase {
void registerInodeLoadComplete(
folly::Future<std::unique_ptr<InodeBase>>& future,
PathComponentPiece name,
fusell::InodeNumber number);
InodeNumber number);
void inodeLoadComplete(
PathComponentPiece childName,
std::unique_ptr<InodeBase> childInode);
@ -628,12 +628,12 @@ class TreeInode : public InodeBase {
folly::Future<std::unique_ptr<InodeBase>> startLoadingInodeNoThrow(
const Entry& entry,
PathComponentPiece name,
fusell::InodeNumber number) noexcept;
InodeNumber number) noexcept;
folly::Future<std::unique_ptr<InodeBase>> startLoadingInode(
const Entry& entry,
PathComponentPiece name,
fusell::InodeNumber number);
InodeNumber number);
/**
* Materialize this directory in the overlay.
@ -837,7 +837,7 @@ class TreeInode : public InodeBase {
* Helper function called inside InodeBase::setattr to perform TreeInode
* specific operation during setattr.
*/
folly::Future<fusell::Dispatcher::Attr> setInodeAttr(
folly::Future<Dispatcher::Attr> setInodeAttr(
const fuse_setattr_in& attr) override;
folly::Synchronized<Dir> contents_;

View File

@ -10,6 +10,7 @@
#include "TreeInodeDirHandle.h"
#include "Overlay.h"
#include "eden/fs/fuse/DirList.h"
#include "eden/fs/inodes/TreeInode.h"
#include "eden/fs/model/Tree.h"
#include "eden/fs/utils/DirType.h"
@ -19,9 +20,7 @@ namespace eden {
TreeInodeDirHandle::TreeInodeDirHandle(TreeInodePtr inode) : inode_(inode) {}
folly::Future<fusell::DirList> TreeInodeDirHandle::readdir(
fusell::DirList&& list,
off_t off) {
folly::Future<DirList> TreeInodeDirHandle::readdir(DirList&& list, off_t off) {
// We will be called mulitple times for a given directory read. The first
// time through, the off parameter will be 0 to indicate that it is reading
// from the start. On subsequent calls it will hold the off value from the
@ -53,12 +52,12 @@ folly::Future<fusell::DirList> TreeInodeDirHandle::readdir(
folly::StringPiece name;
dtype_t type;
/// If 0, look up/assign it based on name
fusell::InodeNumber ino;
InodeNumber ino;
Entry(
folly::StringPiece name,
dtype_t type,
fusell::InodeNumber ino = fusell::InodeNumber{})
InodeNumber ino = InodeNumber{})
: name(name), type(type), ino(ino) {}
};
folly::fbvector<Entry> entries;
@ -120,7 +119,7 @@ folly::Future<fusell::DirList> TreeInodeDirHandle::readdir(
return std::move(list);
}
folly::Future<fusell::Dispatcher::Attr> TreeInodeDirHandle::setattr(
folly::Future<Dispatcher::Attr> TreeInodeDirHandle::setattr(
const fuse_setattr_in& attr) {
return inode_->setattr(attr);
}
@ -130,11 +129,11 @@ folly::Future<folly::Unit> TreeInodeDirHandle::fsyncdir(bool /*datasync*/) {
return folly::Unit{};
}
folly::Future<fusell::Dispatcher::Attr> TreeInodeDirHandle::getattr() {
folly::Future<Dispatcher::Attr> TreeInodeDirHandle::getattr() {
return inode_->getattr();
}
fusell::InodeNumber TreeInodeDirHandle::getInodeNumber() {
InodeNumber TreeInodeDirHandle::getInodeNumber() {
return inode_->getNodeId();
}
} // namespace eden

View File

@ -14,18 +14,16 @@
namespace facebook {
namespace eden {
class TreeInodeDirHandle : public fusell::DirHandle {
class TreeInodeDirHandle : public DirHandle {
public:
explicit TreeInodeDirHandle(TreeInodePtr inode);
folly::Future<fusell::DirList> readdir(fusell::DirList&& list, off_t off)
override;
folly::Future<DirList> readdir(DirList&& list, off_t off) override;
folly::Future<fusell::Dispatcher::Attr> setattr(
const fuse_setattr_in& attr) override;
folly::Future<Dispatcher::Attr> setattr(const fuse_setattr_in& attr) override;
folly::Future<folly::Unit> fsyncdir(bool datasync) override;
folly::Future<fusell::Dispatcher::Attr> getattr() override;
fusell::InodeNumber getInodeNumber() override;
folly::Future<Dispatcher::Attr> getattr() override;
InodeNumber getInodeNumber() override;
private:
TreeInodePtr inode_;

View File

@ -78,7 +78,7 @@ bool operator==(const timespec& ts, std::chrono::system_clock::time_point tp) {
namespace {
fusell::Dispatcher::Attr getFileAttr(const FileInodePtr& inode) {
Dispatcher::Attr getFileAttr(const FileInodePtr& inode) {
auto attrFuture = inode->getattr();
// We unfortunately can't use an ASSERT_* check here, since it tries
// to return from the function normally, rather than throwing.
@ -91,7 +91,7 @@ fusell::Dispatcher::Attr getFileAttr(const FileInodePtr& inode) {
return attrFuture.get();
}
fusell::Dispatcher::Attr setFileAttr(
Dispatcher::Attr setFileAttr(
const FileInodePtr& inode,
const fuse_setattr_in& desired) {
auto attrFuture = inode->setattr(desired);
@ -105,9 +105,7 @@ fusell::Dispatcher::Attr setFileAttr(
/**
* Helper function used by BASIC_ATTR_CHECKS()
*/
void basicAttrChecks(
const FileInodePtr& inode,
const fusell::Dispatcher::Attr& attr) {
void basicAttrChecks(const FileInodePtr& inode, const Dispatcher::Attr& attr) {
EXPECT_EQ(inode->getNodeId().getRawValue(), attr.st.st_ino);
EXPECT_EQ(1, attr.st.st_nlink);
EXPECT_EQ(inode->getMount()->getUid(), attr.st.st_uid);
@ -135,7 +133,7 @@ void basicAttrChecks(
/**
* Helper function used by BASIC_ATTR_CHECKS()
*/
fusell::Dispatcher::Attr basicAttrChecks(const FileInodePtr& inode) {
Dispatcher::Attr basicAttrChecks(const FileInodePtr& inode) {
auto attr = getFileAttr(inode);
basicAttrChecks(inode, attr);
return attr;

View File

@ -85,7 +85,7 @@ DEFINE_int64(
"Minimum age of the inodes to be unloaded");
using apache::thrift::ThriftServer;
using facebook::eden::fusell::FuseChannelData;
using facebook::eden::FuseChannelData;
using folly::File;
using folly::Future;
using folly::makeFuture;
@ -558,13 +558,11 @@ folly::Future<folly::Unit> EdenServer::performTakeoverFuseStart(
// SerializedFileHandleMap so that we can restore
// the correct flags here.
dispatcher
->opendir(
fusell::InodeNumber::fromThrift(handleEntry.inodeNumber), 0)
->opendir(InodeNumber::fromThrift(handleEntry.inodeNumber), 0)
.then([dispatcher, number = handleEntry.handleId](
std::shared_ptr<fusell::DirHandle> handle) {
std::shared_ptr<DirHandle> handle) {
dispatcher->getFileHandles().recordHandle(
std::static_pointer_cast<fusell::FileHandleBase>(handle),
number);
std::static_pointer_cast<FileHandleBase>(handle), number);
}));
} else {
futures.emplace_back(
@ -572,14 +570,11 @@ folly::Future<folly::Unit> EdenServer::performTakeoverFuseStart(
// SerializedFileHandleMap so that we can restore
// the correct flags here.
dispatcher
->open(
fusell::InodeNumber::fromThrift(handleEntry.inodeNumber),
O_RDWR)
->open(InodeNumber::fromThrift(handleEntry.inodeNumber), O_RDWR)
.then([dispatcher, number = handleEntry.handleId](
std::shared_ptr<fusell::FileHandle> handle) {
std::shared_ptr<FileHandle> handle) {
dispatcher->getFileHandles().recordHandle(
std::static_pointer_cast<fusell::FileHandleBase>(handle),
number);
std::static_pointer_cast<FileHandleBase>(handle), number);
}));
}
}

View File

@ -194,7 +194,7 @@ class EdenServer : private TakeoverHandler {
ServerState* getServerState() {
return &serverState_;
}
fusell::ThreadLocalEdenStats* getStats() {
ThreadLocalEdenStats* getStats() {
return &serverState_.getStats();
}

View File

@ -620,7 +620,7 @@ void EdenServiceHandler::debugGetInodePath(
std::unique_ptr<std::string> mountPoint,
int64_t inodeNumber) {
auto helper = INSTRUMENT_THRIFT_CALL(folly::LogLevel::DBG3);
auto inodeNum = static_cast<fusell::InodeNumber>(inodeNumber);
auto inodeNum = static_cast<InodeNumber>(inodeNumber);
auto inodeMap = server_->getMount(*mountPoint)->getInodeMap();
folly::Optional<RelativePath> relativePath =

View File

@ -36,7 +36,6 @@ DEFINE_string(
// eden, and WARNING for all other categories.
DEFINE_string(logging, ".=WARNING,eden=DBG2", "Logging configuration");
using namespace facebook::eden::fusell;
using namespace facebook::eden;
int main(int argc, char** argv) {

View File

@ -21,9 +21,9 @@ namespace facebook {
namespace eden {
Future<fuse_entry_out> TestDispatcher::lookup(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name) {
auto requestID = fusell::RequestData::get().getReq().unique;
auto requestID = RequestData::get().getReq().unique;
XLOG(DBG5) << "received lookup " << requestID << ": parent=" << parent
<< ", name=" << name;
auto result = Future<fuse_entry_out>::makeEmpty();

View File

@ -28,16 +28,16 @@ namespace eden {
* It allows the test code to generate responses to specific requests on
* demand.
*/
class TestDispatcher : public fusell::Dispatcher {
class TestDispatcher : public Dispatcher {
public:
/**
* Data for a pending FUSE_LOOKUP request.
*/
struct PendingLookup {
PendingLookup(fusell::InodeNumber parent, PathComponentPiece name)
PendingLookup(InodeNumber parent, PathComponentPiece name)
: parent(parent), name(name.copy()) {}
fusell::InodeNumber parent;
InodeNumber parent;
PathComponent name;
folly::Promise<fuse_entry_out> promise;
};
@ -45,7 +45,7 @@ class TestDispatcher : public fusell::Dispatcher {
using Dispatcher::Dispatcher;
folly::Future<fuse_entry_out> lookup(
fusell::InodeNumber parent,
InodeNumber parent,
PathComponentPiece name) override;
/**