From: Jan Kara <jack@suse.cz>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Theodore Ts'o <tytso@mit.edu>,
Dave Hansen <dave.hansen@linux.intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
xfs@oss.sgi.com, Christoph Hellwig <hch@infradead.org>,
Jan Kara <jack@suse.cz>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
Tim Chen <tim.c.chen@linux.intel.com>
Subject: Re: [PATCH v3 3/5] mm: Notify filesystems when it's time to apply a deferred cmtime update
Date: Tue, 20 Aug 2013 18:00:57 +0200 [thread overview]
Message-ID: <20130820160057.GC2862@quack.suse.cz> (raw)
In-Reply-To: <CALCETrWreWBwKdKS2w=fS+MwdaZv1eEsKjYo=P9eeXe7fZS6Jw@mail.gmail.com>
On Mon 19-08-13 21:14:44, Andy Lutomirski wrote:
> >> I could require ->writepages *and* ->flush_cmtime to handle the time
> >> update, but that would complicate non-transactional filesystems.
> >> Those filesystems should just flush cmtime at the end of writepages.
> >
> > do_writepages() is the wrong place to do such updates - we can get
> > writeback directly through .writepage, so the time updates need to
> > be in .writepage. That first .writepage call will clear the bit on
> > the mapping, so it's only done on the first call to .writepage on
> > the given mapping.
>
> Last time I checked, all the paths that actually needed the timestamp
> update went through .writepages. I'll double-check.
kswapd can call just .writepage to do the writeout so timestamp update
should be handled there as well. Otherwise all pages in a mapping can be
cleaned without timestamp being updated.
Which btw made me realize that even your scheme doesn't completely make
sure timestamp is updated after mmap write - if you have pages 0 and 1, you
write to both of them - CMTIME flag gets set. Then fsync_range(fd, 0, 4096)
is called. We write the page 0, writeprotect it, update timestamps. But
page 1 is still writeable so writes to it won't set CMTIME flag, neither
update the timestamp... Not that I think this can be reasonably solved but
it is a food for thought.
Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Chinner <david@fromorbit.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
"Theodore Ts'o" <tytso@mit.edu>,
Dave Hansen <dave.hansen@linux.intel.com>,
xfs@oss.sgi.com, Jan Kara <jack@suse.cz>,
Tim Chen <tim.c.chen@linux.intel.com>,
Christoph Hellwig <hch@infradead.org>
Subject: Re: [PATCH v3 3/5] mm: Notify filesystems when it's time to apply a deferred cmtime update
Date: Tue, 20 Aug 2013 18:00:57 +0200 [thread overview]
Message-ID: <20130820160057.GC2862@quack.suse.cz> (raw)
In-Reply-To: <CALCETrWreWBwKdKS2w=fS+MwdaZv1eEsKjYo=P9eeXe7fZS6Jw@mail.gmail.com>
On Mon 19-08-13 21:14:44, Andy Lutomirski wrote:
> >> I could require ->writepages *and* ->flush_cmtime to handle the time
> >> update, but that would complicate non-transactional filesystems.
> >> Those filesystems should just flush cmtime at the end of writepages.
> >
> > do_writepages() is the wrong place to do such updates - we can get
> > writeback directly through .writepage, so the time updates need to
> > be in .writepage. That first .writepage call will clear the bit on
> > the mapping, so it's only done on the first call to .writepage on
> > the given mapping.
>
> Last time I checked, all the paths that actually needed the timestamp
> update went through .writepages. I'll double-check.
kswapd can call just .writepage to do the writeout so timestamp update
should be handled there as well. Otherwise all pages in a mapping can be
cleaned without timestamp being updated.
Which btw made me realize that even your scheme doesn't completely make
sure timestamp is updated after mmap write - if you have pages 0 and 1, you
write to both of them - CMTIME flag gets set. Then fsync_range(fd, 0, 4096)
is called. We write the page 0, writeprotect it, update timestamps. But
page 1 is still writeable so writes to it won't set CMTIME flag, neither
update the timestamp... Not that I think this can be reasonably solved but
it is a food for thought.
Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
next prev parent reply other threads:[~2013-08-20 16:00 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-16 23:22 [PATCH v3 0/5] Rework mtime and ctime updates on mmaped Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-16 23:22 ` [PATCH v3 1/5] mm: Track mappings that have been written via ptes Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-16 23:22 ` [PATCH v3 2/5] fs: Add inode_update_time_writable Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-20 2:28 ` Dave Chinner
2013-08-20 2:28 ` Dave Chinner
2013-08-20 3:20 ` Andy Lutomirski
2013-08-20 3:20 ` Andy Lutomirski
2013-08-20 3:33 ` Dave Chinner
2013-08-20 3:33 ` Dave Chinner
2013-08-20 4:07 ` Andy Lutomirski
2013-08-20 4:07 ` Andy Lutomirski
2013-08-20 16:10 ` Jan Kara
2013-08-20 16:10 ` Jan Kara
2013-08-16 23:22 ` [PATCH v3 3/5] mm: Notify filesystems when it's time to apply a deferred cmtime update Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-20 2:36 ` Dave Chinner
2013-08-20 2:36 ` Dave Chinner
2013-08-20 3:28 ` Andy Lutomirski
2013-08-20 3:28 ` Andy Lutomirski
2013-08-20 4:08 ` Dave Chinner
2013-08-20 4:08 ` Dave Chinner
2013-08-20 4:14 ` Andy Lutomirski
2013-08-20 4:14 ` Andy Lutomirski
2013-08-20 16:00 ` Jan Kara [this message]
2013-08-20 16:00 ` Jan Kara
2013-08-20 16:42 ` Andy Lutomirski
2013-08-20 16:42 ` Andy Lutomirski
2013-08-20 19:27 ` Andy Lutomirski
2013-08-20 19:27 ` Andy Lutomirski
2013-08-20 21:48 ` Dave Chinner
2013-08-20 21:48 ` Dave Chinner
2013-08-20 21:54 ` Andy Lutomirski
2013-08-20 21:54 ` Andy Lutomirski
2013-08-20 22:43 ` Dave Chinner
2013-08-20 22:43 ` Dave Chinner
2013-08-21 0:47 ` Andy Lutomirski
2013-08-21 0:47 ` Andy Lutomirski
2013-08-21 1:33 ` Dave Chinner
2013-08-21 1:33 ` Dave Chinner
2013-08-16 23:22 ` [PATCH v3 4/5] mm: Scan for dirty ptes and update cmtime on MS_ASYNC Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-16 23:22 ` [PATCH v3 5/5] ext4: Defer mmap cmtime update until writeback Andy Lutomirski
2013-08-16 23:22 ` Andy Lutomirski
2013-08-20 2:38 ` Dave Chinner
2013-08-20 2:38 ` Dave Chinner
2013-08-20 3:30 ` Andy Lutomirski
2013-08-20 3:30 ` Andy Lutomirski
2013-08-20 4:08 ` Dave Chinner
2013-08-20 4:08 ` Dave Chinner
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=20130820160057.GC2862@quack.suse.cz \
--to=jack@suse.cz \
--cc=dave.hansen@linux.intel.com \
--cc=hch@infradead.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=tim.c.chen@linux.intel.com \
--cc=tytso@mit.edu \
--cc=xfs@oss.sgi.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.