The Pedigree Project 0.1
Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
Ext2Directory Class Reference

#include <Ext2Directory.h>

+ Inheritance diagram for Ext2Directory:
+ Collaboration diagram for Ext2Directory:

Classes

struct  ParsedEntry
 
struct  RenameRecord
 

Public Member Functions

 Ext2Directory (const String &name, uintptr_t inode_num, Inode *inode, class Ext2Filesystem *pFs, File *pParent)
 
 ~Ext2Directory () override
 
void truncate () override
 
bool sync () override
 
virtual bool addEntry (const String &filename, File *pFile, size_t type)
 
virtual bool removeEntry (const String &filename, Ext2Node *pFile)
 
void fileAttributeChanged () override
 
Attributes getAttributes () const override
 
XattrStatus getExtendedAttribute (const StringView &, void *, size_t, size_t &) override
 
XattrStatus listExtendedAttributes (void *, size_t, size_t &) override
 
XattrStatus setExtendedAttribute (const StringView &, const void *, size_t, unsigned) override
 
XattrStatus removeExtendedAttribute (const StringView &) override
 
- Public Member Functions inherited from Directory
 Directory ()
 
 Directory (const String &name, Time::Timestamp accessedTime, Time::Timestamp modifiedTime, Time::Timestamp creationTime, uintptr_t inode, class Filesystem *pFs, size_t size, File *pParent)
 
virtual ~Directory ()
 
virtual bool isDirectory ()
 
File * getChild (size_t n)
 
bool isDetached () const
 
size_t getNumChildren ()
 
ReadStatus enumerate (uint64_t &cookie, DirectoryEntryEmitter emitter, void *context)
 
ReadStatus isEmpty (bool &empty)
 
virtual void cacheDirectoryContents ()
 
virtual bool isCachePopulated () const
 
File * lookup (const HashedStringView &s) const
 
MUST_USE_RESULT bool lookupRetained (const HashedStringView &s, ChildLease &child) const
 
MUST_USE_RESULT LookupStatus lookupChild (const HashedStringView &s, ChildLease &child) const
 
MUST_USE_RESULT LookupStatus lookupChildAt (uint64_t cookie, const HashedStringView &name, ChildLease &child) const
 
void remove (const HashedStringView &s)
 
Directory * getReparsePoint () const
 Get the reparse point attached to this directory. Reparse points allow locations on the filesystem to redirect lookups to a separate directory. While the reparse point is active, the target directory is used for lookups instead of this one. The returned pointer is borrowed; atomic publication does not pin the target directory's lifetime.
 
void setReparsePoint (Directory *pTarget)
 
AddStatus addEphemeralFile (File *pFile)
 Add an ephemeral file to the directory.
 
void removeEphemeralFiles ()
 
bool empty ()
 
void emptyCache ()
 
- Public Member Functions inherited from File
 File ()
 
 File (const String &name, Time::Timestamp accessedTime, Time::Timestamp modifiedTime, Time::Timestamp creationTime, uintptr_t inode, class Filesystem *pFs, size_t size, File *pParent)
 
virtual ~File ()
 
virtual uint64_t read (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true) final
 
size_t readCached (uint64_t location, size_t size, uintptr_t buffer, bool(*prepare)(uintptr_t, size_t)=nullptr)
 
virtual uint64_t write (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true) final
 
uint64_t append (uint64_t size, uintptr_t buffer, uint64_t &location, bool bCanBlock=true)
 
WriteGuard lockWrites ()
 
virtual physical_uintptr_t getPhysicalPage (size_t offset)
 
virtual bool isDirectPhysicalMapping () const
 
size_t physicalMappingFlags () const
 
virtual void returnPhysicalPage (size_t offset)
 
virtual bool tryBeginMappingRelease ()
 
void endMappingRelease ()
 
bool syncAndReturnPhysicalPage (size_t offset, bool async)
 
bool syncRange (size_t offset, size_t length)
 
virtual bool sync (size_t offset, bool async)
 
virtual bool syncPages (const uint64_t *offsets, size_t count)
 
Time::Timestamp getCreationTime ()
 
void setCreationTime (Time::Timestamp t)
 
Time::Timestamp getAccessedTime ()
 
void setAccessedTime (Time::Timestamp t)
 
Time::Timestamp getModifiedTime ()
 
void setModifiedTime (Time::Timestamp t)
 
void setTimes (Time::Timestamp accessed, Time::Timestamp modified, bool changeAccessed, bool changeModified)
 
virtual bool prepareSharedMapping (size_t offset, size_t length)
 
String getName () const
 
void getName (String &s) const
 
virtual void getFullPath (String &result, bool bWithMount=true)
 
virtual String getFullPath (bool bWithMount=true)
 
bool resize (size_t size)
 
virtual size_t getSize ()
 
void setSize (size_t sz)
 
virtual bool isSymlink ()
 
virtual bool isBlockDevice () const
 
virtual uint64_t deviceNumber () const
 
virtual bool isPipe () const
 
virtual bool isFifo () const
 
virtual bool isSocket () const
 
virtual bool isSeekable () const
 
bool supportsRegularFileOperations ()
 
virtual bool isCharacterDevice () const
 
virtual bool isConsole () const
 
virtual uint64_t maximumFileSize () const
 
virtual bool allowMapping (bool shared, bool writeRequested, bool &mayWrite)
 
bool acquireMappingUse (bool executable, bool sharedWrite)
 
void releaseMappingUse (bool executable, bool sharedWrite)
 
uintptr_t getInode () const
 
virtual void setInode (uintptr_t inode)
 
virtual uintptr_t futexIdentity ()
 
Filesystem * getFilesystem () const
 
void setFilesystem (Filesystem *pFs)
 
void publishEvent (FileEventMask mask, const StringView &name=StringView(), bool targetIsDirectory=false)
 
virtual FileHandleStatus subscribeInodeEvents (FileEventMask mask, const SharedPointer< FileEventObserver > &observer, FileEventSubscription &subscription)
 
virtual void finishInodeRetirement ()
 
virtual void increaseRefCount (bool bIsWriter)
 
virtual void decreaseRefCount (bool bIsWriter)
 
virtual bool retainVfsReference ()
 
virtual void releaseVfsReference ()
 
virtual bool isStableVfsRoot () const
 
void setPermissions (uint32_t perms)
 
uint32_t getPermissions () const
 
bool setOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid)
 
void setUid (size_t uid)
 
size_t getUid () const
 
void setGid (size_t gid)
 
size_t getGid () const
 
File * getParent () const
 
void getNamespace (ParentLease &parent, String &name) const
 
virtual int select (bool bWriting=false, int timeout=0)
 
virtual ReadyMask queryReady (bool reading, bool writing)
 
virtual bool supportsReadinessNotifications () const
 
void monitor (Thread *pThread, Event *pEvent)
 
void cullMonitorTargets (Thread *pThread)
 
void cullMonitorTargets (Event *pEvent)
 
virtual bool supports (const size_t command) const
 
virtual int command (const size_t command, void *buffer)
 
virtual size_t getBlockSize () const
 
void markPageExternallyWritable (size_t offset)
 
size_t populateRange (size_t offset, size_t length)
 
void enableDirect ()
 
void disableDirect ()
 
virtual void preallocate (size_t expectedSize, bool zero=true)
 
bool allocateRange (size_t offset, size_t length, bool keepSize=false)
 
virtual File * open ()
 
virtual File * openForDescriptor (RetainedFile &owner)
 
- Public Member Functions inherited from ReadinessSource
MUST_USE_RESULT bool subscribeReadiness (ReadyMask interest, const SharedPointer< ReadinessObserver > &observer, ReadinessSubscription &subscription)
 
virtual ReadinessGenerations readinessGenerations ()
 
- Public Member Functions inherited from FileEventSource
MUST_USE_RESULT bool subscribeFileEvents (FileEventMask interest, const SharedPointer< FileEventObserver > &observer, FileEventSubscription &subscription)
 
- Public Member Functions inherited from Ext2Node
 Ext2Node (uintptr_t inode_num, Inode *pInode, class Ext2Filesystem *pFs)
 
virtual ~Ext2Node ()
 
Inode * getInode ()
 
uint32_t getInodeNumber ()
 
void fileAttributeChanged (size_t size, size_t atime, size_t mtime, size_t ctime)
 
File::Attributes inodeAttributes () const
 
void updateInodeAttributes (const File::Attributes &attributes, uint32_t mask)
 
bool changeInodeOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid)
 
bool wipe (bool allocationLockHeld=false)
 
void extend (size_t newSize)
 
void extend (size_t newSize, uint64_t location, uint64_t size)
 
uint64_t maximumFileSize () const
 
bool isInlineSymlink () const
 
void updateAllocatedSectorCount ()
 
XattrStatus getXattr (const StringView &, void *, size_t, size_t &)
 
XattrStatus listXattrs (void *, size_t, size_t &)
 
XattrStatus setXattr (const StringView &, const void *, size_t, unsigned)
 
XattrStatus removeXattr (const StringView &)
 
uintptr_t readBlock (uint64_t location)
 
void writeBlock (uint64_t location)
 
void trackBlock (uint32_t block, bool writeInode=true)
 
bool pinBlock (uint64_t location)
 
void unpinBlock (uint64_t location)
 
bool sync (size_t offset, bool async)
 

Protected Member Functions

void updateAttributes (const Attributes &attributes, uint32_t mask) override
 
bool changeOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid) override
 
- Protected Member Functions inherited from Directory
virtual bool cacheResolvedChildren () const
 
virtual const DirectoryEntryCache & getCache ()
 
void markCachePopulated ()
 
bool addDirectoryEntry (const String &name, File *pTarget)
 
bool addDirectoryEntry (const String &name, DirectoryEntryMetadata &&meta)
 
bool reserveDirectoryEntry (const HashedStringView &name, NameReservation &reservation)
 
bool addCachedDirectoryEntry (NameReservation &reservation, File *pTarget)
 
void invalidateDirectoryEntry (const HashedStringView &name)
 
bool removeDirectoryEntry (const HashedStringView &name, File *expected)
 
Mutex & namespaceMutationLock ()
 
void markDetached ()
 
void preallocateDirectoryEntries (size_t count)
 
virtual File * convertToFile (const DirectoryEntryMetadata &meta)
 
- Protected Member Functions inherited from File
bool tryAcquireFilesystemOperation (OperationBarrier::Lease &operation) const
 
virtual bool allowPhysicalPage () const
 
virtual bool prepareWrite (uint64_t location, uint64_t size)
 
virtual bool allowResize (size_t oldSize, size_t newSize)
 
virtual bool prepareShrink (const ShrinkContext &context, UniquePointer< PreparedShrink > &prepared)
 
virtual bool resizeFile (size_t size)
 
virtual bool allocateFileRange (size_t offset, size_t length)
 
virtual Mutex & writeSerializationLock ()
 
virtual Mutex & dataMutationLock ()
 
virtual size_t & physicalPageLoans ()
 
bool clearDataCache ()
 
virtual uint64_t readBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
 
virtual uint64_t writeBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool bCanBlock=true)
 
virtual uintptr_t readBlock (uint64_t location)
 
virtual bool readPage (uint64_t location, uintptr_t destination)
 
virtual bool readPages (ReadPage *pages, size_t count)
 
virtual void writeBlock (uint64_t location, uintptr_t addr)
 
virtual void writeBlocks (uint64_t location, uintptr_t addr, size_t length)
 
virtual void extend (size_t newSize)
 
virtual void extend (size_t newSize, uint64_t location, uint64_t size)
 
virtual void publishInodeEvent (const FileEvent &event)
 
void dataChanged ()
 
void getFilesystemLabel (HugeStaticString &s)
 
void enableFillCacheWriteback ()
 
void shutdownFillCacheWriteback ()
 
bool syncFillCache (size_t offset, bool async, bool &present)
 
virtual bool useFillCache () const
 
virtual MUST_USE_RESULT bool pinBlock (uint64_t location)
 
virtual MUST_USE_RESULT uintptr_t acquireCachedBlock (uint64_t location, bool retryChanged)
 
virtual void unpinBlock (uint64_t location)
 
void evict (uint64_t location)
 
void setPermissionsOnly (uint32_t perms)
 
void setUidOnly (size_t uid)
 
void setGidOnly (size_t gid)
 
void retainDetachedParent ()
 
void moveNamespace (const String &name, File *parent)
 
bool snapshotNamespace (ParentLease &parent, String &name, FileEventMask interest) const
 
virtual CacheState & cacheState ()
 
void setPhysicalMappingFlags (size_t flags)
 
- Protected Member Functions inherited from ReadinessSource
void notifyReadiness (ReadyMask mask)
 
void closeReadiness (ReadyMask mask=ReadyInvalid|ReadyHangup)
 
- Protected Member Functions inherited from FileEventSource
bool hasFileEventObservers (FileEventMask mask) const
 
void notifyFileEvent (const FileEvent &event)
 
void notifyFinalFileEvent (const FileEvent &event)
 
void beginFinalFileEvent (const FileEvent &event)
 
void drainFileEvents ()
 
void closeFileEvents ()
 
- Protected Member Functions inherited from Ext2Node
XattrStatus changeXattr (const StringView &, const void *, size_t, unsigned, bool remove)
 
bool resizeData (size_t size)
 
bool trimToBlocks (size_t keep, bool allocationLockHeld=false)
 
bool zeroRange (size_t start, size_t end)
 
bool collectMappingPages (uint32_t block, unsigned depth, size_t first, size_t span, Vector< MappingPage > &pages)
 
bool prepareTrim (size_t keep, TrimPlan &plan, bool allocationLockHeld=false)
 
void commitTrim (TrimPlan &plan, bool allocationLockHeld=false)
 
bool prepareDataShrink (size_t size, UniquePointer< File::PreparedShrink > &prepared)
 
bool ensureLargeEnough (size_t size, uint64_t location, uint64_t opsize, bool onlyBlocks=false, bool nozeroblocks=false)
 
bool addBlock (uint32_t blockValue, Vector< uint32_t > *pendingWrites=0)
 
void writeBlockOrQueue (uint32_t block, Vector< uint32_t > *pendingWrites)
 
bool ensureBlockLoaded (size_t nBlock)
 
bool getBlockNumber (size_t nBlock)
 
bool getBlockNumberIndirect (uint32_t inode_block, size_t nBlocks, size_t nBlock)
 
bool getBlockNumberBiindirect (uint32_t inode_block, size_t nBlocks, size_t nBlock)
 
bool getBlockNumberTriindirect (uint32_t inode_block, size_t nBlocks, size_t nBlock)
 
bool setBlockNumber (size_t blockNum, uint32_t blockValue, Vector< uint32_t > *pendingWrites=nullptr)
 
bool ensureWritableRange (size_t location, size_t length)
 
uint32_t modeToPermissions (uint32_t mode) const
 
uint32_t permissionsToMode (uint32_t permissions) const
 

Private Member Functions

bool prepareRenameRecord (const String &name, uint32_t inode, RenameRecord &record)
 
bool prepareRenameSpace (const String &name, RenameRecord &record, const RenameRecord *source)
 
 Ext2Directory (const Ext2Directory &file)
 
Ext2Directory & operator= (const Ext2Directory &)
 
LookupStatus resolveChild (const StringView &name, File *&child) override
 
LookupStatus resolveChildAt (uint64_t cookie, const StringView &name, File *&child) override
 
ReadStatus readDirectory (uint64_t &cookie, DirectoryEntryEmitter emitter, void *context) override
 
bool readBytes (uint64_t offset, size_t length, void *buffer)
 
ReadStatus readEntry (uint64_t offset, ParsedEntry &entry)
 
LookupStatus resolveEntry (const ParsedEntry &entry, const StringView &name, File *&child)
 
LookupStatus resolveChildLocked (const StringView &name, File *&child)
 
bool removeEntryLocked (const String &filename, Ext2Node *pFile)
 
bool removeFromParent (Ext2Directory *parent, const String &filename)
 
bool syncDirectoryBlock (uint32_t block)
 
void queueSyncDependency (uint32_t block)
 

Private Attributes

Mutex m_DirectoryLock
 
bool m_Removed
 

Friends

class Ext2Filesystem
 

Additional Inherited Members

- Public Types inherited from Directory
enum class  LookupStatus { Found , NotFound , IoError , Retry }
 
enum class  ReadStatus { Complete , Stopped , IoError }
 
enum class  AddStatus { Added , Exists , IoError , Detached }
 
enum class  EntryType : uint8_t {
  Unknown , Regular , Directory , Symlink ,
  Fifo , Socket , CharacterDevice , BlockDevice
}
 
using DirectoryEntryEmitter = bool(*)(void *, const DirectoryEntryView &)
 
- Public Types inherited from File
enum  AttributeMask : uint32_t {
  AccessTime = 1U << 0 , ModifyTime = 1U << 1 , ChangeTime = 1U << 2 , Owner = 1U << 3 ,
  Group = 1U << 4 , Permissions = 1U << 5
}
 
- Static Public Member Functions inherited from Directory
static Directory * fromFile (File *pF)
 
- Static Public Member Functions inherited from Ext2Node
static bool decodeAllocation (const Inode &, uint32_t blockSize, uint32_t &blocks, bool &inlineSymlink)
 
static bool encodeAllocation (uint32_t data, uint32_t indirect, bool hasEa, uint32_t blockSize, uint32_t &sectors)
 
- Static Public Attributes inherited from File
static constexpr size_t MaxReadPages = 32
 
- Protected Types inherited from Directory
typedef LazyEvaluate< File, DirectoryEntryMetadata, evaluateEntry, destroyEntry > DirectoryEntry
 
- Static Protected Member Functions inherited from File
static bool writeCallback (CacheConstants::CallbackCause cause, uintptr_t loc, uintptr_t page, void *meta)
 
static bool fillCacheCallback (CacheConstants::CallbackCause cause, uintptr_t loc, uintptr_t page, void *meta)
 
- Static Protected Member Functions inherited from FileEventSource
static bool anyFileEventObservers ()
 
- Protected Attributes inherited from File
String m_Name
 
Time::Timestamp m_AccessedTime
 
Time::Timestamp m_ModifiedTime
 
Time::Timestamp m_CreationTime
 
uintptr_t m_Inode
 
uintptr_t m_FutexIdentity = 0
 
class Filesystem * m_pFilesystem
 
size_t m_Size
 
File * m_pParent
 
Mutex m_MetadataLock
 
File * m_pDetachedParent
 
bool m_bDetachedParentHandled
 
size_t m_nWriters
 
size_t m_nReaders
 
size_t m_Uid
 
size_t m_Gid
 
uint32_t m_Permissions
 
CacheState m_CacheState
 
bool m_bDirect
 
Mutex m_WriteLock
 
Mutex m_DataMutationLock
 
size_t m_PhysicalPageLoans = 0
 
size_t m_PhysicalMappingFlags = 0
 
Mutex m_Lock
 
List< MonitorTarget * > m_MonitorTargets
 
- Protected Attributes inherited from Ext2Node
Ext2InodeState * m_State
 
Inode *& m_pInode
 
uint32_t m_InodeNumber
 
class Ext2Filesystem * m_pExt2Fs
 
Vector< uint32_t > & m_Blocks
 
uint32_t & m_nMetadataBlocks
 
size_t & m_nSize
 

Detailed Description

A File is a file, a directory or a symlink.

Definition at line 35 of file Ext2Directory.h.

Constructor & Destructor Documentation

◆ Ext2Directory() [1/2]

Ext2Directory::Ext2Directory ( const Ext2Directory &  file)
private

Copy constructors are hidden - unused!

◆ Ext2Directory() [2/2]

Ext2Directory::Ext2Directory ( const String &  name,
uintptr_t  inode_num,
Inode *  inode,
class Ext2Filesystem *  pFs,
File *  pParent 
)

Constructor, should be called only by a Filesystem.

Definition at line 38 of file Ext2Directory.cc.

References File::setGidOnly(), File::setPermissionsOnly(), and File::setUidOnly().

◆ ~Ext2Directory()

Ext2Directory::~Ext2Directory ( )
override

Destructor

Definition at line 53 of file Ext2Directory.cc.

Member Function Documentation

◆ addEntry()

bool Ext2Directory::addEntry ( const String &  filename,
File *  pFile,
size_t  type 
)
virtual

◆ changeOwnership()

bool Ext2Directory::changeOwnership ( size_t  uid,
size_t  gid,
bool  changeUid,
bool  changeGid 
)
overrideprotectedvirtual

Reimplemented from File.

Definition at line 52 of file Ext2Node-quota.cc.

◆ fileAttributeChanged()

void Ext2Directory::fileAttributeChanged ( )
overridevirtual

Updates inode attributes.

Reimplemented from File.

Definition at line 408 of file Ext2Directory.cc.

References Ext2Node::fileAttributeChanged().

Referenced by addEntry().

+ Here is the caller graph for this function:

◆ getAttributes()

File::Attributes Ext2Directory::getAttributes ( ) const
overridevirtual

Reimplemented from File.

Definition at line 415 of file Ext2Directory.cc.

◆ getExtendedAttribute()

XattrStatus Ext2Directory::getExtendedAttribute ( const StringView &  name,
void *  buffer,
size_t  capacity,
size_t &  required 
)
overridevirtual

Kernel buffers only. Capacity zero queries size without touching output; successful mutations update ctime and publish one Attributes event.

Reimplemented from File.

Definition at line 143 of file Ext2Xattr-write.cc.

◆ listExtendedAttributes()

XattrStatus Ext2Directory::listExtendedAttributes ( void *  output,
size_t  capacity,
size_t &  required 
)
overridevirtual

Reimplemented from File.

Definition at line 147 of file Ext2Xattr-write.cc.

◆ prepareRenameRecord()

bool Ext2Directory::prepareRenameRecord ( const String &  name,
uint32_t  inode,
RenameRecord &  record 
)
private

Definition at line 37 of file Ext2Rename.cc.

◆ prepareRenameSpace()

bool Ext2Directory::prepareRenameSpace ( const String &  name,
RenameRecord &  record,
const RenameRecord *  source 
)
private

Definition at line 69 of file Ext2Rename.cc.

◆ queueSyncDependency()

void Ext2Directory::queueSyncDependency ( uint32_t  block)
private

Definition at line 96 of file Ext2Directory.cc.

◆ readBytes()

bool Ext2Directory::readBytes ( uint64_t  offset,
size_t  length,
void *  buffer 
)
private

Definition at line 423 of file Ext2Directory.cc.

◆ readDirectory()

Directory::ReadStatus Ext2Directory::readDirectory ( uint64_t &  cookie,
DirectoryEntryEmitter  emitter,
void *  context 
)
overrideprivatevirtual

Stream backing-store entries. Resident entries are merged by enumerate().

Reimplemented from Directory.

Definition at line 620 of file Ext2Directory.cc.

◆ readEntry()

Directory::ReadStatus Ext2Directory::readEntry ( uint64_t  offset,
ParsedEntry &  entry 
)
private

Definition at line 456 of file Ext2Directory.cc.

◆ removeEntry()

bool Ext2Directory::removeEntry ( const String &  filename,
Ext2Node *  pFile 
)
virtual

Removes a directory entry.

Definition at line 318 of file Ext2Directory.cc.

References removeEntryLocked().

Referenced by Ext2Filesystem::createNode(), and Ext2Filesystem::removeNode().

+ Here is the caller graph for this function:

◆ removeEntryLocked()

bool Ext2Directory::removeEntryLocked ( const String &  filename,
Ext2Node *  pFile 
)
private
Todo:
Okay, this is not quite enough. The previous entry needs to be updated to skip past this now-empty entry. If this was the first entry, a blank record must be created to point to either the next entry or the end of the block.

Definition at line 323 of file Ext2Directory.cc.

References Vector< T >::count(), Directory::invalidateDirectoryEntry(), Ext2Filesystem::m_BlockSize, Ext2Filesystem::readBlock(), Ext2Filesystem::releaseInode(), and Ext2Filesystem::writeBlock().

Referenced by removeEntry().

+ Here is the caller graph for this function:

◆ removeExtendedAttribute()

XattrStatus Ext2Directory::removeExtendedAttribute ( const StringView &  name)
overridevirtual

Reimplemented from File.

Definition at line 157 of file Ext2Xattr-write.cc.

◆ removeFromParent()

bool Ext2Directory::removeFromParent ( Ext2Directory *  parent,
const String &  filename 
)
private

Definition at line 688 of file Ext2Directory.cc.

◆ resolveChild()

Directory::LookupStatus Ext2Directory::resolveChild ( const StringView &  name,
File *&  child 
)
overrideprivatevirtual

Resolve one backing-store entry. A found File must be new and untracked.

Reimplemented from Directory.

Definition at line 575 of file Ext2Directory.cc.

◆ resolveChildAt()

Directory::LookupStatus Ext2Directory::resolveChildAt ( uint64_t  cookie,
const StringView &  name,
File *&  child 
)
overrideprivatevirtual

Resolve one backing record at a cookie returned by readDirectory(). Implementations must fall back to a full name lookup if the cookie has become stale, so this remains equivalent to resolveChild().

Reimplemented from Directory.

Definition at line 592 of file Ext2Directory.cc.

◆ resolveChildLocked()

Directory::LookupStatus Ext2Directory::resolveChildLocked ( const StringView &  name,
File *&  child 
)
private

Definition at line 559 of file Ext2Directory.cc.

◆ resolveEntry()

Directory::LookupStatus Ext2Directory::resolveEntry ( const ParsedEntry &  entry,
const StringView &  name,
File *&  child 
)
private

Definition at line 496 of file Ext2Directory.cc.

◆ setExtendedAttribute()

XattrStatus Ext2Directory::setExtendedAttribute ( const StringView &  name,
const void *  value,
size_t  length,
unsigned  flags 
)
overridevirtual

Reimplemented from File.

Definition at line 150 of file Ext2Xattr-write.cc.

◆ sync()

bool Ext2Directory::sync ( )
overridevirtual

Sync all cached pages for the file back to disk.

Returns false if any cached page cannot be synchronised. Successful pages remain written when another page fails.

Reimplemented from File.

Definition at line 55 of file Ext2Directory.cc.

References Vector< T >::count(), Vector< T >::erase(), and Ext2Filesystem::m_BlockSize.

◆ syncDirectoryBlock()

bool Ext2Directory::syncDirectoryBlock ( uint32_t  block)
private

Definition at line 87 of file Ext2Directory.cc.

◆ truncate()

void Ext2Directory::truncate ( )
inlineoverridevirtual

Delete all data from the file.

Reimplemented from File.

Definition at line 64 of file Ext2Directory.h.

◆ updateAttributes()

void Ext2Directory::updateAttributes ( const Attributes &  attributes,
uint32_t  mask 
)
overrideprotectedvirtual

Reimplemented from File.

Definition at line 419 of file Ext2Directory.cc.

Friends And Related Symbol Documentation

◆ Ext2Filesystem

friend class Ext2Filesystem
friend

Definition at line 36 of file Ext2Directory.h.

Member Data Documentation

◆ m_DirectoryLock

Mutex Ext2Directory::m_DirectoryLock
private

Definition at line 109 of file Ext2Directory.h.

◆ m_Removed

bool Ext2Directory::m_Removed
private

Definition at line 110 of file Ext2Directory.h.


The documentation for this class was generated from the following files: