• Amir Goldstein's avatar
    ovl: check for emptiness of redirect dir · d1595119
    Amir Goldstein authored
    Before introducing redirect_dir feature, the condition
    !ovl_lower_positive(dentry) for a directory, implied that it is a pure
    upper directory, which may be removed if empty.
    
    Now that directory can be redirect, it is possible that upper does not
    cover any lower (i.e. !ovl_lower_positive(dentry)), but the directory is a
    merge (with redirected path) and maybe non empty.
    
    Check for this case in ovl_remove_upper().
    
    This change fixes the following test case from rename-pop-dir.py
    of unionmount-testsuite:
    
        """Remove dir and rename old name"""
        d = ctx.non_empty_dir()
        d2 = ctx.no_dir()
    
        ctx.rmdir(d, err=ENOTEMPTY)
        ctx.rename(d, d2)
        ctx.rmdir(d, err=ENOENT)
        ctx.rmdir(d2, err=ENOTEMPTY)
    
    ./run --ov rename-pop-dir
    /mnt/a/no_dir103: Expected error (Directory not empty) was not produced
    Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    d1595119
dir.c 23.4 KB