CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sync_union_overlayfs.h
Go to the documentation of this file.
1 
9 #ifndef CVMFS_SYNC_UNION_OVERLAYFS_H_
10 #define CVMFS_SYNC_UNION_OVERLAYFS_H_
11 
12 #include <set>
13 #include <string>
14 
15 #include "sync_union.h"
16 #include "util/shared_ptr.h"
17 
18 namespace publish {
19 
24 class SyncUnionOverlayfs : public SyncUnion {
25  public:
26  SyncUnionOverlayfs(SyncMediator *mediator, const std::string &rdonly_path,
27  const std::string &union_path,
28  const std::string &scratch_path);
29 
30  bool Initialize();
31 
32  void Traverse();
33  static bool ReadlinkEquals(std::string const &path,
34  std::string const &compare_value);
35  static bool HasXattr(std::string const &path, std::string const &attr_name);
36 
37  protected:
38  void PreprocessSyncItem(SharedPtr<SyncItem> entry) const;
39 
40  bool IsWhiteoutEntry(SharedPtr<SyncItem> entry) const;
41  bool IsOpaqueDirectory(SharedPtr<SyncItem> directory) const;
42  bool IsWhiteoutSymlinkPath(const std::string &path) const;
43 
44  std::string UnwindWhiteoutFilename(SharedPtr<SyncItem> entry) const;
45  std::set<std::string> GetIgnoreFilenames() const;
46 
48  void MaskFileHardlinks(SharedPtr<SyncItem> entry) const;
49 
50  bool ObtainSysAdminCapability() const;
51 
52  private:
53  bool IsOpaqueDirPath(const std::string &path) const;
54 
55  std::set<std::string> hardlink_lower_files_;
57 }; // class SyncUnionOverlayfs
58 } // namespace publish
59 
60 #endif // CVMFS_SYNC_UNION_OVERLAYFS_H_
bool IsWhiteoutSymlinkPath(const std::string &path) const
void PreprocessSyncItem(SharedPtr< SyncItem > entry) const
bool IsOpaqueDirectory(SharedPtr< SyncItem > directory) const
std::string scratch_path() const
Definition: sync_union.h:98
static bool HasXattr(std::string const &path, std::string const &attr_name)
std::string UnwindWhiteoutFilename(SharedPtr< SyncItem > entry) const
std::string union_path() const
Definition: sync_union.h:97
bool IsOpaqueDirPath(const std::string &path) const
void MaskFileHardlinks(SharedPtr< SyncItem > entry) const
std::set< std::string > hardlink_lower_files_
void CheckForBrokenHardlink(SharedPtr< SyncItem > entry) const
SyncUnionOverlayfs(SyncMediator *mediator, const std::string &rdonly_path, const std::string &union_path, const std::string &scratch_path)
static bool ReadlinkEquals(std::string const &path, std::string const &compare_value)
std::set< std::string > GetIgnoreFilenames() const
std::string rdonly_path() const
Definition: sync_union.h:96
bool IsWhiteoutEntry(SharedPtr< SyncItem > entry) const