Btrfs: implement FS_IOC_GETFLAGS/SETFLAGS/GETVERSION
Add support for the standard attributes set via chattr and read via lsattr. Currently we store the attributes in the flags value in the btrfs inode, but I wonder whether we should split it into two so that we don't have to keep converting between the two formats. Remove the btrfs_clear_flag/btrfs_set_flag/btrfs_test_flag macros as they were confusing the existing code and got in the way of the new additions. Also add the FS_IOC_GETVERSION ioctl for getting i_generation as it's trivial. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
committed by
Chris Mason
parent
c289811cc0
commit
6cbff00f46
@@ -1115,12 +1115,14 @@ struct btrfs_root {
|
||||
#define BTRFS_INODE_READONLY (1 << 2)
|
||||
#define BTRFS_INODE_NOCOMPRESS (1 << 3)
|
||||
#define BTRFS_INODE_PREALLOC (1 << 4)
|
||||
#define btrfs_clear_flag(inode, flag) (BTRFS_I(inode)->flags &= \
|
||||
~BTRFS_INODE_##flag)
|
||||
#define btrfs_set_flag(inode, flag) (BTRFS_I(inode)->flags |= \
|
||||
BTRFS_INODE_##flag)
|
||||
#define btrfs_test_flag(inode, flag) (BTRFS_I(inode)->flags & \
|
||||
BTRFS_INODE_##flag)
|
||||
#define BTRFS_INODE_SYNC (1 << 5)
|
||||
#define BTRFS_INODE_IMMUTABLE (1 << 6)
|
||||
#define BTRFS_INODE_APPEND (1 << 7)
|
||||
#define BTRFS_INODE_NODUMP (1 << 8)
|
||||
#define BTRFS_INODE_NOATIME (1 << 9)
|
||||
#define BTRFS_INODE_DIRSYNC (1 << 10)
|
||||
|
||||
|
||||
/* some macros to generate set/get funcs for the struct fields. This
|
||||
* assumes there is a lefoo_to_cpu for every type, so lets make a simple
|
||||
* one for u8:
|
||||
@@ -2260,6 +2262,8 @@ int btrfs_cont_expand(struct inode *inode, loff_t size);
|
||||
|
||||
/* ioctl.c */
|
||||
long btrfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
|
||||
void btrfs_update_iflags(struct inode *inode);
|
||||
void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
|
||||
|
||||
/* file.c */
|
||||
int btrfs_sync_file(struct file *file, struct dentry *dentry, int datasync);
|
||||
|
Reference in New Issue
Block a user