From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>,
Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
"linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-man <linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: Documenting RENAME_WHITEOUT
Date: Sun, 08 Mar 2015 09:37:39 +0100 [thread overview]
Message-ID: <54FC0A53.5060804@gmail.com> (raw)
In-Reply-To: <20150306214457.GC13958@dastard>
On 03/06/2015 10:44 PM, Dave Chinner wrote:
> On Fri, Mar 06, 2015 at 05:11:45PM +0100, Miklos Szeredi wrote:
>> On Thu, Jan 29, 2015 at 11:01:08AM +0100, Michael Kerrisk (man-pages) wrote:
>>> Hi Miklos,
>>>
>>> I just noticed that your RENAME_WHITEOUT flag went into Linux 3.18:
>>> commit 0d7a855526dd672e114aff2ac22b60fc6f155b08
>>> commit 787fb6bc9682ec7c05fb5d9561b57100fbc1cc41
>>>
>>> Would you be willing to write some text for the rename(2)/renameat2(2)
>>> man page that described this flag. In that text it would be great to
>>> have an explanation of what a whiteout is and why they are useful.
>>
>> Hi Michael,
>>
>> Sorry for the delay...
>>
>> RENAME_WHITEOUT is a special operation, that only makes sense for
>> overlay/union type filesystem implementations. Currently it is used
>> internally by the overlay filesystem.
>
> However, it is exposed to userspace by renameat2, and filesystem
> developers still need to know it's exact semantics documented so
> they can implement it.
>
>> Specifying RENAME_WHITEOUT will create a "whiteout" object at the source of
>> the rename at the same time as performing the rename. The whole operation is
>> still atomic, so if the rename succeeds then the whiteout will also have been
>> created.
>>
>> A "whiteout" is an object that has special meaning in union/overlay type file
>> system constructs, in these constructs multiple layers exists and only the top
>> one is ever modified. A whiteout on an upper layer will effectively hide the
>> matching file on the lower layer, making it appear if the file didn't exist.
>>
>> When a file that exists on the lower layer is renamed, the file is first
>> copied up (if not already on the upper layer) and then renamed on the upper,
>> read-write layer. At the same time the source file needs to be "whiteouted".
>> The whole operation needs to be done atomically.
>
> This doesn't explain exactly what the RENAME_WHITEOUT operation is
> supposed to do. It explains how overlayfs uses them, not the
> semantics and behaviour of RENAME_WHITEOUT. e.g. source
> restrictions, target restrictions, can you RENAME_WHITEOUT over
> another whiteout, etc. I've noticed these restrictions are very
> different from other rename operations, but I don't know whether
> that is ext4 implementation bugs or intentional because there is no
> documentation or regression tests in xfstests for it...
What Dave said!
Miklos, AFAICS, RENAME_WHITEOUT is user-space visible. Would you be
willing to write some piece for the man page to explain things
from a user-space perspective?
Thanks,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-03-08 8:37 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-29 10:01 Documenting RENAME_WHITEOUT Michael Kerrisk (man-pages)
2015-02-20 7:11 ` Michael Kerrisk (man-pages)
[not found] ` <CAKgNAkiog0S5kHYNb_4+d2ZXcA-nPw-cBsuNG03AyEPt3K34nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-06 16:11 ` Miklos Szeredi
[not found] ` <20150306161145.GA13649-YynjPCA0bi1olqkO4TVVkw@public.gmane.org>
2015-03-06 21:44 ` Dave Chinner
2015-03-08 8:37 ` Michael Kerrisk (man-pages) [this message]
[not found] ` <54FC0A53.5060804-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-09 10:45 ` Miklos Szeredi
2015-05-06 14:17 ` Michael Kerrisk (man-pages)
2015-05-06 14:49 ` Miklos Szeredi
2015-05-06 15:46 ` Michael Kerrisk (man-pages)
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=54FC0A53.5060804@gmail.com \
--to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=miklos-sUDqSbJrdHQHWmgEVkV9KA@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).