|
The Pedigree Project 0.1
|
#include <Ext2Symlink.h>
Inheritance diagram for Ext2Symlink:
Collaboration diagram for Ext2Symlink:Public Member Functions | |
| Ext2Symlink (const String &name, uintptr_t inode_num, Inode *inode, class Ext2Filesystem *pFs, File *pParent=0) | |
| virtual | ~Ext2Symlink () |
| virtual uint64_t | readBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool canBlock) |
| virtual uint64_t | writeBytewise (uint64_t location, uint64_t size, uintptr_t buffer, bool canBlock) |
| void | truncate () |
| void | fileAttributeChanged () |
| virtual Attributes | getAttributes () const |
| virtual XattrStatus | getExtendedAttribute (const StringView &, void *, size_t, size_t &) |
| virtual XattrStatus | listExtendedAttributes (void *, size_t, size_t &) |
| virtual XattrStatus | setExtendedAttribute (const StringView &, const void *, size_t, unsigned) |
| virtual XattrStatus | removeExtendedAttribute (const StringView &) |
Public Member Functions inherited from Symlink | |
| Symlink () | |
| Symlink (const Symlink &file) | |
| Symlink (const String &name, Time::Timestamp accessedTime, Time::Timestamp modifiedTime, Time::Timestamp creationTime, uintptr_t inode, class Filesystem *pFs, size_t size, File *pParent) | |
| virtual | ~Symlink () |
| virtual bool | isSymlink () |
| virtual int | followLink (char *pBuffer, size_t bufLen) |
| virtual File * | followLinkRetained (Directory::ChildLease &result) |
| virtual bool | isPathLink () const |
| virtual bool | followPath (FilesystemPathRef &) |
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) |
| virtual bool | sync () |
| 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 | isDirectory () |
| 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 | |
| virtual void | updateAttributes (const Attributes &attributes, uint32_t mask) |
| virtual bool | changeOwnership (size_t uid, size_t gid, bool changeUid, bool changeGid) |
Protected Member Functions inherited from Symlink | |
| void | initialise (bool bForce=false) |
| virtual bool | isBytewise () const |
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 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 | |
| Ext2Symlink (const Ext2Symlink &file) | |
| Ext2Symlink & | operator= (const Ext2Symlink &) |
Additional Inherited Members | |
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 Symlink | |
| static Symlink * | 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 §ors) |
Static Public Attributes inherited from File | |
| static constexpr size_t | MaxReadPages = 32 |
Static Protected Member Functions inherited from Symlink | |
| static File * | retainTarget (File *target, Directory::ChildLease &result) |
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 Symlink | |
| String | m_sTarget |
| Mutex | m_TargetLock |
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 |
A File is a file, a directory or a symlink.
Definition at line 33 of file Ext2Symlink.h.
|
private |
Copy constructors are hidden - unused!
| Ext2Symlink::Ext2Symlink | ( | const String & | name, |
| uintptr_t | inode_num, | ||
| Inode * | inode, | ||
| class Ext2Filesystem * | pFs, | ||
| File * | pParent = 0 |
||
| ) |
Constructor, should be called only by a Filesystem.
Definition at line 33 of file Ext2Symlink.cc.
References File::setGidOnly(), File::setPermissionsOnly(), and File::setUidOnly().
|
virtual |
Destructor
Definition at line 46 of file Ext2Symlink.cc.
|
protectedvirtual |
Reimplemented from File.
Definition at line 55 of file Ext2Node-quota.cc.
|
virtual |
Updates inode attributes.
Reimplemented from File.
Definition at line 103 of file Ext2Symlink.cc.
References Ext2Node::fileAttributeChanged().
|
virtual |
Reimplemented from File.
Definition at line 110 of file Ext2Symlink.cc.
|
virtual |
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 163 of file Ext2Xattr-write.cc.
|
virtual |
Reimplemented from File.
Definition at line 167 of file Ext2Xattr-write.cc.
|
virtual |
Reads bytes from the file, if isBytewise() == true.
Reimplemented from File.
Definition at line 48 of file Ext2Symlink.cc.
References Ext2Filesystem::m_BlockSize.
|
virtual |
Reimplemented from File.
Definition at line 177 of file Ext2Xattr-write.cc.
|
virtual |
Reimplemented from File.
Definition at line 170 of file Ext2Xattr-write.cc.
|
virtual |
Delete all data from the file.
Reimplemented from File.
Definition at line 98 of file Ext2Symlink.cc.
References Ext2Node::wipe().
|
protectedvirtual |
Reimplemented from File.
Definition at line 114 of file Ext2Symlink.cc.
|
virtual |
Writes bytes to the file, if isBytewise() == true.
Reimplemented from File.
Definition at line 76 of file Ext2Symlink.cc.
References Ext2Node::ensureLargeEnough(), and Ext2Filesystem::m_BlockSize.