From: Erez Zadok Date: Tue, 6 Sep 2011 01:20:36 +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=91294dfad6fa22cbdccff2fb3f8f0599724d1605;p=unionfs-2.6.26.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 c4abbb78129..a0af9b4afc6 100644 --- a/fs/unionfs/inode.c +++ b/fs/unionfs/inode.c @@ -964,6 +964,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; + } } /*