From: Jan Kara <jack@suse.cz>
To: Eric Biggers <ebiggers@kernel.org>
Cc: linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org,
linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
Theodore Ts'o <tytso@mit.edu>, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v2 06/12] fs: pass only I_DIRTY_INODE flags to ->dirty_inode
Date: Mon, 11 Jan 2021 15:56:33 +0100 [thread overview]
Message-ID: <20210111145633.GE18475@quack2.suse.cz> (raw)
In-Reply-To: <20210109075903.208222-7-ebiggers@kernel.org>
On Fri 08-01-21 23:58:57, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> ->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.
>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Signed-off-by: Eric Biggers <ebiggers@google.com>
Looks good to me. Feel free to add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> ---
> Documentation/filesystems/vfs.rst | 5 ++++-
> fs/fs-writeback.c | 2 +-
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst
> index ca52c82e5bb54..287b80948a40b 100644
> --- a/Documentation/filesystems/vfs.rst
> +++ b/Documentation/filesystems/vfs.rst
> @@ -270,7 +270,10 @@ or bottom half).
> ->alloc_inode.
>
> ``dirty_inode``
> - this method is called by the VFS to mark an inode dirty.
> + this method is called by the VFS when an inode is marked dirty.
> + This is specifically for the inode itself being marked dirty,
> + not its data. If the update needs to be persisted by fdatasync(),
> + then I_DIRTY_DATASYNC will be set in the flags argument.
>
> ``write_inode``
> this method is called when the VFS needs to write an inode to
> diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> index b7616bbd55336..2e6064012f7d3 100644
> --- a/fs/fs-writeback.c
> +++ b/fs/fs-writeback.c
> @@ -2259,7 +2259,7 @@ void __mark_inode_dirty(struct inode *inode, int flags)
> trace_writeback_dirty_inode_start(inode, flags);
>
> if (sb->s_op->dirty_inode)
> - sb->s_op->dirty_inode(inode, flags);
> + sb->s_op->dirty_inode(inode, flags & I_DIRTY_INODE);
>
> trace_writeback_dirty_inode(inode, flags);
>
> --
> 2.30.0
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2021-01-11 14:57 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-09 7:58 [PATCH v2 00/12] lazytime fix and cleanups Eric Biggers
2021-01-09 7:58 ` [PATCH v2 01/12] fs: fix lazytime expiration handling in __writeback_single_inode() Eric Biggers
2021-01-11 10:48 ` Christoph Hellwig
2021-01-11 14:46 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 02/12] fs: correctly document the inode dirty flags Eric Biggers
2021-01-11 14:48 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 03/12] fs: only specify I_DIRTY_TIME when needed in generic_update_time() Eric Biggers
2021-01-11 14:50 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 04/12] fat: only specify I_DIRTY_TIME when needed in fat_update_time() Eric Biggers
2021-01-11 10:52 ` Christoph Hellwig
2021-01-11 19:50 ` Eric Biggers
2021-01-12 5:21 ` Dave Chinner
2021-01-12 13:23 ` Christoph Hellwig
2021-01-11 14:52 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 05/12] fs: don't call ->dirty_inode for lazytime timestamp updates Eric Biggers
2021-01-11 14:54 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 06/12] fs: pass only I_DIRTY_INODE flags to ->dirty_inode Eric Biggers
2021-01-11 14:56 ` Jan Kara [this message]
2021-01-09 7:58 ` [PATCH v2 07/12] fs: clean up __mark_inode_dirty() a bit Eric Biggers
2021-01-11 14:59 ` Jan Kara
2021-01-09 7:58 ` [PATCH v2 08/12] fs: drop redundant check from __writeback_single_inode() Eric Biggers
2021-01-11 10:52 ` Christoph Hellwig
2021-01-11 15:00 ` Jan Kara
2021-01-09 7:59 ` [PATCH v2 09/12] fs: improve comments for writeback_single_inode() Eric Biggers
2021-01-11 10:53 ` Christoph Hellwig
2021-01-11 15:05 ` Jan Kara
2021-01-09 7:59 ` [PATCH v2 10/12] gfs2: don't worry about I_DIRTY_TIME in gfs2_fsync() Eric Biggers
2021-01-11 15:06 ` Jan Kara
2021-01-09 7:59 ` [PATCH v2 11/12] ext4: simplify i_state checks in __ext4_update_other_inode_time() Eric Biggers
2021-01-11 10:53 ` Christoph Hellwig
2021-01-11 20:23 ` Eric Biggers
2021-01-12 13:25 ` Christoph Hellwig
2021-02-03 5:16 ` Theodore Ts'o
2021-01-11 15:11 ` Jan Kara
2021-01-09 7:59 ` [PATCH v2 12/12] xfs: remove a stale comment from xfs_file_aio_write_checks() Eric Biggers
2021-01-12 17:31 ` Darrick J. Wong
2021-01-11 15:15 ` [PATCH v2 00/12] lazytime fix and cleanups Jan Kara
2021-01-11 20:44 ` Eric Biggers
2021-02-03 5:11 ` Theodore Ts'o
2021-02-03 5:22 ` Eric Biggers
2021-02-03 15:49 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210111145633.GE18475@quack2.suse.cz \
--to=jack@suse.cz \
--cc=ebiggers@kernel.org \
--cc=hch@lst.de \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).