#define CAPIFS_SUPER_MAGIC (('C'<<8)|'N')
 
 static struct vfsmount *capifs_mnt;
-static struct dentry *capifs_root;
 
 static struct {
        int setuid;
        inode->i_fop = &simple_dir_operations;
        inode->i_nlink = 2;
 
-       capifs_root = s->s_root = d_alloc_root(inode);
+       s->s_root = d_alloc_root(inode);
        if (s->s_root)
                return 0;
        
 
 struct dentry *capifs_new_ncci(unsigned int number, dev_t device)
 {
+       struct super_block *s = capifs_mnt->mnt_sb;
+       struct dentry *root = s->s_root;
        struct dentry *dentry;
        struct inode *inode;
        char name[10];
        int namelen;
 
-       mutex_lock(&capifs_root->d_inode->i_mutex);
+       mutex_lock(&root->d_inode->i_mutex);
 
        namelen = sprintf(name, "%d", number);
-       dentry = lookup_one_len(name, capifs_root, namelen);
+       dentry = lookup_one_len(name, root, namelen);
        if (IS_ERR(dentry)) {
                dentry = NULL;
                goto unlock_out;
                goto unlock_out;
        }
 
-       inode = new_inode(capifs_mnt->mnt_sb);
+       inode = new_inode(s);
        if (!inode) {
                dput(dentry);
                dentry = NULL;
        dget(dentry);
 
 unlock_out:
-       mutex_unlock(&capifs_root->d_inode->i_mutex);
+       mutex_unlock(&root->d_inode->i_mutex);
 
        return dentry;
 }
 
 void capifs_free_ncci(struct dentry *dentry)
 {
+       struct dentry *root = capifs_mnt->mnt_sb->s_root;
        struct inode *inode;
 
        if (!dentry)
                return;
 
-       mutex_lock(&capifs_root->d_inode->i_mutex);
+       mutex_lock(&root->d_inode->i_mutex);
 
        inode = dentry->d_inode;
        if (inode) {
        }
        dput(dentry);
 
-       mutex_unlock(&capifs_root->d_inode->i_mutex);
+       mutex_unlock(&root->d_inode->i_mutex);
 }
 
 static int __init capifs_init(void)