2022-01-18 20:26:07 +00:00
|
|
|
The btrfs filesystem supports setting file attributes or flags. Note there are
|
|
|
|
old and new interfaces, with confusing names. The following list should clarify
|
|
|
|
that:
|
|
|
|
|
|
|
|
* *attributes*: ``chattr(1)`` or ``lsattr(1)`` utilities (the ioctls are
|
|
|
|
FS_IOC_GETFLAGS and FS_IOC_SETFLAGS), due to the ioctl names the attributes
|
|
|
|
are also called flags
|
|
|
|
* *xflags*: to distinguish from the previous, it's extended flags, with tunable
|
|
|
|
bits similar to the attributes but extensible and new bits will be added in
|
|
|
|
the future (the ioctls are FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR but they
|
|
|
|
are not related to extended attributes that are also called xattrs), there's
|
|
|
|
no standard tool to change the bits, there's support in ``xfs_io(8)`` as
|
|
|
|
command **xfs_io -c chattr**
|
|
|
|
|
|
|
|
Attributes
|
|
|
|
^^^^^^^^^^
|
|
|
|
|
|
|
|
a
|
|
|
|
*append only*, new writes are always written at the end of the file
|
|
|
|
|
|
|
|
A
|
|
|
|
*no atime updates*
|
|
|
|
|
|
|
|
c
|
|
|
|
*compress data*, all data written after this attribute is set will be compressed.
|
|
|
|
Please note that compression is also affected by the mount options or the parent
|
|
|
|
directory attributes.
|
|
|
|
|
|
|
|
When set on a directory, all newly created files will inherit this attribute.
|
|
|
|
This attribute cannot be set with 'm' at the same time.
|
|
|
|
|
|
|
|
C
|
|
|
|
*no copy-on-write*, file data modifications are done in-place
|
|
|
|
|
|
|
|
When set on a directory, all newly created files will inherit this attribute.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
Due to implementation limitations, this flag can be set/unset only on
|
|
|
|
empty files.
|
|
|
|
|
|
|
|
d
|
|
|
|
*no dump*, makes sense with 3rd party tools like ``dump(8)``, on BTRFS the
|
|
|
|
attribute can be set/unset but no other special handling is done
|
|
|
|
|
|
|
|
D
|
|
|
|
*synchronous directory updates*, for more details search ``open(2)`` for *O_SYNC*
|
|
|
|
and *O_DSYNC*
|
|
|
|
|
|
|
|
i
|
|
|
|
*immutable*, no file data and metadata changes allowed even to the root user as
|
|
|
|
long as this attribute is set (obviously the exception is unsetting the attribute)
|
|
|
|
|
|
|
|
m
|
|
|
|
*no compression*, permanently turn off compression on the given file. Any
|
|
|
|
compression mount options will not affect this file. (``chattr`` support added in
|
|
|
|
1.46.2)
|
|
|
|
|
|
|
|
When set on a directory, all newly created files will inherit this attribute.
|
|
|
|
This attribute cannot be set with *c* at the same time.
|
|
|
|
|
|
|
|
S
|
|
|
|
*synchronous updates*, for more details search ``open(2)`` for *O_SYNC* and
|
|
|
|
*O_DSYNC*
|
|
|
|
|
|
|
|
No other attributes are supported. For the complete list please refer to the
|
|
|
|
``chattr(1)`` manual page.
|
|
|
|
|
|
|
|
XFLAGS
|
|
|
|
^^^^^^
|
|
|
|
|
2023-09-06 15:03:49 +00:00
|
|
|
There's an overlap of letters assigned to the bits with the attributes, this list
|
2022-01-18 20:26:07 +00:00
|
|
|
refers to what ``xfs_io(8)`` provides:
|
|
|
|
|
|
|
|
i
|
|
|
|
*immutable*, same as the attribute
|
|
|
|
|
|
|
|
a
|
|
|
|
*append only*, same as the attribute
|
|
|
|
|
|
|
|
s
|
|
|
|
*synchronous updates*, same as the attribute *S*
|
|
|
|
|
|
|
|
A
|
|
|
|
*no atime updates*, same as the attribute
|
|
|
|
|
|
|
|
d
|
|
|
|
*no dump*, same as the attribute
|
|
|
|
|