{
int err = 0;
fd_set branchlist;
-
int bstart = 0, bend = 0, bindex = 0;
struct dentry *dentry, *hidden_dentry;
const int countersize = sizeof(counter) * 2;
const int nlen = sizeof(".unionfs") + i_inosize + countersize - 1;
char name[nlen + 1];
-
int err;
struct dentry *tmp_dentry = NULL;
struct dentry *hidden_dentry;
int bindex, bstart, bend, err = 0;
struct file *hidden_file;
struct dentry *hidden_dentry;
-
struct dentry *dentry = file->f_dentry;
struct inode *parent_inode = dentry->d_parent->d_inode;
struct super_block *sb = dentry->d_sb;
int sbgen, fgen, dgen;
int bstart, bend;
int size;
-
int err = 0;
dentry = file->f_dentry;
struct dentry *hidden_dentry = NULL;
const char *childname;
unsigned int childnamelen;
-
int nr_dentry;
int count;
-
int old_bstart;
int old_bend;
struct dentry **path = NULL;
int positive = 0;
int locked = 0;
int interpose_flag;
-
struct nameidata lowernd; /* TODO: be gentler to the stack */
if (nd)
struct dentry *hidden_dentry;
char *name = NULL, *p;
struct inode *hidden_dir;
-
int i;
struct list_head *pos;
struct filldir_node *cursor;
struct super_block *sb;
struct dentry *hidden_dir_dentry;
struct inode *hidden_dir;
-
struct sioq_args args;
sb = dentry->d_sb;
int locked_parent = 0;
int locked_child = 0;
int allocated_new_info = 0;
-
int opaque;
char *whname = NULL;
const char *name;
int parse_branch_mode(const char *name)
{
int perms = __parse_branch_mode(name);
+
if (perms == 0)
perms = MAY_READ | MAY_WRITE;
return perms;
int bindex = 0;
int i = 0;
int j = 0;
-
struct dentry *dent1;
struct dentry *dent2;
int silent)
{
int err = 0;
-
struct unionfs_dentry_info *hidden_root_info = NULL;
int bindex, bstart, bend;
static int __init init_unionfs_fs(void)
{
int err;
+
printk("Registering unionfs " UNIONFS_VERSION "\n");
if ((err = unionfs_init_filldir_cache()))
int err = -EINVAL;
int idx;
struct nameidata nd;
+
/* optarg contains the branch name to delete */
/*
static inline off_t rdstate2offset(struct unionfs_dir_state *buf)
{
off_t tmp;
+
tmp = ((buf->cookie & MAXRDCOOKIE) << RDOFFBITS)
| (buf->offset & DIREOF);
return tmp;
static inline int is_robranch_super(const struct super_block *sb, int index)
{
int ret;
+
unionfs_read_lock(sb);
ret = (!(branchperms(sb, index) & MAY_WRITE)) ? -EROFS : 0;
unionfs_read_unlock(sb);
int bindex)
{
struct vfsmount *mnt;
+
if (!dentry) {
if (bindex < 0)
return NULL;
static inline void unionfs_mntput(struct dentry *dentry, int bindex)
{
struct vfsmount *mnt;
+
if (!dentry) {
if (bindex < 0)
return;