23#include "pedigree/kernel/Atomic.h"
24#include "pedigree/kernel/compiler.h"
25#include "pedigree/kernel/machine/DiskPaging.h"
26#include "pedigree/kernel/process/FilesystemContext.h"
27#include "pedigree/kernel/process/OperationBarrier.h"
28#include "pedigree/kernel/processor/types.h"
29#include "pedigree/kernel/utilities/String.h"
52 enum class SyncStatus { Success, Unsupported, NoMemory, IoError };
89 File* pStartNode =
nullptr);
104 virtual FileHandleStatus encodeFileHandle(
File& file,
FileHandle& handle);
106 virtual FileHandleStatus fileHandleFsid(
FileSystemId&
id);
109 virtual SyncStatus sync();
111 virtual SyncStatus shutdown();
113 virtual bool deviceRemoved(
bool deviceAvailable =
false);
115 bool isDeviceRemoved()
const;
120 bool createFile(
const StringView& path, uint32_t mask,
File* pStartNode = 0);
124 bool createDirectory(
const StringView& path, uint32_t mask,
File* pStartNode = 0);
142 bool noReplace =
false);
160 bool remove(
File* parent,
File* file);
170 virtual bool createLink(
File* parent,
const String& filename,
File* target);
191 bool beginDeviceRemoval(
bool deviceAvailable);
196 bool m_RemovalWrites =
false;
201 bool removeChild(
File* parent,
const String& filename,
File* expected,
203 bool renameChildren(
File* oldParent,
const String& oldName,
File* newParent,
204 const String& newName,
bool noReplace,
bool sourceMustBeDirectory,
215 File** retainedResult);
222 File** retainedParent =
nullptr);
virtual bool removeNode(File *parent, const String &filename, File *file)=0
Filesystem(const Filesystem &)
virtual bool initialise(Disk *pDisk)=0
virtual const String & getVolumeLabel() const =0
virtual bool isCaseSensitive()
virtual bool getUuid(String &uuid) const
virtual bool createDirectory(File *parent, const String &filename, uint32_t mask)=0
static Mutex m_StructureLock
void operator=(const Filesystem &)
virtual bool createFile(File *parent, const String &filename, uint32_t mask)=0
virtual File * getRoot() const =0
virtual bool createSymlink(File *parent, const String &filename, const String &value)=0