btrfs: documented Attribute and AttributeIterator classes (no functional change)

Change-Id: I3bbd36132824df49339ceb98e811e36942714447
This commit is contained in:
brjhaiku
2019-10-08 19:47:13 +02:00
committed by Adrien Destugues
parent 9d2ab65187
commit 5bfbdf0dc8
2 changed files with 27 additions and 2 deletions
@@ -1,4 +1,5 @@
/*
* Copyright 2019, Bharathi Ramana Joshi, [email protected].
* Copyright 2017, Chế Vũ Gia Hy, [email protected].
* Copyright 2010-2011, Jérôme Duval, [email protected].
* Copyright 2004-2008, Axel Dörfler, [email protected].
@@ -20,27 +21,41 @@ struct attr_cookie {
};
/** Attributes in btrfs use the same on-disk format as directories, in the
* XATTR_ITEM of the inode. Each attribute appears as a "file" there.
*
* Additionally, this class provides access to the non-extended attributes
* through the Stat method. These are stored dorectly in the base inode of
* the file.
*/
class Attribute {
public:
//! Constructs an Attribute object for the file inode
Attribute(Inode* inode);
Attribute(Inode* inode, attr_cookie* cookie);
~Attribute();
//! Tests if operations specified by openMode can be performed on file *name
status_t CheckAccess(const char* name, int openMode);
status_t Create(const char* name, type_code type,
int openMode, attr_cookie** _cookie);
//! Loads file attributes into cookie
status_t Open(const char* name, int openMode,
attr_cookie** _cookie);
//! Get the stat from the attribute
status_t Stat(struct stat& stat);
//! Loads extended attributes of file into buffer
status_t Read(attr_cookie* cookie, off_t pos,
uint8* buffer, size_t* _length);
private:
//! Searches through the filesystem tree for the entry named *name
status_t _Lookup(const char* name, size_t nameLength,
btrfs_dir_entry** entries = NULL,
uint32* length = NULL);
//! Searches through the entry array for the entry named *name
status_t _FindEntry(btrfs_dir_entry* entries,
size_t length, const char* name,
size_t nameLength,
@@ -10,19 +10,29 @@
#include "BTree.h"
#include "Inode.h"
//! Used to traverse through attributes of a given inode
class AttributeIterator {
public:
//! Constructs an AttributeIterator object for Inode object *inode
AttributeIterator(Inode* inode);
~AttributeIterator();
//! Check if fIterator pointer is valid
status_t InitCheck();
/*! Copy details of next Attribute into *name and *_nameLength
* \param[out] name name of the current attribute
* \param[out] _nameLength length of name
* \return B_OK on success, B_ENTRY_NOT_FOUND otherwise
*/
status_t GetNext(char* name, size_t* _nameLength);
//! Rewind the iterator to the first attribute of the node
status_t Rewind();
private:
//! Value of current offset from beginning of Attribute list
uint64 fOffset;
//! Pointer to Inode object corresponding to AttributeIterator
Inode* fInode;
//! Pointer to beginning of current Attribute
TreeIterator* fIterator;
};