linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>
To: Zach Brown <zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Alexander Viro
	<viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>,
	Sage Weil <sweil-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH RFC] vfs: add a O_NOMTIME flag
Date: Thu, 7 May 2015 10:26:17 +1000	[thread overview]
Message-ID: <20150507002617.GJ4327@dastard> (raw)
In-Reply-To: <1430949612-21356-1-git-send-email-zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Wed, May 06, 2015 at 03:00:12PM -0700, Zach Brown wrote:
> Add the O_NOMTIME flag which prevents mtime from being updated which can
> greatly reduce the IO overhead of writes to allocated and initialized
> regions of files.

Hmmm. How do backup programs now work out if the file has changed
and hence needs copying again? ie. applications using this will
break other critical infrastructure in subtle ways.

> ceph servers can have loads where they perform O_DIRECT overwrites of
> allocated file data and then sync to make sure that the O_DIRECT writes
> are flushed from write caches.  If the writes dirty the inode with mtime
> updates then the syncs also write out the metadata needed to track the
> inodes which can add significant iop and latency overhead.
> 
> The ceph servers don't use mtime at all.  They're using the local file
> system as a backing store and any backups would be driven by their upper
> level ceph metadata.  For ceph, slow IO from mtime updates in the file
> system is as daft as if we had block devices slowing down IO for
> per-block write timestamps that file systems never use.
> 
> In simple tests a O_DIRECT|O_NOMTIME overwriting write followed by a
> sync went from 2 serial write round trips to 1 in XFS and from 4 serial
> IO round trips to 1 in ext4.
> 
> file_update_time() checks for O_NOMTIME and aborts the update if it's
> set, just like the current check for the in-kernel inode flag
> S_NOCMTIME.  I didn't update any other mtime update sites. They could be
> added as we decide that it's appropriate to do so.
> 
> I opted not to name the flag O_NOCMTIME because I didn't want the name
> to imply that ctime updates would be prevented for other inode changes
> like updating i_size in truncate.  Not updating ctime is a side-effect
> of removing mtime updates when it's the only thing changing in the
> inode.

If adding this, wouldn't we want to unify O_NOMTIME and
FMODE_NOCMTIME at the same time?

i.e. it makes no sense to add O_NOMTIME and not add O_NOCMTIME,
likewise it makes no sense to have two different "no mtime"
detection mechanisms.  i.e. file_is_nomtime(file)) should return
true for both files opened with O_NOMTIME, files that have had
FMODE_NOCMTIME added to them and inodes with the S_NOCMTIME flag
set on them.

> The criteria for using O_NOMTIME is the same as for using O_NOATIME:
> owning the file or having the CAP_FOWNER capability.  If we're not
> comfortable allowing owners to prevent mtime/ctime updates then we
> should add a tunable to allow O_NOMTIME.  Maybe a mount option?

I dislike "turn off safety for performance" options because Joe
SpeedRacer will always select performance over safety.

Cheers,

Dave.
-- 
Dave Chinner
david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org

  parent reply	other threads:[~2015-05-07  0:26 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06 22:00 [PATCH RFC] vfs: add a O_NOMTIME flag Zach Brown
2015-05-06 22:14 ` Trond Myklebust
2015-05-06 22:19   ` Sage Weil
     [not found]     ` <alpine.DEB.2.00.1505061515550.28239-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2015-05-06 22:41       ` Zach Brown
     [not found]         ` <20150506224113.GA17282-fypN+1c5dIyjpB87vu3CluTW4wlIGRCZ@public.gmane.org>
2015-05-06 22:46           ` Sage Weil
2015-05-06 23:21       ` Theodore Ts'o
     [not found] ` <1430949612-21356-1-git-send-email-zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-07  0:26   ` Dave Chinner [this message]
2015-05-07 17:20     ` Zach Brown
2015-05-07 18:43       ` Zach Brown
2015-05-08  1:01       ` Sage Weil
2015-05-08 14:29         ` John Stoffel
2015-07-14 11:50           ` Pavel Machek
     [not found]         ` <alpine.DEB.2.00.1505071752520.28239-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2015-05-08  1:23           ` Trond Myklebust
2015-05-08 15:19             ` Sage Weil
     [not found]             ` <CAHQdGtQjMHA8rVPkggB2zMz=k3O667+APH_1EY_2FtYmHL7-hw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-08 22:13               ` Dave Chinner
2015-05-08 22:24                 ` Sage Weil
     [not found]                   ` <alpine.DEB.2.00.1505081517470.28239-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2015-05-10 23:13                     ` Trond Myklebust
     [not found]                       ` <CAHQdGtTFTN2XuvmarFZ9HPQV=cuhh7FosdHSrJME_U4htr=i8w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-11  7:31                         ` Dave Chinner
2015-05-11 16:39                           ` Sage Weil
2015-05-11 17:12                             ` Trond Myklebust
     [not found]                               ` <CAHQdGtT3rCf-ycAYw-=7HGaemg1+HfY8sw3+kb54VHONxDyP3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-11 17:30                                 ` Sage Weil
2015-05-12  1:21                                   ` Dave Chinner
2015-05-12 23:12                                     ` Sage Weil
2015-05-13  0:57                                       ` Dave Chinner
     [not found]                                   ` <alpine.DEB.2.00.1505111020120.28239-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2015-05-12 13:41                                     ` John Stoffel
2015-05-11 14:47                       ` Theodore Ts'o
     [not found]                         ` <20150511144719.GA14088-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2015-05-11 16:24                           ` Sage Weil
     [not found]                             ` <alpine.DEB.2.00.1505110920520.28239-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2015-05-11 23:10                               ` Theodore Ts'o
2015-05-12  5:08                                 ` Kevin Easton
     [not found]                                   ` <20150512050821.GA9404-Qr0l8DEfScZEV+tojptmR0B+6BGkLq7r@public.gmane.org>
2015-05-12 11:45                                     ` Austin S Hemmelgarn
     [not found]                                       ` <5551E7EB.8040301-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-12 13:54                                         ` John Stoffel
2015-05-12 14:36                                           ` J. Bruce Fields
     [not found]                                             ` <20150512143637.GA6370-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-05-12 14:53                                               ` Austin S Hemmelgarn
2015-05-12 21:51                                                 ` Dave Chinner
2015-05-13 15:16                                                   ` Austin S Hemmelgarn
2015-05-12 22:39                                               ` NeilBrown
     [not found]                                                 ` <20150513083951.5eb63bc0-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2015-07-14 13:13                                                   ` Pavel Machek
2015-07-15  4:54                                                     ` NeilBrown
2015-07-22 13:47                                                       ` Pavel Machek
2015-05-12 21:35                                     ` Sage Weil
2015-05-13 12:32                               ` Jan Kara
2015-05-08 14:43           ` Austin S Hemmelgarn
2015-05-08 17:11           ` Zach Brown
     [not found]       ` <20150507172053.GA659-fypN+1c5dIyjpB87vu3CluTW4wlIGRCZ@public.gmane.org>
2015-05-07 19:09         ` Richard Weinberger
2015-05-07 19:53           ` Andy Lutomirski
     [not found]             ` <554BC4D8.9010507@nod.at>
2015-05-07 20:06               ` Andy Lutomirski
     [not found]             ` <CALCETrWNDMq0nK3ac-uZweV5BKK_yWTQHH5D0YkyEu7bcONo9g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-08  2:42               ` Dave Chinner
2015-07-14 11:44             ` Pavel Machek
2015-05-08  2:37         ` Dave Chinner
2015-05-08  3:24           ` Andy Lutomirski
     [not found]             ` <CALCETrUksu5ZB4QBfC8DMwYO2OFjfPW2eWsTweZGN_gybzcsmw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-08 14:44               ` Eric Sandeen
2015-05-11 20:36                 ` J. Bruce Fields

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=20150507002617.GJ4327@dastard \
    --to=david-fqsqvqoi3ljby3ivrkzq2a@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sweil-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org \
    --cc=zab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /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).