fs: pass only I_DIRTY_INODE flags to ->dirty_inode
authorEric Biggers <ebiggers@google.com>
Tue, 12 Jan 2021 19:02:48 +0000 (11:02 -0800)
committerJan Kara <jack@suse.cz>
Wed, 13 Jan 2021 16:26:35 +0000 (17:26 +0100)
commita38ed483a72672ee6bdb5d8cf17fc0838377baa0
treebd94a33a5a7f45e4c5843a225b7247c54371c63b
parente2728c5621fd9c68c65a6647875a1d1c67b9f257
fs: pass only I_DIRTY_INODE flags to ->dirty_inode

->dirty_inode is now only called when I_DIRTY_INODE (I_DIRTY_SYNC and/or
I_DIRTY_DATASYNC) is set.  However it may still be passed other dirty
flags at the same time, provided that these other flags happened to be
passed to __mark_inode_dirty() at the same time as I_DIRTY_INODE.

This doesn't make sense because there is no reason for filesystems to
care about these extra flags.  Nor are filesystems notified about all
updates to these other flags.

Therefore, mask the flags before passing them to ->dirty_inode.

Also properly document ->dirty_inode in vfs.rst.

Link: https://lore.kernel.org/r/20210112190253.64307-7-ebiggers@kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Documentation/filesystems/vfs.rst
fs/fs-writeback.c