if (err) {
if (!IS_COPYUP_ERR(err))
goto out;
-
bstart--;
} else
whiteout_unlinked = 1;
if (lookupmode == INTERPOSE_REVAL) {
if (dentry->d_inode)
UNIONFS_I(dentry->d_inode)->stale = 1;
-
goto out;
}
/* This should only happen if we found a whiteout. */
hidden_wh_dentry,
~current->fs->umask & S_IRWXUGO,
NULL);
-
}
unlock_dir(hidden_dir_dentry);
dput(hidden_wh_dentry);
static void unionfs_delete_inode(struct inode *inode)
{
inode->i_size = 0; /* every f/s seems to do that */
-
clear_inode(inode);
}
static inline int branchperms(const struct super_block *sb, int index)
{
BUG_ON(index < 0);
-
return UNIONFS_SB(sb)->data[index].branchperms;
}
static inline int set_branchperms(struct super_block *sb, int index, int perms)
{
BUG_ON(index < 0);
-
UNIONFS_SB(sb)->data[index].branchperms = perms;
-
return perms;
}
if (err) {
if (dbstart(dentry) == 0)
goto out;
-
err = create_whiteout(dentry, dbstart(dentry) - 1);
} else if (dbopaque(dentry) != -1)
/* There is a hidden lower-priority file with the same name. */