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

Classes

struct  DirectoryListing
 
class  FuseInterruptCue
 
class  TransactionSink
 
class  Fetcher
 
struct  InodeGenerationInfo
 
class  Sink
 
class  Uuid
 

Typedefs

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

Functions

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_
 
const int kNumReservedFd = 512
 
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 155 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 780 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 211 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 1779 of file cvmfs.cc.

Referenced by SetCvmfsOperations().

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 578 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 679 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 1538 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 1754 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 1621 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 prerequisit to every operation. We do check catalog TTL here (and reload, if necessary).

Definition at line 465 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 1028 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 807 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 1250 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 987 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 748 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 1398 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 938 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 1472 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 438 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 1669 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 1011 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 253 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 276 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 361 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 177 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 412 of file cvmfs.cc.

Referenced by cvmfs_getxattr(), cvmfs_listxattr(), cvmfs_lookup(), cvmfs_open(), cvmfs_opendir(), 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 184 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 229 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::MayBeInPageCacheTracker ( const catalog::DirectoryEntry dirent)
static

Definition at line 224 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 1682 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 200 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 971 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 666 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 1824 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 1787 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 453 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 1813 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 190 of file cvmfs.cc.

Referenced by Init().

Here is the caller graph for this function:

Variable Documentation

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

Definition at line 133 of file loader.cc.

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

InodeGenerationInfo cvmfs::inode_generation_info_
const int cvmfs::kNumReservedFd = 512

Number of reserved file descriptors for internal use

Definition at line 164 of file cvmfs.cc.

Referenced by cvmfs_open(), and MaxFdMagicXattr::GetValue().

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

Definition at line 157 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 160 of file cvmfs.cc.

Referenced by cvmfs_open(), MaxFdMagicXattr::GetValue(), and Init().

uint64_t cvmfs::next_directory_handle_ = 0

Definition at line 158 of file cvmfs.cc.

Referenced by cvmfs_opendir(), and RestoreState().

NotificationClient* cvmfs::notification_client_ = NULL

Definition at line 125 of file cvmfs.cc.

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

OptionsManager* cvmfs::options_mgr_ = NULL

Definition at line 147 of file cvmfs.cc.

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

pid_t cvmfs::pid_ = 0

will be set after deamon()

Definition at line 148 of file cvmfs.cc.

Referenced by PidMagicXattr::GetValue(), 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 124 of file cvmfs.cc.

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

quota::ListenerHandle* cvmfs::unpin_listener_ = NULL

Definition at line 150 of file cvmfs.cc.

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

Watchdog* cvmfs::watchdog_ = NULL

Definition at line 126 of file cvmfs.cc.

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

quota::ListenerHandle* cvmfs::watchdog_listener_ = NULL

Definition at line 149 of file cvmfs.cc.

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