linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: Bruno Haible <bruno@clisp.org>, Jan Kara <jack@suse.cz>,
	Xi Ruoyao <xry111@linuxfromscratch.org>,
	bug-gnulib@gnu.org
Cc: Latchesar Ionkov <lucho@ionkov.net>,
	Martin Brandenburg <martin@omnibond.com>,
	Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	linux-xfs@vger.kernel.org, "Darrick J. Wong" <djwong@kernel.org>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Christian Schoenebeck <linux_oss@crudebyte.com>,
	linux-unionfs@vger.kernel.org,
	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>,
	codalist@coda.cs.cmu.edu, linux-afs@lists.infradead.org,
	linux-mtd@lists.infradead.org,
	Mike Marshall <hubcap@omnibond.com>,
	Paulo Alcantara <pc@manguebit.com>, Amir Goldstein <l@gmail.com>,
	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>, 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>,
	Shyam Prasad N <sprasad@microsoft.com>,
	ecryptfs@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	ocfs2-devel@lists.linux.dev, linux-cifs@vger.kernel.org,
	Josef Bacik <josef@toxicpanda.com>, Tom Talpey <tom@talpey.com>,
	Tejun Heo <tj@kernel.org>, Yue Hu <huyue2@coolpad.com>,
	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>,
	OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
	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>, Bo b 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 12/13] ext4: switch to multigrain timestamps
Date: Tue, 19 Sep 2023 12:31:08 -0400	[thread overview]
Message-ID: <08b5c6fd3b08b87fa564bb562d89381dd4e05b6a.camel@kernel.org> (raw)
In-Reply-To: <4511209.uG2h0Jr0uP@nimes>

On Tue, 2023-09-19 at 16:52 +0200, Bruno Haible wrote:
> Jeff Layton wrote:
> > I'm not sure what we can do for this test. The nap() function is making
> > an assumption that the timestamp granularity will be constant, and that
> > isn't necessarily the case now.
> 
> This is only of secondary importance, because the scenario by Jan Kara
> shows a much more fundamental breakage:
> 
> > > The ultimate problem is that a sequence like:
> > > 
> > > write(f1)
> > > stat(f2)
> > > write(f2)
> > > stat(f2)
> > > write(f1)
> > > stat(f1)
> > > 
> > > can result in f1 timestamp to be (slightly) lower than the final f2
> > > timestamp because the second write to f1 didn't bother updating the
> > > timestamp. That can indeed be a bit confusing to programs if they compare
> > > timestamps between two files. Jeff?
> > > 
> > 
> > Basically yes.
> 
> f1 was last written to *after* f2 was last written to. If the timestamp of f1
> is then lower than the timestamp of f2, timestamps are fundamentally broken.
> 
> Many things in user-space depend on timestamps, such as build system
> centered around 'make', but also 'find ... -newer ...'.
> 


What does breakage with make look like in this situation? The "fuzz"
here is going to be on the order of a jiffy. The typical case for make
timestamp comparisons is comparing source files vs. a build target. If
those are being written nearly simultaneously, then that could be an
issue, but is that a typical behavior? It seems like it would be hard to
rely on that anyway, esp. given filesystems like NFS that can do lazy
writeback.

One of the operating principles with this series is that timestamps can
be of varying granularity between different files. Note that Linux
already violates this assumption when you're working across filesystems
of different types.

As to potential fixes if this is a real problem:

I don't really want to put this behind a mount or mkfs option (a'la
relatime, etc.), but that is one possibility.

I wonder if it would be feasible to just advance the coarse-grained
current_time whenever we end up updating a ctime with a fine-grained
timestamp? It might produce some inode write amplification. Files that
were written within the same jiffy could see more inode transactions
logged, but that still might not be _too_ awful.

I'll keep thinking about it for now.
-- 
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

  parent reply	other threads:[~2023-09-19 16:31 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-07 19:38 [f2fs-dev] [PATCH v7 00/13] fs: implement multigrain timestamps Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 01/13] fs: remove silly warning from current_time Jeff Layton
2023-08-08  9:05   ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 02/13] fs: pass the request_mask to generic_fillattr Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 03/13] fs: drop the timespec64 arg from generic_update_time Jeff Layton
2023-08-08  9:25   ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 04/13] btrfs: have it use inode_update_timestamps Jeff Layton
2023-08-08  9:26   ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 05/13] fat: make fat_update_time get its own timestamp Jeff Layton
2023-08-08  9:32   ` Jan Kara
2023-08-09  7:08     ` Christian Brauner
2023-08-09  8:37   ` OGAWA Hirofumi
2023-08-09  8:41     ` OGAWA Hirofumi
2023-08-09 10:10     ` Jeff Layton
2023-08-09 13:36       ` OGAWA Hirofumi
2023-08-09 14:22         ` Jeff Layton
2023-08-09 14:44           ` OGAWA Hirofumi
2023-08-09 14:52             ` OGAWA Hirofumi
2023-08-09 15:00         ` Jan Kara
2023-08-09 15:17           ` OGAWA Hirofumi
2023-08-09 16:30             ` Jeff Layton
2023-08-09 17:44               ` OGAWA Hirofumi
2023-08-09 17:59                 ` Jeff Layton
2023-08-09 18:31                   ` OGAWA Hirofumi
2023-08-09 19:04                     ` Jeff Layton
2023-08-09 20:14                       ` OGAWA Hirofumi
2023-08-09 22:07                         ` Jeff Layton
2023-08-09 22:37                           ` OGAWA Hirofumi
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 06/13] ubifs: have ubifs_update_time use inode_update_timestamps Jeff Layton
2023-08-08  9:37   ` Jan Kara
2023-08-09  7:06     ` Christian Brauner
2023-08-09  8:23       ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 07/13] xfs: have xfs_vn_update_time gets its own timestamp Jeff Layton
2023-08-08  9:39   ` Jan Kara
2023-08-09  7:04     ` Christian Brauner
2023-08-09 15:57   ` Darrick J. Wong
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 08/13] fs: drop the timespec64 argument from update_time Jeff Layton
2023-08-08  9:45   ` Jan Kara
2023-08-09 12:31   ` Christian Brauner
2023-08-09 18:38     ` Mike Marshall
2023-08-09 19:05       ` Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 09/13] fs: add infrastructure for multigrain timestamps Jeff Layton
2023-08-08 10:02   ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 10/13] tmpfs: add support " Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 11/13] xfs: switch to " Jeff Layton
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 12/13] ext4: " Jeff Layton
2023-09-19  7:05   ` Xi Ruoyao via Linux-f2fs-devel
2023-09-19 11:04     ` Jan Kara
2023-09-19 11:33       ` Jeff Layton
     [not found]         ` <4511209.uG2h0Jr0uP@nimes>
2023-09-19 16:31           ` Jeff Layton [this message]
2023-09-19 20:10             ` Paul Eggert
2023-09-19 20:46               ` Jeff Layton
2023-09-20  8:41             ` Christian Brauner
2023-09-20  8:50               ` Xi Ruoyao via Linux-f2fs-devel
2023-09-20  9:56               ` Jeff Layton
2023-09-20 10:17               ` Jan Kara
2023-09-20 10:30                 ` Christian Brauner
2023-09-20 13:03                   ` Jan Kara
2023-09-20 10:35                 ` Jeff Layton
2023-09-20 11:48                   ` Christian Brauner
2023-09-20 11:56                     ` Jeff Layton
2023-09-20 12:08                       ` Christian Brauner
2023-09-20 12:26                         ` Jeff Layton
2023-09-20 12:30                           ` Christian Brauner
2023-09-20 13:57                     ` Chuck Lever III
2023-09-20 14:53                       ` Christian Brauner
2023-09-20 15:29                         ` Jeff Layton
2023-09-20 15:30                         ` Jan Kara
2023-09-20 12:48                   ` Jan Kara
2023-09-20 14:12                     ` Jeff Layton
2023-09-20 15:45                       ` Jan Kara
2023-09-20  9:58             ` Jan Kara
2023-08-07 19:38 ` [f2fs-dev] [PATCH v7 13/13] btrfs: convert " Jeff Layton
2023-08-08 10:05   ` Jan Kara
2023-08-09  7:09 ` [f2fs-dev] [PATCH v7 00/13] fs: implement " Christian Brauner
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=08b5c6fd3b08b87fa564bb562d89381dd4e05b6a.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=anna@kernel.org \
    --cc=asmadeus@codewreck.org \
    --cc=bcodding@redhat.com \
    --cc=brauner@kernel.org \
    --cc=bruno@clisp.org \
    --cc=bug-gnulib@gnu.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=clm@fb.com \
    --cc=cluster-devel@redhat.com \
    --cc=coda@cs.cmu.edu \
    --cc=codalist@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@coolpad.com \
    --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=l@gmail.com \
    --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=xry111@linuxfromscratch.org \
    --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 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).