• Miklos Szeredi's avatar
    ovl: proper cleanup of workdir · eea2fb48
    Miklos Szeredi authored
    When mounting overlayfs it needs a clean "work" directory under the
    supplied workdir.
    
    Previously the mount code removed this directory if it already existed and
    created a new one.  If the removal failed (e.g. directory was not empty)
    then it fell back to a read-only mount not using the workdir.
    
    While this has never been reported, it is possible to get a non-empty
    "work" dir from a previous mount of overlayfs in case of crash in the
    middle of an operation using the work directory.
    
    In this case the left over state should be discarded and the overlay
    filesystem will be consistent, guaranteed by the atomicity of operations on
    moving to/from the workdir to the upper layer.
    
    This patch implements cleaning out any files left in workdir.  It is
    implemented using real recursion for simplicity, but the depth is limited
    to 2, because the worst case is that of a directory containing whiteouts
    under "work".
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    Cc: <stable@vger.kernel.org>
    eea2fb48
readdir.c 14.2 KB