Re: [PATCH v2 01/18] overlay: implement fsck utility

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 14, 2017 at 4:03 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
> On Thu, Dec 14, 2017 at 4:47 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>> On Thu, Dec 14, 2017 at 3:33 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>>> On Thu, Dec 14, 2017 at 4:13 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>>> On Thu, Dec 14, 2017 at 7:47 AM, zhangyi (F) <yi.zhang@xxxxxxxxxx> wrote:
>>>>> fsck.overlay
>>>>> ============
>>>>>
>>>>> fsck.overlay is used to check and optionally repair underlying
>>>>> directories of overlay-filesystem.
>>>>
>>>> Thanks for working on this.
>>>>
>>>>
>>>>>
>>>>> Check the following points:
>>>>>
>>>>> Whiteouts
>>>>> ---------
>>>>>
>>>>> A whiteout is a character device with 0/0 device number. It is used to
>>>>> record the removed files or directories, When a whiteout is found in a
>>>>> directory, there should be at least one directory or file with the same
>>>>> name in any of the corresponding lower layers. If not exist, the whiteout
>>>>> will be treated as orphan whiteout and remove.
>>>>
>>>> Okay.
>>>>
>>>>>
>>>>> Opaque directories
>>>>> ------------------
>>>>>
>>>>> An opaque directory is a directory with "trusted.overlay.opaque" xattr
>>>>> valued "y". There are two legal situations of making opaque directory: 1)
>>>>> create directory over whiteout 2) creat directory in merged directory. If an
>>>>> opaque directory is found, corresponding matching name in lower layers might
>>>>> exist or parent directory might merged, If not, the opaque xattr will be
>>>>> treated as invalid and remove.
>>>>
>>>> Current version of overlay fs doesn't bother with removing opaque
>>>> attribute.  So not sure fsck.overlay should care.  Or at least is
>>>> should be an optional thing and not worth warning about, since it's
>>>> perfectly normal.
>>>>
>>>>
>>>>>
>>>>> Redirect directories
>>>>> --------------------
>>>>>
>>>>> An redirect directory is a directory with "trusted.overlay.redirect"
>>>>> xattr valued to the path of the original location from the root of the
>>>>> overlay. It is only used when renaming a directory and "redirect dir"
>>>>> feature is enabled. If an redirect directory is found, the following
>>>>> must be met:
>>>>>
>>>>> 1) The directory store in redirect xattr should exist in one of lower
>>>>> layers.
>>>>
>>>> Okay.
>>>>
>>>>> 2) The origin directory should be redirected only once in one layer,
>>>>> which mean there is only one redirect xattr point to this origin directory in
>>>>> the specified layer.
>>>>> 3) A whiteout or an opaque directory with the same name to origin should
>>>>> exist in the same directory as the redirect directory.
>>>>>
>>>>> If not, 1) The redirect xattr is invalid and need to remove 2) One of
>>>>> the redirect xattr is redundant but not sure which one is, ask user 3)
>>>>> Create a whiteout device or set opaque xattr to an existing directory if the
>>>>> parent directory was meregd or remove xattr if not.
>>>>
>>>> Hmm, in this case also should ask the user, as it's not clear that the
>>>> "new" copy resulting from removal of whiteout on upper is the wanted
>>>> one or the "old" renamed copy.
>>>>
>>>>
>>>>>
>>>>> Usage
>>>>> =====
>>>>>
>>>>> 1. Ensure overlay filesystem is not mounted based on directories which
>>>>> need to check.
>>>>>
>>>>> 2. Run fsck.overlay program:
>>>>>    Usage:
>>>>>    fsck.overlay [-l lowerdir] [-u upperdir] [-w workdir] [-avhV]
>>>>>
>>>>>    Options:
>>>>>    -l, --lowerdir=LOWERDIR   specify lower directories of overlayfs,
>>>>>                              multiple lower use ':' as separator.
>>>>>    -u, --upperdir=UPPERDIR   specify upper directory of overlayfs
>>>>>    -w, --workdir=WORKDIR     specify work directory of overlayfs
>>>>
>>>> Not sure what other fsck do, but I'd feel more logical to have the
>>>> same -olowerdir=..., etc. notation as for mount.
>>>>
>>>
>>> Other fsck do not have this problem.
>>> They only need blockdev as input.
>>> Which leads me to an idea I have been wondering about for the overlayfs
>>> utilities - a specification file, e.g.:
>>>
>>> # create dirs and write their path to a spec file:
>>> mkfs.overlay -ometacopy=on,lowerdir=... myovl.spec
>>> # mount overlay using mount.overlay helper:
>>> mount -t overlay myovl.spec /ovl
>>> # fsck with just one configuration that is consistent with mkfs and mount:
>>> fsck.overlay -n myovl.spec
>>>
>>> The specification file can also determine the backward incompatible
>>> features of the overlay, for example, if user sets -metacopy=on during mkfs
>>> mount.overlay helper will refuse to mount with kernel that does not
>>> support metacopy. The reason we CAN do that with spec file is because spec
>>> file determines that overlay was born with metacopy feature enabled.
>>> It is not the same an overlay that was once mounted with metacopy=on and
>>> then we don't allow it to mount with an old kernel.
>>>
>>> This method could delegate the entire feature compatibility to userspace
>>> mount helper.
>>
>> Would be nice.
>>
>> Somewhat related: overlay.fsck could allow converting to a more
>> compatible format (e.g. remove metacopy, redirect, index, etc).
>>
>
> Yeh, or another tool. I was thinking more in the lines of a export/import to
> a portable format.

tar?

> Docker knows to pack opaque xattr, but it doesn't pack
> "redirect" xattr to images these days, not to mention "origin" and index.
>
> incompatible features can be either stripped off at export time, or stripped
> off at import time based on capabilities of the kernel where overlay is imported
> on.

Right.

Thanks,
Miklos
--
To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux