From: Erez Zadok Date: Sat, 30 Apr 2011 05:33:55 +0000 (-0400) Subject: Unionfs: remove whiteout of opened but unlinked file from readonly branch X-Git-Url: https://git.fsl.cs.sunysb.edu/?a=commitdiff_plain;h=2c61679ae0983766d54bf20e01dc69d82be0fdc3;p=unionfs-2.6.39.y.git Unionfs: remove whiteout of opened but unlinked file from readonly branch If we unlink an opened file in a readonly branch, then we create a whiteout. But then if if ftruncate it, we copyup a zero-length file. So we have to delete the whiteout. Signed-off-by: Erez Zadok --- diff --git a/fs/unionfs/inode.c b/fs/unionfs/inode.c index 0a27fab5e9f..24243adbe61 100644 --- a/fs/unionfs/inode.c +++ b/fs/unionfs/inode.c @@ -976,6 +976,16 @@ static int unionfs_setattr(struct dentry *dentry, struct iattr *ia) /* get updated lower_dentry/inode after copyup */ lower_dentry = unionfs_lower_dentry(dentry); lower_inode = unionfs_lower_inode(inode); + /* + * check for whiteouts in writeable branch, and remove them + * if necessary. + */ + if (lower_dentry) { + err = check_unlink_whiteout(dentry, lower_dentry, + bindex); + if (err > 0) /* ignore if whiteout found and removed */ + err = 0; + } } /*