[PATCH 0/2] ntfs: wire up the fileattr API

From: Baolin Liu

Date: Tue Sep 01 2026 - 06:21:38 EST


From: Baolin Liu <liubaolin@xxxxxxxxxx>

This series implements fileattr_get and fileattr_set for ntfs so that
lsattr(1) and chattr(1) work on ntfs.

Patch 1 wires up the fileattr inode operations and implements support
for FS_IMMUTABLE_FL and FS_APPEND_FL. These flags map to inode->i_flags
(S_IMMUTABLE, S_APPEND), so the VFS enforces them. fileattr_get also
reports the compressed and encrypted state, which the driver already
exposes through STATX_ATTR_* in ntfs_getattr().

Patch 2 adds FS_NODUMP_FL support, which dump(8) and other backup tools
use to mark files to skip. The flag is stored in a new ntfs_inode field
and reported through both fileattr_get (for lsattr) and ntfs_getattr()
(as STATX_ATTR_NODUMP, for statx), so the two interfaces stay consistent.

All three accepted flags (immutable, append-only, nodump) are kept in
memory and do not survive a remount, matching ntfs3 behavior.

Tested in QEMU on an NTFS volume, both with chattr(1)/lsattr(1) and with
a test binary issuing the ioctls directly:
- chattr +i/+a/+d each set the flag and lsattr reads it back
- appending to a +i file fails with EPERM
- statx(2) reports STATX_ATTR_NODUMP once nodump is set, and stops
reporting it once cleared
- FS_COMPR_FL is rejected with EOPNOTSUPP
- lsattr reports 'c' on a compressed file
- chattr -i/-a/-d clear the flags, and a flag set before unmounting is
gone after dropping caches and mounting again

Baolin Liu (2):
ntfs: implement fileattr_get and fileattr_set
ntfs: support the nodump flag

fs/ntfs/file.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++-
fs/ntfs/inode.c | 1 +
fs/ntfs/inode.h | 1 +
fs/ntfs/ntfs.h | 4 +++
4 files changed, 70 insertions(+), 1 deletion(-)

--
2.51.0