]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
btrfs: update target inode's ctime on unlink
authorJeff Layton <jlayton@kernel.org>
Mon, 12 Aug 2024 16:30:52 +0000 (12:30 -0400)
committerDavid Sterba <dsterba@suse.com>
Thu, 15 Aug 2024 18:35:44 +0000 (20:35 +0200)
Unlink changes the link count on the target inode. POSIX mandates that
the ctime must also change when this occurs.

According to https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html:

"Upon successful completion, unlink() shall mark for update the last data
 modification and last file status change timestamps of the parent
 directory. Also, if the file's link count is not 0, the last file status
 change timestamp of the file shall be marked for update."

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: David Sterba <dsterba@suse.com>
[ add link to the opengroup docs ]
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index 333b0e8587a22bc1f42bbf354c1681ab31caeb53..b1b6564ab68f0ca7ef9ff4d729c07203d3dc00e9 100644 (file)
@@ -4195,6 +4195,7 @@ err:
 
        btrfs_i_size_write(dir, dir->vfs_inode.i_size - name->len * 2);
        inode_inc_iversion(&inode->vfs_inode);
+       inode_set_ctime_current(&inode->vfs_inode);
        inode_inc_iversion(&dir->vfs_inode);
        inode_set_mtime_to_ts(&dir->vfs_inode, inode_set_ctime_current(&dir->vfs_inode));
        ret = btrfs_update_inode(trans, dir);