All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Jan Kara <jack@suse.cz>, Alexander Viro <viro@zeniv.linux.org.uk>,
	 Christian Brauner <brauner@kernel.org>,
	Eric Van Hensbergen <ericvh@kernel.org>,
	Latchesar Ionkov <lucho@ionkov.net>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	David Howells <dhowells@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>, Chris Mason <clm@fb.com>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>, Xiubo Li <xiubli@redhat.com>,
	Ilya Dryomov <idryomov@gmail.com>,
	Jan Harkes <jaharkes@cs.cmu.edu>,
	coda@cs.cmu.edu, Tyler Hicks <code@tyhicks.com>,
	Gao Xiang <xiang@kernel.org>, Chao Yu <chao@kernel.org>,
	Yue Hu <huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn>,
	Jeffle Xu <jefflexu@linux.alibaba.com>,
	 Namjae Jeon <linkinjeon@kernel.org>,
	Sungjong Seo <sj1557.seo@samsung.com>, Jan Kara <jack@suse.com>,
	 Theodore Ts'o <tytso@mit.edu>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Bob Peterson <rpeterso@redhat.com>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Tejun Heo <tj@kernel.org>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	Anna Schumaker <anna@kernel.org>,
	 Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Mark Fasheh <mark@fasheh.com>, Joel Becker <jlbec@evilplan.org>,
	Joseph Qi <joseph.qi@linux.alibaba.com>,
	Mike Marshall <hubcap@omnibond.com>,
	Martin Brandenburg <martin@omnibond.com>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Kees Cook <keescook@chromium.org>,
	Iurii Zaikin <yzaikin@google.com>,
	 Steve French <sfrench@samba.org>,
	Paulo Alcantara <pc@manguebit.com>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	Shyam Prasad N <sprasad@microsoft.com>,
	Tom Talpey <tom@talpey.com>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Richard Weinberger <richard@nod.at>,
	Hans de Goede <hdegoede@redhat.com>,
	Hugh Dickins <hughd@google.com>,
	 Andrew Morton <akpm@linux-foundation.org>,
	Amir Goldstein <amir73il@gmail.com>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Benjamin Coddington <bcodding@redhat.com>,
	 linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	 v9fs@lists.linux.dev, linux-afs@lists.infradead.org,
	linux-btrfs@vger.kernel.org,  ceph-devel@vger.kernel.org,
	codalist@telemann.coda.cs.cmu.edu,  ecryptfs@vger.kernel.org,
	linux-erofs@lists.ozlabs.org,  linux-ext4@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	 cluster-devel@redhat.com, linux-nfs@vger.kernel.org,
	ntfs3@lists.linux.dev,  ocfs2-devel@lists.linux.dev,
	devel@lists.orangefs.org,  linux-cifs@vger.kernel.org,
	samba-technical@lists.samba.org,  linux-mtd@lists.infradead.org,
	linux-mm@kvack.org, linux-unionfs@vger.kernel.org,
	 linux-xfs@vger.kernel.org
Subject: Re: [PATCH v7 05/13] fat: make fat_update_time get its own timestamp
Date: Wed, 09 Aug 2023 13:59:26 -0400	[thread overview]
Message-ID: <ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org> (raw)
In-Reply-To: <87leek6rh1.fsf@mail.parknet.co.jp>

On Thu, 2023-08-10 at 02:44 +0900, OGAWA Hirofumi wrote:
> Jeff Layton <jlayton@kernel.org> writes:
> 
> > On Thu, 2023-08-10 at 00:17 +0900, OGAWA Hirofumi wrote:
> > > Jan Kara <jack@suse.cz> writes:
> 
> [...]
> 
> > My mistake re: lazytime vs. relatime, but Jan is correct that this
> > shouldn't break anything there.
> 
> Actually breaks ("break" means not corrupt fs, means it breaks lazytime
> optimization). It is just not always, but it should be always for some
> userspaces.
> 
> > The logic in the revised generic_update_time is different because FAT is
> > is a bit strange. fat_update_time does extra truncation on the timestamp
> > that it is handed beyond what timestamp_truncate() does.
> > fat_truncate_time is called in many different places too, so I don't
> > feel comfortable making big changes to how that works.
> > 
> > In the case of generic_update_time, it calls inode_update_timestamps
> > which returns a mask that shows which timestamps got updated. It then
> > marks the dirty_flags appropriately for what was actually changed.
> > 
> > generic_update_time is used across many filesystems so we need to ensure
> > that it's OK to use even when multigrain timestamps are enabled. Those
> > haven't been enabled in FAT though, so I didn't bother, and left it to
> > dirtying the inode in the same way it was before, even though it now
> > fetches its own timestamps from the clock. Given the way that the mtime
> > and ctime are smooshed together in FAT, that seemed reasonable.
> > 
> > Is there a particular case or flag combination you're concerned about
> > here?
> 
> Yes. Because FAT has strange timestamps that different granularity on
> disk . This is why generic time truncation doesn't work for FAT.
> 
> Well anyway, my concern is the only following part. In
> generic_update_time(), S_[CM]TIME are not the cause of I_DIRTY_SYNC if
> lazytime mode.
> 
> -	if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
> +	if ((flags & (S_VERSION|S_CTIME|S_MTIME)) && inode_maybe_inc_iversion(inode, false))
> 		dirty_flags |= I_DIRTY_SYNC;
> 

That would be wrong. The problem is that we're changing how update_time
works:

Previously, update_time was given a timestamp and a set of S_* flags to
indicate which fields should be updated. Now, update_time is not given a
timestamp. It needs to fetch it itself, but that subtly changes the
meaning of the flags field.

It now means "these fields needed to be updated when I last checked".
The timestamp and i_version may now be different from when the flags
field was set. This means that if any of S_CTIME/S_MTIME/S_VERSION were
set that we need to attempt to update all 3 of them. They may now be
different from the timestamp or version that we ultimately end up with.

The above may look to you like it would always cause I_DIRTY_SYNC to be
set on any ctime or mtime update, but inode_maybe_inc_iversion only
returns true if it actually updated i_version, and it only does that if
someone issued a ->getattr against the file since the last time it was
updated.

So, this shouldn't generate any more DIRTY_SYNC updates than it did
before.
-- 
Jeff Layton <jlayton@kernel.org>

WARNING: multiple messages have this Message-ID (diff)
From: Jeff Layton <jlayton@kernel.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Latchesar Ionkov <lucho@ionkov.net>,
	Martin Brandenburg <martin@omnibond.com>,
	Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Jan Kara <jack@suse.cz>, "Darrick J. Wong" <djwong@kernel.org>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	ecryptfs@vger.kernel.org,
	Yue Hu <huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn>,
	David Howells <dhowells@redhat.com>, Chris Mason <clm@fb.com>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Hans de Goede <hdegoede@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	linux-xfs@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-mtd@lists.infradead.org,
	Mike Marshall <hubcap@omnibond.com>,
	Paulo Alcantara <pc@manguebit.com>,
	linux-cifs@vger.kernel.org,
	Eric Van Hensbergen <ericvh@kernel.org>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Richard Weinberger <richard@nod.at>,
	Mark Fasheh <mark@fasheh.com>,
	linux-unionfs@vger.kernel.org, Hugh Dickins <hughd@google.com>,
	Benjamin Coddington <bcodding@redhat.com>,
	Tyler Hicks <code@tyhicks.com>,
	cluster-devel@redhat.com, coda@cs.cmu.edu, linux-mm@kvack.org,
	Ilya Dryomov <idryomov@gmail.com>,
	Iurii Zaikin <yzaikin@google.com>,
	Namjae Jeon <linkinjeon@kernel.org>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	codalist@telemann.coda.cs.cmu.edu,
	Shyam Prasad N <sprasad@microsoft.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Kees Cook <keescook@chromium.org>,
	ocfs2-devel@lists.linux.dev, Josef Bacik <josef@toxicpanda.com>,
	Tom Talpey <tom@talpey.com>, Tejun Heo <tj@kernel.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	David Sterba <dsterba@suse.com>, Jaegeuk Kim <jaegeuk@kernel.org>,
	ceph-devel@vger.kernel.org, Xiubo Li <xiubli@redhat.com>,
	Gao Xiang <xiang@kernel.org>, Jan Harkes <jaharkes@cs.cmu.edu>,
	Christian Brauner <brauner@kernel.org>,
	linux-ext4@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Joseph Qi <joseph.qi@linux.alibaba.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	v9fs@lists.linux.dev, ntfs3@lists.linux.dev,
	samba-technical@lists.samba.org, linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	Steve French <sfrench@samba.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Jeffle Xu <jefflexu@linux.alibaba.com>,
	devel@lists.orangefs.org, Anna Schumaker <anna@kernel.org>,
	Jan Kara <jack@suse.com>, Bob Peterson <rpeterso@redhat.com>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Sungjong Seo <sj1557.seo@samsung.com>,
	linux-erofs@lists.ozlabs.org, linux-nfs@vger.kernel.org,
	linux-btrfs@vger.kernel.org, Joel Becker <jlbec@evilplan.org>
Subject: Re: [f2fs-dev] [PATCH v7 05/13] fat: make fat_update_time get its own timestamp
Date: Wed, 09 Aug 2023 13:59:26 -0400	[thread overview]
Message-ID: <ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org> (raw)
In-Reply-To: <87leek6rh1.fsf@mail.parknet.co.jp>

On Thu, 2023-08-10 at 02:44 +0900, OGAWA Hirofumi wrote:
> Jeff Layton <jlayton@kernel.org> writes:
> 
> > On Thu, 2023-08-10 at 00:17 +0900, OGAWA Hirofumi wrote:
> > > Jan Kara <jack@suse.cz> writes:
> 
> [...]
> 
> > My mistake re: lazytime vs. relatime, but Jan is correct that this
> > shouldn't break anything there.
> 
> Actually breaks ("break" means not corrupt fs, means it breaks lazytime
> optimization). It is just not always, but it should be always for some
> userspaces.
> 
> > The logic in the revised generic_update_time is different because FAT is
> > is a bit strange. fat_update_time does extra truncation on the timestamp
> > that it is handed beyond what timestamp_truncate() does.
> > fat_truncate_time is called in many different places too, so I don't
> > feel comfortable making big changes to how that works.
> > 
> > In the case of generic_update_time, it calls inode_update_timestamps
> > which returns a mask that shows which timestamps got updated. It then
> > marks the dirty_flags appropriately for what was actually changed.
> > 
> > generic_update_time is used across many filesystems so we need to ensure
> > that it's OK to use even when multigrain timestamps are enabled. Those
> > haven't been enabled in FAT though, so I didn't bother, and left it to
> > dirtying the inode in the same way it was before, even though it now
> > fetches its own timestamps from the clock. Given the way that the mtime
> > and ctime are smooshed together in FAT, that seemed reasonable.
> > 
> > Is there a particular case or flag combination you're concerned about
> > here?
> 
> Yes. Because FAT has strange timestamps that different granularity on
> disk . This is why generic time truncation doesn't work for FAT.
> 
> Well anyway, my concern is the only following part. In
> generic_update_time(), S_[CM]TIME are not the cause of I_DIRTY_SYNC if
> lazytime mode.
> 
> -	if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
> +	if ((flags & (S_VERSION|S_CTIME|S_MTIME)) && inode_maybe_inc_iversion(inode, false))
> 		dirty_flags |= I_DIRTY_SYNC;
> 

That would be wrong. The problem is that we're changing how update_time
works:

Previously, update_time was given a timestamp and a set of S_* flags to
indicate which fields should be updated. Now, update_time is not given a
timestamp. It needs to fetch it itself, but that subtly changes the
meaning of the flags field.

It now means "these fields needed to be updated when I last checked".
The timestamp and i_version may now be different from when the flags
field was set. This means that if any of S_CTIME/S_MTIME/S_VERSION were
set that we need to attempt to update all 3 of them. They may now be
different from the timestamp or version that we ultimately end up with.

The above may look to you like it would always cause I_DIRTY_SYNC to be
set on any ctime or mtime update, but inode_maybe_inc_iversion only
returns true if it actually updated i_version, and it only does that if
someone issued a ->getattr against the file since the last time it was
updated.

So, this shouldn't generate any more DIRTY_SYNC updates than it did
before.
-- 
Jeff Layton <jlayton@kernel.org>


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jeff Layton <jlayton@kernel.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Jan Kara <jack@suse.cz>, Alexander Viro <viro@zeniv.linux.org.uk>,
	 Christian Brauner <brauner@kernel.org>,
	Eric Van Hensbergen <ericvh@kernel.org>,
	Latchesar Ionkov <lucho@ionkov.net>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	David Howells <dhowells@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>, Chris Mason <clm@fb.com>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>, Xiubo Li <xiubli@redhat.com>,
	Ilya Dryomov <idryomov@gmail.com>,
	Jan Harkes <jaharkes@cs.cmu.edu>,
	coda@cs.cmu.edu, Tyler Hicks <code@tyhicks.com>,
	Gao Xiang <xiang@kernel.org>, Chao Yu <chao@kernel.org>,
	Yue Hu <huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn>,
	Jeffle Xu <jefflexu@linux.alibaba.com>,
	 Namjae Jeon <linkinjeon@kernel.org>,
	Sungjong Seo <sj1557.seo@samsung.com>, Jan Kara <jack@suse.com>,
	 Theodore Ts'o <tytso@mit.edu>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Bob Peterson <rpeterso@redhat.com>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Tejun Heo <tj@kernel.org>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	Anna Schumaker <anna@kernel.org>,
	 Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Mark Fasheh <mark@fasheh.com>, Joel Becker <jlbec@evilplan.org>,
	Joseph Qi <joseph.qi@linux.alibaba.com>,
	Mike Marshall <hubcap@omnibond.com>,
	Martin Brandenburg <martin@omnibond.com>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Kees Cook <keescook@chromium.org>,
	Iurii Zaikin <yzaikin@google.com>,
	 Steve French <sfrench@samba.org>,
	Paulo Alcantara <pc@manguebit.com>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	Shyam Prasad N <sprasad@microsoft.com>,
	Tom Talpey <tom@talpey.com>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Richard Weinberger <richard@nod.at>,
	Hans de Goede <hdegoede@redhat.com>,
	Hugh Dickins <hughd@google.com>,
	 Andrew Morton <akpm@linux-foundation.org>,
	Amir Goldstein <amir73il@gmail.com>,
	"Darrick J. Wong" <djwong@kernel.org>,
	Benjamin Coddington <bcodding@redhat.com>,
	 linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	 v9fs@lists.linux.dev, linux-afs@lists.infradead.org,
	linux-btrfs@vger.kernel.org,  ceph-devel@vger.kernel.org,
	codalist@telemann.coda.cs.cmu.edu,  ecryptfs@vger.kernel.org,
	linux-erofs@lists.ozlabs.org,  linux-ext4@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	 cluster-devel@redhat.com, linux-nfs@vger.kernel.org,
	ntfs3@lists.linux.dev,  ocfs2-devel@lists.linux.dev,
	devel@lists.orangefs.org,  linux-cifs@vger.kernel.org,
	samba-technical@lists.samba.org,  linux-mtd@lists.infradead.org,
	linux-mm@kvack.org, linux-unionfs@vger.kernel.org,
	 linux-xfs@vger.kernel.org
Subject: Re: [PATCH v7 05/13] fat: make fat_update_time get its own timestamp
Date: Wed, 09 Aug 2023 13:59:26 -0400	[thread overview]
Message-ID: <ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org> (raw)
In-Reply-To: <87leek6rh1.fsf@mail.parknet.co.jp>

On Thu, 2023-08-10 at 02:44 +0900, OGAWA Hirofumi wrote:
> Jeff Layton <jlayton@kernel.org> writes:
> 
> > On Thu, 2023-08-10 at 00:17 +0900, OGAWA Hirofumi wrote:
> > > Jan Kara <jack@suse.cz> writes:
> 
> [...]
> 
> > My mistake re: lazytime vs. relatime, but Jan is correct that this
> > shouldn't break anything there.
> 
> Actually breaks ("break" means not corrupt fs, means it breaks lazytime
> optimization). It is just not always, but it should be always for some
> userspaces.
> 
> > The logic in the revised generic_update_time is different because FAT is
> > is a bit strange. fat_update_time does extra truncation on the timestamp
> > that it is handed beyond what timestamp_truncate() does.
> > fat_truncate_time is called in many different places too, so I don't
> > feel comfortable making big changes to how that works.
> > 
> > In the case of generic_update_time, it calls inode_update_timestamps
> > which returns a mask that shows which timestamps got updated. It then
> > marks the dirty_flags appropriately for what was actually changed.
> > 
> > generic_update_time is used across many filesystems so we need to ensure
> > that it's OK to use even when multigrain timestamps are enabled. Those
> > haven't been enabled in FAT though, so I didn't bother, and left it to
> > dirtying the inode in the same way it was before, even though it now
> > fetches its own timestamps from the clock. Given the way that the mtime
> > and ctime are smooshed together in FAT, that seemed reasonable.
> > 
> > Is there a particular case or flag combination you're concerned about
> > here?
> 
> Yes. Because FAT has strange timestamps that different granularity on
> disk . This is why generic time truncation doesn't work for FAT.
> 
> Well anyway, my concern is the only following part. In
> generic_update_time(), S_[CM]TIME are not the cause of I_DIRTY_SYNC if
> lazytime mode.
> 
> -	if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
> +	if ((flags & (S_VERSION|S_CTIME|S_MTIME)) && inode_maybe_inc_iversion(inode, false))
> 		dirty_flags |= I_DIRTY_SYNC;
> 

That would be wrong. The problem is that we're changing how update_time
works:

Previously, update_time was given a timestamp and a set of S_* flags to
indicate which fields should be updated. Now, update_time is not given a
timestamp. It needs to fetch it itself, but that subtly changes the
meaning of the flags field.

It now means "these fields needed to be updated when I last checked".
The timestamp and i_version may now be different from when the flags
field was set. This means that if any of S_CTIME/S_MTIME/S_VERSION were
set that we need to attempt to update all 3 of them. They may now be
different from the timestamp or version that we ultimately end up with.

The above may look to you like it would always cause I_DIRTY_SYNC to be
set on any ctime or mtime update, but inode_maybe_inc_iversion only
returns true if it actually updated i_version, and it only does that if
someone issued a ->getattr against the file since the last time it was
updated.

So, this shouldn't generate any more DIRTY_SYNC updates than it did
before.
-- 
Jeff Layton <jlayton@kernel.org>

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Jeff Layton <jlayton@kernel.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Latchesar Ionkov <lucho@ionkov.net>,
	Martin Brandenburg <martin@omnibond.com>,
	Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Jan Kara <jack@suse.cz>, "Darrick J. Wong" <djwong@kernel.org>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	ecryptfs@vger.kernel.org,
	Yue Hu <huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn>,
	David Howells <dhowells@redhat.com>, Chris Mason <clm@fb.com>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Hans de Goede <hdegoede@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	linux-xfs@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-mtd@lists.infradead.org,
	Mike Marshall <hubcap@omnibond.com>,
	Paulo Alcantara <pc@manguebit.com>,
	linux-cifs@vger.kernel.org,
	Eric Van Hensbergen <ericvh@kernel.org>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Richard Weinberger <richard@nod.at>,
	Mark Fasheh <mark@fasheh.com>,
	linux-unionfs@vger.kernel.org, Hugh Dickins <hughd@google.com>,
	Tyler Hicks <code@tyhicks.com>,
	cluster-devel@redhat.com, coda@cs.cmu.edu, linux-mm@kvack.org,
	Ilya Dryomov <idryomov@gmail.com>,
	Iurii Zaikin <yzaikin@google.com>,
	Namjae Jeon <linkinjeon@kernel.org>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	codalist@telemann.coda.cs.cmu.edu,
	Shyam Prasad N <sprasad@microsoft.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Kees Cook <keescook@chromium.org>,
	ocfs2-devel@lists.linux.dev, Chao Yu <chao@kernel.org>,
	Josef Bacik <josef@toxicpanda.com>, Tom Talpey <tom@talpey.com>,
	Tejun Heo <tj@kernel.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	David Sterba <dsterba@suse.com>, Jaegeuk Kim <jaegeuk@kernel.org>,
	ceph-devel@vger.kernel.org, Xiubo Li <xiubli@redhat.com>,
	Gao Xiang <xiang@kernel.org>, Jan Harkes <jaharkes@cs.cmu.edu>,
	Christian Brauner <brauner@kernel.org>,
	linux-ext4@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Joseph Qi <joseph.qi@linux.alibaba.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	v9fs@lists.linux.dev, ntfs3@lists.linux.dev,
	samba-technical@lists.samba.org, linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	Steve French <sfrench@samba.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Jeffle Xu <jefflexu@linux.alibaba.com>,
	devel@lists.orangefs.org, Anna Schumaker <anna@kernel.org>,
	Jan Kara <jack@suse.com>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Sungjong Seo <sj1557.seo@samsung.com>,
	linux-erofs@lists.ozlabs.org, linux-nfs@vger.kernel.org,
	linux-btrfs@vger.kernel.org, Joel Becker <jlbec@evilplan.org>
Subject: Re: [Cluster-devel] [PATCH v7 05/13] fat: make fat_update_time get its own timestamp
Date: Wed, 09 Aug 2023 13:59:26 -0400	[thread overview]
Message-ID: <ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org> (raw)
In-Reply-To: <87leek6rh1.fsf@mail.parknet.co.jp>

On Thu, 2023-08-10 at 02:44 +0900, OGAWA Hirofumi wrote:
> Jeff Layton <jlayton@kernel.org> writes:
> 
> > On Thu, 2023-08-10 at 00:17 +0900, OGAWA Hirofumi wrote:
> > > Jan Kara <jack@suse.cz> writes:
> 
> [...]
> 
> > My mistake re: lazytime vs. relatime, but Jan is correct that this
> > shouldn't break anything there.
> 
> Actually breaks ("break" means not corrupt fs, means it breaks lazytime
> optimization). It is just not always, but it should be always for some
> userspaces.
> 
> > The logic in the revised generic_update_time is different because FAT is
> > is a bit strange. fat_update_time does extra truncation on the timestamp
> > that it is handed beyond what timestamp_truncate() does.
> > fat_truncate_time is called in many different places too, so I don't
> > feel comfortable making big changes to how that works.
> > 
> > In the case of generic_update_time, it calls inode_update_timestamps
> > which returns a mask that shows which timestamps got updated. It then
> > marks the dirty_flags appropriately for what was actually changed.
> > 
> > generic_update_time is used across many filesystems so we need to ensure
> > that it's OK to use even when multigrain timestamps are enabled. Those
> > haven't been enabled in FAT though, so I didn't bother, and left it to
> > dirtying the inode in the same way it was before, even though it now
> > fetches its own timestamps from the clock. Given the way that the mtime
> > and ctime are smooshed together in FAT, that seemed reasonable.
> > 
> > Is there a particular case or flag combination you're concerned about
> > here?
> 
> Yes. Because FAT has strange timestamps that different granularity on
> disk . This is why generic time truncation doesn't work for FAT.
> 
> Well anyway, my concern is the only following part. In
> generic_update_time(), S_[CM]TIME are not the cause of I_DIRTY_SYNC if
> lazytime mode.
> 
> -	if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
> +	if ((flags & (S_VERSION|S_CTIME|S_MTIME)) && inode_maybe_inc_iversion(inode, false))
> 		dirty_flags |= I_DIRTY_SYNC;
> 

That would be wrong. The problem is that we're changing how update_time
works:

Previously, update_time was given a timestamp and a set of S_* flags to
indicate which fields should be updated. Now, update_time is not given a
timestamp. It needs to fetch it itself, but that subtly changes the
meaning of the flags field.

It now means "these fields needed to be updated when I last checked".
The timestamp and i_version may now be different from when the flags
field was set. This means that if any of S_CTIME/S_MTIME/S_VERSION were
set that we need to attempt to update all 3 of them. They may now be
different from the timestamp or version that we ultimately end up with.

The above may look to you like it would always cause I_DIRTY_SYNC to be
set on any ctime or mtime update, but inode_maybe_inc_iversion only
returns true if it actually updated i_version, and it only does that if
someone issued a ->getattr against the file since the last time it was
updated.

So, this shouldn't generate any more DIRTY_SYNC updates than it did
before.
-- 
Jeff Layton <jlayton@kernel.org>


WARNING: multiple messages have this Message-ID (diff)
From: Jeff Layton <jlayton@kernel.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Latchesar Ionkov <lucho@ionkov.net>,
	Martin Brandenburg <martin@omnibond.com>,
	Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Jan Kara <jack@suse.cz>, "Darrick J. Wong" <djwong@kernel.org>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	ecryptfs@vger.kernel.org,
	Yue Hu <huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn>,
	David Howells <dhowells@redhat.com>, Chris Mason <clm@fb.com>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Hans de Goede <hdegoede@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	linux-xfs@vger.kernel.org, linux-afs@lists.infradead.org,
	linux-mtd@lists.infradead.org,
	Mike Marshall <hubcap@omnibond.com>,
	Paulo Alcantara <pc@manguebit.com>,
	linux-cifs@vger.kernel.org,
	Eric Van Hensbergen <ericvh@kernel.org>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	Miklos Szeredi <miklos@szeredi.hu>,
	Richard Weinberger <richard@nod.at>,
	Mark Fasheh <mark@fasheh.com>,
	linux-unionfs@vger.kernel.org, Hugh Dickins <hughd@google.com>,
	Benjamin Coddington <bcodding@redhat.com>,
	Tyler Hicks <code@tyhicks.com>,
	cluster-devel@redhat.com, coda@cs.cmu.edu, linux-mm@kvack.org,
	Ilya Dryomov <idryomov@gmail.com>,
	 Iurii Zaikin <yzaikin@google.com>,
	Namjae Jeon <linkinjeon@kernel.org>,
	Trond Myklebust <trond.myklebust@hammerspace.com>,
	codalist@telemann.coda.cs.cmu.edu,
	Shyam Prasad N <sprasad@microsoft.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Kees Cook <keescook@chromium.org>,
	ocfs2-devel@lists.linux.dev, Josef Bacik <josef@toxicpanda.com>,
	Tom Talpey <tom@talpey.com>, Tejun Heo <tj@kernel.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	David Sterba <dsterba@suse.com>, Jaegeuk Kim <jaegeuk@kernel.org>,
	ceph-devel@vger.kernel.org, Xiubo Li <xiubli@redhat.com>,
	Jan Harkes <jaharkes@cs.cmu.edu>,
	Christian Brauner <brauner@kernel.org>,
	linux-ext4@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Joseph Qi <joseph.qi@linux.alibaba.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	v9fs@lists.linux.dev, ntfs3@lists.linux.dev,
	samba-technical@lists.samba.org, linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net,
	Steve French <sfrench@sa mba.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Luis Chamberlain <mcgrof@kernel.org>,
	devel@lists.orangefs.org, Anna Schumaker <anna@kernel.org>,
	Jan Kara <jack@suse.com>, Bob Peterson <rpeterso@redhat.com>,
	linux-fsdevel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Sungjong Seo <sj1557.seo@samsung.com>,
	linux-erofs@lists.ozlabs.org, linux-nfs@vger.kernel.org,
	linux-btrfs@vger.kernel.org, Joel Becker <jlbec@evilplan.org>
Subject: Re: [PATCH v7 05/13] fat: make fat_update_time get its own timestamp
Date: Wed, 09 Aug 2023 13:59:26 -0400	[thread overview]
Message-ID: <ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org> (raw)
In-Reply-To: <87leek6rh1.fsf@mail.parknet.co.jp>

On Thu, 2023-08-10 at 02:44 +0900, OGAWA Hirofumi wrote:
> Jeff Layton <jlayton@kernel.org> writes:
> 
> > On Thu, 2023-08-10 at 00:17 +0900, OGAWA Hirofumi wrote:
> > > Jan Kara <jack@suse.cz> writes:
> 
> [...]
> 
> > My mistake re: lazytime vs. relatime, but Jan is correct that this
> > shouldn't break anything there.
> 
> Actually breaks ("break" means not corrupt fs, means it breaks lazytime
> optimization). It is just not always, but it should be always for some
> userspaces.
> 
> > The logic in the revised generic_update_time is different because FAT is
> > is a bit strange. fat_update_time does extra truncation on the timestamp
> > that it is handed beyond what timestamp_truncate() does.
> > fat_truncate_time is called in many different places too, so I don't
> > feel comfortable making big changes to how that works.
> > 
> > In the case of generic_update_time, it calls inode_update_timestamps
> > which returns a mask that shows which timestamps got updated. It then
> > marks the dirty_flags appropriately for what was actually changed.
> > 
> > generic_update_time is used across many filesystems so we need to ensure
> > that it's OK to use even when multigrain timestamps are enabled. Those
> > haven't been enabled in FAT though, so I didn't bother, and left it to
> > dirtying the inode in the same way it was before, even though it now
> > fetches its own timestamps from the clock. Given the way that the mtime
> > and ctime are smooshed together in FAT, that seemed reasonable.
> > 
> > Is there a particular case or flag combination you're concerned about
> > here?
> 
> Yes. Because FAT has strange timestamps that different granularity on
> disk . This is why generic time truncation doesn't work for FAT.
> 
> Well anyway, my concern is the only following part. In
> generic_update_time(), S_[CM]TIME are not the cause of I_DIRTY_SYNC if
> lazytime mode.
> 
> -	if ((flags & S_VERSION) && inode_maybe_inc_iversion(inode, false))
> +	if ((flags & (S_VERSION|S_CTIME|S_MTIME)) && inode_maybe_inc_iversion(inode, false))
> 		dirty_flags |= I_DIRTY_SYNC;
> 

That would be wrong. The problem is that we're changing how update_time
works:

Previously, update_time was given a timestamp and a set of S_* flags to
indicate which fields should be updated. Now, update_time is not given a
timestamp. It needs to fetch it itself, but that subtly changes the
meaning of the flags field.

It now means "these fields needed to be updated when I last checked".
The timestamp and i_version may now be different from when the flags
field was set. This means that if any of S_CTIME/S_MTIME/S_VERSION were
set that we need to attempt to update all 3 of them. They may now be
different from the timestamp or version that we ultimately end up with.

The above may look to you like it would always cause I_DIRTY_SYNC to be
set on any ctime or mtime update, but inode_maybe_inc_iversion only
returns true if it actually updated i_version, and it only does that if
someone issued a ->getattr against the file since the last time it was
updated.

So, this shouldn't generate any more DIRTY_SYNC updates than it did
before.
-- 
Jeff Layton <jlayton@kernel.org>

  reply	other threads:[~2023-08-09 17:59 UTC|newest]

Thread overview: 390+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-07 19:38 [PATCH v7 00/13] fs: implement multigrain timestamps Jeff Layton
2023-08-07 19:38 ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38 ` Jeff Layton
2023-08-07 19:38 ` Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38 ` [PATCH v7 01/13] fs: remove silly warning from current_time Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:05   ` Jan Kara
2023-08-08  9:05     ` Jan Kara
2023-08-08  9:05     ` [Cluster-devel] " Jan Kara
2023-08-08  9:05     ` [f2fs-dev] " Jan Kara
2023-08-08  9:05     ` Jan Kara
2023-08-07 19:38 ` [PATCH v7 02/13] fs: pass the request_mask to generic_fillattr Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38 ` [PATCH v7 03/13] fs: drop the timespec64 arg from generic_update_time Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:25   ` Jan Kara
2023-08-08  9:25     ` Jan Kara
2023-08-08  9:25     ` [Cluster-devel] " Jan Kara
2023-08-08  9:25     ` Jan Kara
2023-08-08  9:25     ` [f2fs-dev] " Jan Kara
2023-08-07 19:38 ` [PATCH v7 04/13] btrfs: have it use inode_update_timestamps Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:26   ` Jan Kara
2023-08-08  9:26     ` Jan Kara
2023-08-08  9:26     ` [Cluster-devel] " Jan Kara
2023-08-08  9:26     ` Jan Kara
2023-08-08  9:26     ` [f2fs-dev] " Jan Kara
2023-08-07 19:38 ` [PATCH v7 05/13] fat: make fat_update_time get its own timestamp Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:32   ` Jan Kara
2023-08-08  9:32     ` Jan Kara
2023-08-08  9:32     ` [Cluster-devel] " Jan Kara
2023-08-08  9:32     ` Jan Kara
2023-08-08  9:32     ` [f2fs-dev] " Jan Kara
2023-08-09  7:08     ` Christian Brauner
2023-08-09  7:08       ` Christian Brauner
2023-08-09  7:08       ` [Cluster-devel] " Christian Brauner
2023-08-09  7:08       ` Christian Brauner
2023-08-09  7:08       ` [f2fs-dev] " Christian Brauner
2023-08-09  8:37   ` OGAWA Hirofumi
2023-08-09  8:37     ` OGAWA Hirofumi
2023-08-09  8:37     ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09  8:37     ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09  8:37     ` OGAWA Hirofumi
2023-08-09  8:41     ` OGAWA Hirofumi
2023-08-09  8:41       ` OGAWA Hirofumi
2023-08-09  8:41       ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09  8:41       ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09  8:41       ` OGAWA Hirofumi
2023-08-09 10:10     ` Jeff Layton
2023-08-09 10:10       ` Jeff Layton
2023-08-09 10:10       ` [Cluster-devel] " Jeff Layton
2023-08-09 10:10       ` Jeff Layton
2023-08-09 10:10       ` [f2fs-dev] " Jeff Layton
2023-08-09 13:36       ` OGAWA Hirofumi
2023-08-09 13:36         ` OGAWA Hirofumi
2023-08-09 13:36         ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 13:36         ` OGAWA Hirofumi
2023-08-09 13:36         ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 14:22         ` Jeff Layton
2023-08-09 14:22           ` Jeff Layton
2023-08-09 14:22           ` [Cluster-devel] " Jeff Layton
2023-08-09 14:22           ` Jeff Layton
2023-08-09 14:22           ` [f2fs-dev] " Jeff Layton
2023-08-09 14:44           ` OGAWA Hirofumi
2023-08-09 14:44             ` OGAWA Hirofumi
2023-08-09 14:44             ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 14:44             ` OGAWA Hirofumi
2023-08-09 14:44             ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 14:52             ` OGAWA Hirofumi
2023-08-09 14:52               ` OGAWA Hirofumi
2023-08-09 14:52               ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 14:52               ` OGAWA Hirofumi
2023-08-09 14:52               ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 15:00         ` Jan Kara
2023-08-09 15:00           ` Jan Kara
2023-08-09 15:00           ` [Cluster-devel] " Jan Kara
2023-08-09 15:00           ` Jan Kara
2023-08-09 15:00           ` [f2fs-dev] " Jan Kara
2023-08-09 15:17           ` OGAWA Hirofumi
2023-08-09 15:17             ` OGAWA Hirofumi
2023-08-09 15:17             ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 15:17             ` OGAWA Hirofumi
2023-08-09 15:17             ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 16:30             ` Jeff Layton
2023-08-09 16:30               ` Jeff Layton
2023-08-09 16:30               ` [Cluster-devel] " Jeff Layton
2023-08-09 16:30               ` Jeff Layton
2023-08-09 16:30               ` [f2fs-dev] " Jeff Layton
2023-08-09 17:44               ` OGAWA Hirofumi
2023-08-09 17:44                 ` OGAWA Hirofumi
2023-08-09 17:44                 ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 17:44                 ` OGAWA Hirofumi
2023-08-09 17:44                 ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 17:59                 ` Jeff Layton [this message]
2023-08-09 17:59                   ` Jeff Layton
2023-08-09 17:59                   ` [Cluster-devel] " Jeff Layton
2023-08-09 17:59                   ` Jeff Layton
2023-08-09 17:59                   ` [f2fs-dev] " Jeff Layton
2023-08-09 18:31                   ` OGAWA Hirofumi
2023-08-09 18:31                     ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 18:31                     ` OGAWA Hirofumi
2023-08-09 18:31                     ` OGAWA Hirofumi
2023-08-09 18:31                     ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 19:04                     ` Jeff Layton
2023-08-09 19:04                       ` Jeff Layton
2023-08-09 19:04                       ` [Cluster-devel] " Jeff Layton
2023-08-09 19:04                       ` Jeff Layton
2023-08-09 19:04                       ` [f2fs-dev] " Jeff Layton
2023-08-09 20:14                       ` OGAWA Hirofumi
2023-08-09 20:14                         ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 20:14                         ` OGAWA Hirofumi
2023-08-09 20:14                         ` OGAWA Hirofumi
2023-08-09 20:14                         ` [f2fs-dev] " OGAWA Hirofumi
2023-08-09 22:07                         ` Jeff Layton
2023-08-09 22:07                           ` Jeff Layton
2023-08-09 22:07                           ` [Cluster-devel] " Jeff Layton
2023-08-09 22:07                           ` Jeff Layton
2023-08-09 22:07                           ` [f2fs-dev] " Jeff Layton
2023-08-09 22:37                           ` OGAWA Hirofumi
2023-08-09 22:37                             ` [Cluster-devel] " OGAWA Hirofumi
2023-08-09 22:37                             ` OGAWA Hirofumi
2023-08-09 22:37                             ` OGAWA Hirofumi
2023-08-09 22:37                             ` [f2fs-dev] " OGAWA Hirofumi
2023-08-07 19:38 ` [PATCH v7 06/13] ubifs: have ubifs_update_time use inode_update_timestamps Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-08  9:37   ` Jan Kara
2023-08-08  9:37     ` Jan Kara
2023-08-08  9:37     ` [Cluster-devel] " Jan Kara
2023-08-08  9:37     ` Jan Kara
2023-08-08  9:37     ` [f2fs-dev] " Jan Kara
2023-08-09  7:06     ` Christian Brauner
2023-08-09  7:06       ` Christian Brauner
2023-08-09  7:06       ` [Cluster-devel] " Christian Brauner
2023-08-09  7:06       ` Christian Brauner
2023-08-09  7:06       ` [f2fs-dev] " Christian Brauner
2023-08-09  8:23       ` Jan Kara
2023-08-09  8:23         ` Jan Kara
2023-08-09  8:23         ` [Cluster-devel] " Jan Kara
2023-08-09  8:23         ` Jan Kara
2023-08-09  8:23         ` [f2fs-dev] " Jan Kara
2023-08-07 19:38 ` [PATCH v7 07/13] xfs: have xfs_vn_update_time gets its own timestamp Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:39   ` Jan Kara
2023-08-08  9:39     ` Jan Kara
2023-08-08  9:39     ` [Cluster-devel] " Jan Kara
2023-08-08  9:39     ` Jan Kara
2023-08-08  9:39     ` [f2fs-dev] " Jan Kara
2023-08-09  7:04     ` Christian Brauner
2023-08-09  7:04       ` Christian Brauner
2023-08-09  7:04       ` [Cluster-devel] " Christian Brauner
2023-08-09  7:04       ` Christian Brauner
2023-08-09  7:04       ` [f2fs-dev] " Christian Brauner
2023-08-09 15:57   ` Darrick J. Wong
2023-08-09 15:57     ` Darrick J. Wong
2023-08-09 15:57     ` [Cluster-devel] " Darrick J. Wong
2023-08-09 15:57     ` Darrick J. Wong
2023-08-09 15:57     ` [f2fs-dev] " Darrick J. Wong
2023-08-07 19:38 ` [PATCH v7 08/13] fs: drop the timespec64 argument from update_time Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08  9:45   ` Jan Kara
2023-08-08  9:45     ` Jan Kara
2023-08-08  9:45     ` [Cluster-devel] " Jan Kara
2023-08-08  9:45     ` Jan Kara
2023-08-08  9:45     ` [f2fs-dev] " Jan Kara
2023-08-09 12:31   ` Christian Brauner
2023-08-09 12:31     ` Christian Brauner
2023-08-09 12:31     ` [Cluster-devel] " Christian Brauner
2023-08-09 12:31     ` Christian Brauner
2023-08-09 12:31     ` [f2fs-dev] " Christian Brauner
2023-08-09 18:38     ` Mike Marshall
2023-08-09 18:38       ` Mike Marshall
2023-08-09 18:38       ` [f2fs-dev] " Mike Marshall
2023-08-09 18:38       ` [Cluster-devel] " Mike Marshall
2023-08-09 18:38       ` Mike Marshall
2023-08-09 19:05       ` Jeff Layton
2023-08-09 19:05         ` Jeff Layton
2023-08-09 19:05         ` [Cluster-devel] " Jeff Layton
2023-08-09 19:05         ` Jeff Layton
2023-08-09 19:05         ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38 ` [PATCH v7 09/13] fs: add infrastructure for multigrain timestamps Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08 10:02   ` Jan Kara
2023-08-08 10:02     ` Jan Kara
2023-08-08 10:02     ` [Cluster-devel] " Jan Kara
2023-08-08 10:02     ` Jan Kara
2023-08-08 10:02     ` [f2fs-dev] " Jan Kara
2023-08-07 19:38 ` [PATCH v7 10/13] tmpfs: add support " Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38 ` [PATCH v7 11/13] xfs: switch to " Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-07 19:38 ` [PATCH v7 12/13] ext4: " Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-09-19  7:05   ` Xi Ruoyao
2023-09-19  7:05     ` [Cluster-devel] " Xi Ruoyao
2023-09-19  7:05     ` [f2fs-dev] " Xi Ruoyao via Linux-f2fs-devel
2023-09-19  7:05     ` Xi Ruoyao via Linux-erofs
2023-09-19  7:05     ` Xi Ruoyao
2023-09-19 11:04     ` Jan Kara
2023-09-19 11:04       ` Jan Kara
2023-09-19 11:04       ` [Cluster-devel] " Jan Kara
2023-09-19 11:04       ` Jan Kara
2023-09-19 11:04       ` [f2fs-dev] " Jan Kara
2023-09-19 11:33       ` Jeff Layton
2023-09-19 11:33         ` Jeff Layton
2023-09-19 11:33         ` [Cluster-devel] " Jeff Layton
2023-09-19 11:33         ` Jeff Layton
2023-09-19 11:33         ` [f2fs-dev] " Jeff Layton
2023-09-19 14:52         ` Bruno Haible
2023-09-19 14:52           ` Bruno Haible
2023-09-19 14:52           ` [Cluster-devel] " Bruno Haible
2023-09-19 14:52           ` Bruno Haible
2023-09-19 14:52           ` Bruno Haible
2023-09-19 16:31           ` Jeff Layton
2023-09-19 16:31             ` [Cluster-devel] " Jeff Layton
2023-09-19 16:31             ` Jeff Layton
2023-09-19 16:31             ` Jeff Layton
2023-09-19 16:31             ` [f2fs-dev] " Jeff Layton
2023-09-19 20:10             ` Paul Eggert
2023-09-19 20:10               ` Paul Eggert
2023-09-19 20:10               ` [Cluster-devel] " Paul Eggert
2023-09-19 20:10               ` [f2fs-dev] " Paul Eggert
2023-09-19 20:10               ` Paul Eggert
2023-09-19 20:46               ` Jeff Layton
2023-09-19 20:46                 ` [Cluster-devel] " Jeff Layton
2023-09-19 20:46                 ` Jeff Layton
2023-09-19 20:46                 ` Jeff Layton
2023-09-19 20:46                 ` [f2fs-dev] " Jeff Layton
2023-09-20  8:41             ` Christian Brauner
2023-09-20  8:41               ` [Cluster-devel] " Christian Brauner
2023-09-20  8:41               ` Christian Brauner
2023-09-20  8:41               ` Christian Brauner
2023-09-20  8:41               ` [f2fs-dev] " Christian Brauner
2023-09-20  8:50               ` Xi Ruoyao
2023-09-20  8:50                 ` Xi Ruoyao via Linux-erofs
2023-09-20  8:50                 ` [Cluster-devel] " Xi Ruoyao
2023-09-20  8:50                 ` Xi Ruoyao
2023-09-20  8:50                 ` [f2fs-dev] " Xi Ruoyao via Linux-f2fs-devel
2023-09-20  9:56               ` Jeff Layton
2023-09-20  9:56                 ` [Cluster-devel] " Jeff Layton
2023-09-20  9:56                 ` [f2fs-dev] " Jeff Layton
2023-09-20  9:56                 ` Jeff Layton
2023-09-20  9:56                 ` Jeff Layton
2023-09-20 10:17               ` Jan Kara
2023-09-20 10:17                 ` Jan Kara
2023-09-20 10:17                 ` [Cluster-devel] " Jan Kara
2023-09-20 10:17                 ` Jan Kara
2023-09-20 10:17                 ` [f2fs-dev] " Jan Kara
2023-09-20 10:30                 ` Christian Brauner
2023-09-20 10:30                   ` [Cluster-devel] " Christian Brauner
2023-09-20 10:30                   ` Christian Brauner
2023-09-20 10:30                   ` Christian Brauner
2023-09-20 10:30                   ` [f2fs-dev] " Christian Brauner
2023-09-20 13:03                   ` Jan Kara
2023-09-20 13:03                     ` Jan Kara
2023-09-20 13:03                     ` [Cluster-devel] " Jan Kara
2023-09-20 13:03                     ` Jan Kara
2023-09-20 13:03                     ` [f2fs-dev] " Jan Kara
2023-09-20 10:35                 ` Jeff Layton
2023-09-20 10:35                   ` [Cluster-devel] " Jeff Layton
2023-09-20 10:35                   ` Jeff Layton
2023-09-20 10:35                   ` Jeff Layton
2023-09-20 10:35                   ` [f2fs-dev] " Jeff Layton
2023-09-20 11:48                   ` Christian Brauner
2023-09-20 11:48                     ` [Cluster-devel] " Christian Brauner
2023-09-20 11:48                     ` Christian Brauner
2023-09-20 11:48                     ` Christian Brauner
2023-09-20 11:48                     ` [f2fs-dev] " Christian Brauner
2023-09-20 11:56                     ` Jeff Layton
2023-09-20 11:56                       ` [Cluster-devel] " Jeff Layton
2023-09-20 11:56                       ` Jeff Layton
2023-09-20 11:56                       ` Jeff Layton
2023-09-20 11:56                       ` [f2fs-dev] " Jeff Layton
2023-09-20 12:08                       ` Christian Brauner
2023-09-20 12:08                         ` [Cluster-devel] " Christian Brauner
2023-09-20 12:08                         ` Christian Brauner
2023-09-20 12:08                         ` Christian Brauner
2023-09-20 12:08                         ` [f2fs-dev] " Christian Brauner
2023-09-20 12:26                         ` Jeff Layton
2023-09-20 12:26                           ` [Cluster-devel] " Jeff Layton
2023-09-20 12:26                           ` Jeff Layton
2023-09-20 12:26                           ` Jeff Layton
2023-09-20 12:26                           ` [f2fs-dev] " Jeff Layton
2023-09-20 12:30                           ` Christian Brauner
2023-09-20 12:30                             ` [Cluster-devel] " Christian Brauner
2023-09-20 12:30                             ` Christian Brauner
2023-09-20 12:30                             ` Christian Brauner
2023-09-20 12:30                             ` [f2fs-dev] " Christian Brauner
2023-09-20 13:57                     ` Chuck Lever III
2023-09-20 13:57                       ` Chuck Lever III
2023-09-20 13:57                       ` [Cluster-devel] " Chuck Lever III
2023-09-20 13:57                       ` Chuck Lever III
2023-09-20 13:57                       ` [f2fs-dev] " Chuck Lever III
2023-09-20 14:53                       ` Christian Brauner
2023-09-20 14:53                         ` [Cluster-devel] " Christian Brauner
2023-09-20 14:53                         ` Christian Brauner
2023-09-20 14:53                         ` Christian Brauner
2023-09-20 14:53                         ` [f2fs-dev] " Christian Brauner
2023-09-20 15:29                         ` Jeff Layton
2023-09-20 15:29                           ` [Cluster-devel] " Jeff Layton
2023-09-20 15:29                           ` Jeff Layton
2023-09-20 15:29                           ` Jeff Layton
2023-09-20 15:29                           ` [f2fs-dev] " Jeff Layton
2023-09-20 15:30                         ` Jan Kara
2023-09-20 15:30                           ` Jan Kara
2023-09-20 15:30                           ` [Cluster-devel] " Jan Kara
2023-09-20 15:30                           ` Jan Kara
2023-09-20 15:30                           ` [f2fs-dev] " Jan Kara
2023-09-20 12:48                   ` Jan Kara
2023-09-20 12:48                     ` [Cluster-devel] " Jan Kara
2023-09-20 12:48                     ` Jan Kara
2023-09-20 12:48                     ` [f2fs-dev] " Jan Kara
2023-09-20 12:48                     ` Jan Kara
2023-09-20 14:12                     ` Jeff Layton
2023-09-20 14:12                       ` [Cluster-devel] " Jeff Layton
2023-09-20 14:12                       ` Jeff Layton
2023-09-20 14:12                       ` Jeff Layton
2023-09-20 14:12                       ` [f2fs-dev] " Jeff Layton
2023-09-20 15:45                       ` Jan Kara
2023-09-20 15:45                         ` [Cluster-devel] " Jan Kara
2023-09-20 15:45                         ` Jan Kara
2023-09-20 15:45                         ` Jan Kara
2023-09-20 15:45                         ` [f2fs-dev] " Jan Kara
2023-09-20 12:48                   ` Bruno Haible
2023-09-20 12:48                     ` [Cluster-devel] " Bruno Haible
2023-09-20 12:48                     ` Bruno Haible
2023-09-20 12:48                     ` Bruno Haible
2023-09-20 12:48                     ` Bruno Haible
2023-09-20  9:58             ` Jan Kara
2023-09-20  9:58               ` [Cluster-devel] " Jan Kara
2023-09-20  9:58               ` Jan Kara
2023-09-20  9:58               ` Jan Kara
2023-09-20  9:58               ` [f2fs-dev] " Jan Kara
2023-08-07 19:38 ` [PATCH v7 13/13] btrfs: convert " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [Cluster-devel] " Jeff Layton
2023-08-07 19:38   ` Jeff Layton
2023-08-07 19:38   ` [f2fs-dev] " Jeff Layton
2023-08-08 10:05   ` Jan Kara
2023-08-08 10:05     ` Jan Kara
2023-08-08 10:05     ` [Cluster-devel] " Jan Kara
2023-08-08 10:05     ` Jan Kara
2023-08-08 10:05     ` [f2fs-dev] " Jan Kara
2023-08-09  7:09 ` [PATCH v7 00/13] fs: implement " Christian Brauner
2023-08-09  7:09   ` [Cluster-devel] " Christian Brauner
2023-08-09  7:09   ` Christian Brauner
2023-08-09  7:09   ` Christian Brauner
2023-08-09  7:09   ` [f2fs-dev] " Christian Brauner
2023-09-04 18:11 ` patchwork-bot+f2fs
2023-09-04 18:11   ` patchwork-bot+f2fs
2023-09-04 18:11   ` [Cluster-devel] " patchwork-bot+f2fs
2023-09-04 18:11   ` patchwork-bot+f2fs
2023-09-04 18:11   ` patchwork-bot+f2fs

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=ccffe6ca3397c8374352b002fe01d55b09d84ef4.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=adilger.kernel@dilger.ca \
    --cc=agruenba@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=almaz.alexandrovich@paragon-software.com \
    --cc=amir73il@gmail.com \
    --cc=anna@kernel.org \
    --cc=asmadeus@codewreck.org \
    --cc=bcodding@redhat.com \
    --cc=brauner@kernel.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=chao@kernel.org \
    --cc=clm@fb.com \
    --cc=cluster-devel@redhat.com \
    --cc=coda@cs.cmu.edu \
    --cc=codalist@telemann.coda.cs.cmu.edu \
    --cc=code@tyhicks.com \
    --cc=devel@lists.orangefs.org \
    --cc=dhowells@redhat.com \
    --cc=djwong@kernel.org \
    --cc=dsterba@suse.com \
    --cc=ecryptfs@vger.kernel.org \
    --cc=ericvh@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=hirofumi@mail.parknet.co.jp \
    --cc=hubcap@omnibond.com \
    --cc=hughd@google.com \
    --cc=huyue2@gl0jj8bn.sched.sma.tdnsstic1.cn \
    --cc=idryomov@gmail.com \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=jaegeuk@kernel.org \
    --cc=jaharkes@cs.cmu.edu \
    --cc=jefflexu@linux.alibaba.com \
    --cc=jlbec@evilplan.org \
    --cc=josef@toxicpanda.com \
    --cc=joseph.qi@linux.alibaba.com \
    --cc=keescook@chromium.org \
    --cc=linkinjeon@kernel.org \
    --cc=linux-afs@lists.infradead.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-erofs@lists.ozlabs.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=linux_oss@crudebyte.com \
    --cc=lucho@ionkov.net \
    --cc=marc.dionne@auristor.com \
    --cc=mark@fasheh.com \
    --cc=martin@omnibond.com \
    --cc=mcgrof@kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=ntfs3@lists.linux.dev \
    --cc=ocfs2-devel@lists.linux.dev \
    --cc=pc@manguebit.com \
    --cc=richard@nod.at \
    --cc=ronniesahlberg@gmail.com \
    --cc=rpeterso@redhat.com \
    --cc=samba-technical@lists.samba.org \
    --cc=senozhatsky@chromium.org \
    --cc=sfrench@samba.org \
    --cc=sj1557.seo@samsung.com \
    --cc=sprasad@microsoft.com \
    --cc=tj@kernel.org \
    --cc=tom@talpey.com \
    --cc=trond.myklebust@hammerspace.com \
    --cc=tytso@mit.edu \
    --cc=v9fs@lists.linux.dev \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xiang@kernel.org \
    --cc=xiubli@redhat.com \
    --cc=yzaikin@google.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.