On Sat, Oct 24, 2020 at 03:13:37PM +0200, Andrea Righi wrote: > I'm getting the following error if I try to create and activate a swap > file defined on an ext4 filesystem: > > [ 34.406479] swapon: file is not committed > > The swap file is created in the root filesystem (ext4 mounted with the > following options): > > $ grep " / " /proc/mounts > /dev/vda1 / ext4 rw,relatime 0 0 > > No matter how long I wait or how many times I run sync, I'm still > getting the same error and the swap file is never activated. > > A git bisect shows that this issue has been introduced by the following > commit: > > aa75f4d3daae ("ext4: main fast-commit commit path") > > Simple test case to reproduce the problem: > > # fallocate -l 8G /swapfile > # chmod 0600 /swapfile > # mkswap /swapfile > # swapon /swapfile > > Maybe we're missing to mark the inode as clean somewhere, even if the > transation is committed to the journal? I think I see the problem. There's something wrong in ext4_inode_datasync_dirty(), it looks like the logic to check if the inode is dirty is quite the opposite. I'll test and send a patch soon. -Andrea