From: Jonathan Nieder <jrnieder-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Cc: Sage Weil <sage-BnTBU8nroG7k1uMJSBkQmQ@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Subject: Re: [PATCH] vfs: introduce FS_IOC_SYNCFS to sync a single super
Date: Sat, 27 Nov 2010 16:32:19 -0600 [thread overview]
Message-ID: <20101127223217.GA26820@burratino> (raw)
In-Reply-To: <20100826170142.e029cff5.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Hi,
Andrew Morton wrote:
> Sage Weil wrote:
>> The ability to sync a single
>> mount can be useful for both applications and administrators (e.g., when
>> other mounts on the system are hung).
>>
>> Introduce a simple ioctl to sync the super associated with an open file.
>> Pass any error returned by sync_filesystem() back to the user.
>
> The changelog forgot to tell us why this is a useful thing to add.
> What is the use-case?
Here's a use case.
dpkg, like most package managers, occasionally needs to drop in a whole
bunch of new versions of essential files in the file system. Since
ancient times, that has been done with the "rename trick":
open("/lib/libc.so.6.dpkg-tmp", ...
write(...
open("/lib/libm.so.6.dpkg-tmp", ...
write(...
...
/* done staging! now move into place. */
rename("/lib/libc.so.6.dpkg-tmp", "/lib/libc.so.6");
rename("/lib/libm.so.6.dpkg-tmp", "/lib/libm.so.6");
...
This way, each file has either the old content or the new content,
and we can back out upgrades for certain errors (e.g., disk full).
Great. Problem is, filesystems with delayed allocation like XFS,
ubifs, ext4, hfs+ don't cope so well with that[1]. We need to sync
the files at some point before the rename[2] to prevent zero-length
files and similar oddities. What system call to use?
- a storm of fsyncs causes inappropriate constraints on the order
of writes. The result is very slow and can result in unnecessary
wear.
- a sync() causes I/O on unrelated filesystems. The result can be
very slow and can result in unnecessary wear.
A nice compromise is to only sync the affected filesystems, using
something like this ioctl[3].
> If we're going to add something like this then it will need to be
> documented in manpages. Supposedly, a cc to linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> will help make all that happen, but I'm not sure who if anyone is
> answering the phone over there?
Michael, does the API look okay?
Hope that helps,
Jonathan
[1] Yes, even after v2.6.30-rc1~416^2~15 (ext4: Automatically allocate
delay allocated blocks on rename, 2009-02-23).
See https://bugzilla.kernel.org/show_bug.cgi?id=18632
[2] http://lists.debian.org/debian-dpkg/2010/11/msg00039.html
http://lists.debian.org/debian-devel/2010/11/msg00550.html
[3] http://lists.debian.org/debian-dpkg/2010/11/msg00069.html
next prev parent reply other threads:[~2010-11-27 22:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.64.1008090711040.17515@cobra.newdream.net>
[not found] ` <Pine.LNX.4.64.1008090711040.17515-vIokxiIdD2AQNTJnQDzGJqxOck334EZe@public.gmane.org>
2010-08-27 0:01 ` [PATCH] vfs: introduce FS_IOC_SYNCFS to sync a single super Andrew Morton
[not found] ` <20100826170142.e029cff5.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2010-09-08 21:44 ` Sage Weil
2010-11-27 22:32 ` Jonathan Nieder [this message]
2010-11-28 5:04 ` Jonathan Nieder
[not found] ` <201008092055.07248.arnd@arndb.de>
[not found] ` <201008092055.07248.arnd-r2nGTMty4D4@public.gmane.org>
2010-11-27 22:57 ` Jonathan Nieder
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=20101127223217.GA26820@burratino \
--to=jrnieder-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=arnd-r2nGTMty4D4@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=sage-BnTBU8nroG7k1uMJSBkQmQ@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).