CernVM-FS  2.12.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cvmfs Namespace Reference

Classes

struct  DirectoryListing
 
class  FuseInterruptCue
 
struct  FuseState
 
class  TransactionSink
 
class  Fetcher
 
struct  InodeGenerationInfo
 
class  Sink
 
class  FileSink
 
class  MemSink
 
class  PathSink
 
class  Uuid
 

Typedefs

typedef google::dense_hash_map
< uint64_t, DirectoryListing,
hash_murmur< uint64_t > > 
DirectoryHandles
 

Functions

static bool IncAndCheckNoOpenFiles ()
 
static double GetKcacheTimeout ()
 
void GetReloadStatus (bool *drainout_mode, bool *maintenance_mode)
 
static bool UseWatchdog ()
 
std::string PrintInodeGeneration ()
 
static bool CheckVoms (const fuse_ctx &fctx)
 
static bool MayBeInPageCacheTracker (const catalog::DirectoryEntry &dirent)
 
static bool HasDifferentContent (const catalog::DirectoryEntry &dirent, const shash::Any &hash, const struct stat &info)
 
static bool FixupOpenInode (const PathString &path, catalog::DirectoryEntry *dirent)
 
static bool GetDirentForInode (const fuse_ino_t ino, catalog::DirectoryEntry *dirent)
 
static uint64_t GetDirentForPath (const PathString &path, catalog::DirectoryEntry *dirent)
 
static bool GetPathForInode (const fuse_ino_t ino, PathString *path)
 
static void DoTraceInode (const int event, fuse_ino_t ino, const std::string &msg)
 
static void TraceInode (const int event, fuse_ino_t ino, const std::string &msg)
 
static void cvmfs_lookup (fuse_req_t req, fuse_ino_t parent, const char *name)
 
static void cvmfs_forget (fuse_req_t req, fuse_ino_t ino, uint64_t nlookup)
 
static void ReplyNegative (const catalog::DirectoryEntry &dirent, fuse_req_t req)
 
static void cvmfs_getattr (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
 
static void cvmfs_readlink (fuse_req_t req, fuse_ino_t ino)
 
static void AddToDirListing (const fuse_req_t req, const char *name, const struct stat *stat_info, BigVector< char > *listing)
 
static void cvmfs_opendir (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
 
static void cvmfs_releasedir (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
 
static void ReplyBufferSlice (const fuse_req_t req, const char *buffer, const size_t buffer_size, const off_t offset, const size_t max_size)
 
static void cvmfs_readdir (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
 
static void FillOpenFlags (const glue::PageCacheTracker::OpenDirectives od, struct fuse_file_info *fi)
 
static void cvmfs_open (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
 
static void cvmfs_read (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi)
 
static void cvmfs_release (fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
 
static void cvmfs_statfs (fuse_req_t req, fuse_ino_t ino)
 
static void cvmfs_getxattr (fuse_req_t req, fuse_ino_t ino, const char *name, size_t size)
 
static void cvmfs_listxattr (fuse_req_t req, fuse_ino_t ino, size_t size)
 
bool Evict (const string &path)
 
bool Pin (const string &path)
 
static void cvmfs_init (void *userdata, struct fuse_conn_info *conn)
 
static void cvmfs_destroy (void *unused __attribute__((unused)))
 
static void SetCvmfsOperations (struct fuse_lowlevel_ops *cvmfs_operations)
 
void UnregisterQuotaListener ()
 
bool SendFuseFd (const std::string &socket_path)
 
bool Evict (const std::string &path)
 
bool Pin (const std::string &path)
 
void TLSDestructor (void *data)
 

Variables

FileSystemfile_system_ = NULL
 
MountPointmount_point_ = NULL
 
TalkManagertalk_mgr_ = NULL
 
NotificationClientnotification_client_ = NULL
 
Watchdogwatchdog_ = NULL
 
FuseRemounterfuse_remounter_ = NULL
 
InodeGenerationInfo inode_generation_info_
 
const loader::LoaderExportsloader_exports_ = NULL
 
OptionsManageroptions_mgr_ = NULL
 
pid_t pid_ = 0
 
quota::ListenerHandlewatchdog_listener_ = NULL
 
quota::ListenerHandleunpin_listener_ = NULL
 
DirectoryHandlesdirectory_handles_ = NULL
 
pthread_mutex_t lock_directory_handles_ = PTHREAD_MUTEX_INITIALIZER
 
uint64_t next_directory_handle_ = 0
 
unsigned max_open_files_
 
bool check_fd_overflow_ = true
 
const int kNumReservedFd = 512
 
const unsigned int kMinOpenFiles = 8192
 
std::string * repository_name_
 
bool foreground_
 

Detailed Description

This file is part of the CernVM File System.

Typedef Documentation

typedef google::dense_hash_map<uint64_t, DirectoryListing, hash_murmur<uint64_t> > cvmfs::DirectoryHandles

Definition at line 160 of file cvmfs.cc.

Function Documentation

static void cvmfs::AddToDirListing ( const fuse_req_t  req,
const char *  name,
const struct stat *  stat_info,
BigVector< char > *  listing 
)
static

Definition at line 858 of file cvmfs.cc.

Referenced by cvmfs_opendir().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::CheckVoms ( const fuse_ctx &  fctx)
static

Definition at line 251 of file cvmfs.cc.

Referenced by cvmfs_getattr(), cvmfs_getxattr(), cvmfs_open(), and cvmfs_opendir().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_destroy ( void *unused   __attribute__(unused))
static

Definition at line 2071 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_forget ( fuse_req_t  req,
fuse_ino_t  ino,
uint64_t  nlookup 
)
static

Definition at line 645 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_getattr ( fuse_req_t  req,
fuse_ino_t  ino,
struct fuse_file_info *  fi 
)
static

Transform a cvmfs dirent into a struct stat.

Definition at line 757 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_getxattr ( fuse_req_t  req,
fuse_ino_t  ino,
const char *  name,
size_t  size 
)
static

Definition at line 1677 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_init ( void *  userdata,
struct fuse_conn_info *  conn 
)
static

Do after-daemon() initialization

Definition at line 2003 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_listxattr ( fuse_req_t  req,
fuse_ino_t  ino,
size_t  size 
)
static

Definition at line 1841 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_lookup ( fuse_req_t  req,
fuse_ino_t  parent,
const char *  name 
)
static

Find the inode number of a file name in a directory given by inode. This or getattr is called as kind of prerequisite to every operation. We do check catalog TTL here (and reload, if necessary).

Definition at line 517 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_open ( fuse_req_t  req,
fuse_ino_t  ino,
struct fuse_file_info *  fi 
)
static

Open a file from cache. If necessary, file is downloaded first.

Returns
Read-only file descriptor in fi->fh or kChunkedFileHandle for chunked files

Definition at line 1119 of file cvmfs.cc.

Referenced by libcvmfs_do_fopen(), and SetCvmfsOperations().

Here is the caller graph for this function:

static void cvmfs::cvmfs_opendir ( fuse_req_t  req,
fuse_ino_t  ino,
struct fuse_file_info *  fi 
)
static

Open a directory for listing.

Definition at line 885 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_read ( fuse_req_t  req,
fuse_ino_t  ino,
size_t  size,
off_t  off,
struct fuse_file_info *  fi 
)
static

Redirected to pread into cache.

Definition at line 1356 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_readdir ( fuse_req_t  req,
fuse_ino_t  ino,
size_t  size,
off_t  off,
struct fuse_file_info *  fi 
)
static

Read the directory listing.

Definition at line 1070 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_readlink ( fuse_req_t  req,
fuse_ino_t  ino 
)
static

Reads a symlink from the catalog. Environment variables are expanded.

Definition at line 826 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_release ( fuse_req_t  req,
fuse_ino_t  ino,
struct fuse_file_info *  fi 
)
static

File close operation, redirected into cache.

Definition at line 1529 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_releasedir ( fuse_req_t  req,
fuse_ino_t  ino,
struct fuse_file_info *  fi 
)
static

Release a directory.

Definition at line 1021 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::cvmfs_statfs ( fuse_req_t  req,
fuse_ino_t  ino 
)
static

Returns information about a mounted filesystem. In this case it returns information about the local cache occupancy of cvmfs.

Note: If the elements of the struct statvfs *info are set to 0, it will cause it to be ignored in commandline tool "df".

Definition at line 1611 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::DoTraceInode ( const int  event,
fuse_ino_t  ino,
const std::string &  msg 
)
static

Definition at line 490 of file cvmfs.cc.

Referenced by TraceInode().

Here is the call graph for this function:

Here is the caller graph for this function:

bool cvmfs::Evict ( const std::string &  path)
bool cvmfs::Evict ( const string &  path)

Definition at line 1904 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::FillOpenFlags ( const glue::PageCacheTracker::OpenDirectives  od,
struct fuse_file_info *  fi 
)
static

Definition at line 1095 of file cvmfs.cc.

Referenced by cvmfs_open().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::FixupOpenInode ( const PathString path,
catalog::DirectoryEntry dirent 
)
static

When we lookup an inode (cvmfs_lookup(), cvmfs_opendir()), we usually provide the live inode, i.e. the one in the inode tracker. However, if the inode refers to an open file that has a different content then the one from the current catalogs, we will replace the live inode in the tracker by the one from the current generation.

To still access the old inode, e.g. for fstat() on the open file, the stat structure connected to this inode is taken from the page cache tracker.

Definition at line 293 of file cvmfs.cc.

Referenced by GetDirentForPath().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::GetDirentForInode ( const fuse_ino_t  ino,
catalog::DirectoryEntry dirent 
)
static

Definition at line 316 of file cvmfs.cc.

Referenced by cvmfs_getattr(), cvmfs_getxattr(), cvmfs_listxattr(), cvmfs_lookup(), cvmfs_open(), cvmfs_opendir(), and cvmfs_readlink().

Here is the call graph for this function:

Here is the caller graph for this function:

static uint64_t cvmfs::GetDirentForPath ( const PathString path,
catalog::DirectoryEntry dirent 
)
static

Returns 0 if the path does not exist 1 if the live inode is returned >1 the live inode, which is then stale and the inode in dirent comes from the catalog in the current generation (see FixupOpenInode)

Definition at line 407 of file cvmfs.cc.

Referenced by cvmfs_lookup(), cvmfs_opendir(), Evict(), and Pin().

Here is the call graph for this function:

Here is the caller graph for this function:

static double cvmfs::GetKcacheTimeout ( )
inlinestatic

Definition at line 217 of file cvmfs.cc.

Referenced by cvmfs_getattr(), and cvmfs_lookup().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::GetPathForInode ( const fuse_ino_t  ino,
PathString path 
)
static

Definition at line 456 of file cvmfs.cc.

Referenced by cvmfs_getxattr(), cvmfs_listxattr(), cvmfs_lookup(), cvmfs_open(), cvmfs_opendir(), cvmfs_read(), and DoTraceInode().

Here is the call graph for this function:

Here is the caller graph for this function:

void cvmfs::GetReloadStatus ( bool *  drainout_mode,
bool *  maintenance_mode 
)

Definition at line 224 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::HasDifferentContent ( const catalog::DirectoryEntry dirent,
const shash::Any hash,
const struct stat &  info 
)
static

Definition at line 269 of file cvmfs.cc.

Referenced by cvmfs_getattr(), and FixupOpenInode().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::IncAndCheckNoOpenFiles ( )
inlinestatic

Atomic increase of the open files counter. If we use a non-refcounted POSIX cache manager, check for open fd overflow. Return false if too many files are opened. Otherwise return true (success).

Definition at line 210 of file cvmfs.cc.

Referenced by cvmfs_open().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::MayBeInPageCacheTracker ( const catalog::DirectoryEntry dirent)
static

Definition at line 264 of file cvmfs.cc.

Referenced by cvmfs_getattr(), and FixupOpenInode().

Here is the call graph for this function:

Here is the caller graph for this function:

bool cvmfs::Pin ( const std::string &  path)
bool cvmfs::Pin ( const string &  path)

Definition at line 1931 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

std::string cvmfs::PrintInodeGeneration ( )

Definition at line 240 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::ReplyBufferSlice ( const fuse_req_t  req,
const char *  buffer,
const size_t  buffer_size,
const off_t  offset,
const size_t  max_size 
)
static

Very large directory listings have to be sent in slices.

Definition at line 1054 of file cvmfs.cc.

Referenced by cvmfs_readdir().

Here is the caller graph for this function:

static void cvmfs::ReplyNegative ( const catalog::DirectoryEntry dirent,
fuse_req_t  req 
)
static

Looks into dirent to decide if this is an EIO negative reply or an ENOENT negative reply. We do not need to store the reply in the negative cache tracker because ReplyNegative is called on inode queries. Inodes, however, change anyway when a new catalog is applied.

Definition at line 733 of file cvmfs.cc.

Referenced by cvmfs_getattr(), cvmfs_getxattr(), cvmfs_listxattr(), cvmfs_open(), cvmfs_opendir(), and cvmfs_readlink().

Here is the call graph for this function:

Here is the caller graph for this function:

bool cvmfs::SendFuseFd ( const std::string &  socket_path)

Definition at line 2116 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

static void cvmfs::SetCvmfsOperations ( struct fuse_lowlevel_ops *  cvmfs_operations)
static

Puts the callback functions in one single structure

Definition at line 2079 of file cvmfs.cc.

Referenced by __attribute__().

Here is the call graph for this function:

Here is the caller graph for this function:

void cvmfs::TLSDestructor ( void *  data)

Definition at line 25 of file fetch.cc.

Here is the call graph for this function:

static void cvmfs::TraceInode ( const int  event,
fuse_ino_t  ino,
const std::string &  msg 
)
inlinestatic

Definition at line 505 of file cvmfs.cc.

Referenced by cvmfs_getattr(), cvmfs_getxattr(), cvmfs_listxattr(), cvmfs_opendir(), cvmfs_readlink(), and cvmfs_statfs().

Here is the call graph for this function:

Here is the caller graph for this function:

void cvmfs::UnregisterQuotaListener ( )

Definition at line 2105 of file cvmfs.cc.

Referenced by TalkManager::MainResponder().

Here is the call graph for this function:

Here is the caller graph for this function:

static bool cvmfs::UseWatchdog ( )
static

Definition at line 230 of file cvmfs.cc.

Referenced by Init().

Here is the caller graph for this function:

Variable Documentation

bool cvmfs::check_fd_overflow_ = true

The refcounted cache manager should suppress checking the current number of files opened through cvmfs_open() against the process' file descriptor limit.

Definition at line 171 of file cvmfs.cc.

Referenced by IncAndCheckNoOpenFiles(), and Init().

DirectoryHandles* cvmfs::directory_handles_ = NULL
bool cvmfs::foreground_

Definition at line 135 of file loader.cc.

Referenced by FuseMain(), loader::ParseCmdLine(), and loader::ParseFuseOptions().

InodeGenerationInfo cvmfs::inode_generation_info_
const unsigned int cvmfs::kMinOpenFiles = 8192

Warn if the process has a lower limit for the number of open file descriptors

Definition at line 179 of file cvmfs.cc.

Referenced by CheckMaxOpenFiles().

const int cvmfs::kNumReservedFd = 512

Number of reserved file descriptors for internal use

Definition at line 175 of file cvmfs.cc.

Referenced by MaxFdMagicXattr::FinalizeValue(), and IncAndCheckNoOpenFiles().

const loader::LoaderExports * cvmfs::loader_exports_ = NULL
pthread_mutex_t cvmfs::lock_directory_handles_ = PTHREAD_MUTEX_INITIALIZER

Definition at line 162 of file cvmfs.cc.

Referenced by cvmfs_opendir(), cvmfs_readdir(), and cvmfs_releasedir().

unsigned cvmfs::max_open_files_

maximum allowed number of open files

Definition at line 165 of file cvmfs.cc.

Referenced by MaxFdMagicXattr::FinalizeValue(), IncAndCheckNoOpenFiles(), Init(), and RestoreState().

uint64_t cvmfs::next_directory_handle_ = 0

Definition at line 163 of file cvmfs.cc.

Referenced by cvmfs_opendir(), and RestoreState().

NotificationClient* cvmfs::notification_client_ = NULL

Definition at line 130 of file cvmfs.cc.

Referenced by Init(), ShutdownMountpoint(), and Spawn().

OptionsManager* cvmfs::options_mgr_ = NULL

Definition at line 152 of file cvmfs.cc.

Referenced by Fini(), Init(), and InitOptionsMgr().

pid_t cvmfs::pid_ = 0

will be set after daemon()

Definition at line 153 of file cvmfs.cc.

Referenced by PidMagicXattr::FinalizeValue(), TalkManager::MainResponder(), and Spawn().

std::string* cvmfs::repository_name_

Definition at line 125 of file loader.cc.

Referenced by FuseMain(), loader::ParseCmdLine(), and loader::ParseFuseOptions().

TalkManager* cvmfs::talk_mgr_ = NULL

Definition at line 129 of file cvmfs.cc.

Referenced by Init(), ShutdownMountpoint(), and Spawn().

quota::ListenerHandle* cvmfs::unpin_listener_ = NULL

Definition at line 155 of file cvmfs.cc.

Referenced by ShutdownMountpoint(), Spawn(), and UnregisterQuotaListener().

Watchdog* cvmfs::watchdog_ = NULL

Definition at line 131 of file cvmfs.cc.

Referenced by Fini(), Init(), and Spawn().

quota::ListenerHandle* cvmfs::watchdog_listener_ = NULL

Definition at line 154 of file cvmfs.cc.

Referenced by ShutdownMountpoint(), Spawn(), and UnregisterQuotaListener().