lkml.org 
[lkml]   [2006]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2 of 2] eCryptfs: Use stackfs's generic copy inode attr functions
    Date
    From
    From: Josef "Jeff" Sipek <jsipek@cs.sunysb.edu>

    Replace eCryptfs specific code & calls with the more generic stackfs
    equivalents and remove the eCryptfs specific functions.

    Signed-off-by: Josef "Jeff" Sipek <jsipek@cs.sunysb.edu>

    ---

    3 files changed, 20 insertions(+), 59 deletions(-)
    fs/ecryptfs/file.c | 3 +-
    fs/ecryptfs/inode.c | 71 ++++++++++-----------------------------------------
    fs/ecryptfs/main.c | 5 ++-

    diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c
    --- a/fs/ecryptfs/file.c
    +++ b/fs/ecryptfs/file.c
    @@ -30,6 +30,7 @@
    #include <linux/security.h>
    #include <linux/smp_lock.h>
    #include <linux/compat.h>
    +#include <linux/stack_fs.h>
    #include "ecryptfs_kernel.h"

    /**
    @@ -192,7 +193,7 @@ retry:
    goto retry;
    file->f_pos = lower_file->f_pos;
    if (rc >= 0)
    - ecryptfs_copy_attr_atime(inode, lower_file->f_dentry->d_inode);
    + stackfs_copy_attr_atime(inode, lower_file->f_dentry->d_inode);
    return rc;
    }

    diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
    --- a/fs/ecryptfs/inode.c
    +++ b/fs/ecryptfs/inode.c
    @@ -30,6 +30,7 @@
    #include <linux/namei.h>
    #include <linux/mount.h>
    #include <linux/crypto.h>
    +#include <linux/stack_fs.h>
    #include "ecryptfs_kernel.h"

    static struct dentry *lock_parent(struct dentry *dentry)
    @@ -51,48 +52,6 @@ static void unlock_dir(struct dentry *di
    {
    mutex_unlock(&dir->d_inode->i_mutex);
    dput(dir);
    -}
    -
    -void ecryptfs_copy_inode_size(struct inode *dst, const struct inode *src)
    -{
    - i_size_write(dst, i_size_read((struct inode *)src));
    - dst->i_blocks = src->i_blocks;
    -}
    -
    -void ecryptfs_copy_attr_atime(struct inode *dest, const struct inode *src)
    -{
    - dest->i_atime = src->i_atime;
    -}
    -
    -static void ecryptfs_copy_attr_times(struct inode *dest,
    - const struct inode *src)
    -{
    - dest->i_atime = src->i_atime;
    - dest->i_mtime = src->i_mtime;
    - dest->i_ctime = src->i_ctime;
    -}
    -
    -static void ecryptfs_copy_attr_timesizes(struct inode *dest,
    - const struct inode *src)
    -{
    - dest->i_atime = src->i_atime;
    - dest->i_mtime = src->i_mtime;
    - dest->i_ctime = src->i_ctime;
    - ecryptfs_copy_inode_size(dest, src);
    -}
    -
    -void ecryptfs_copy_attr_all(struct inode *dest, const struct inode *src)
    -{
    - dest->i_mode = src->i_mode;
    - dest->i_nlink = src->i_nlink;
    - dest->i_uid = src->i_uid;
    - dest->i_gid = src->i_gid;
    - dest->i_rdev = src->i_rdev;
    - dest->i_atime = src->i_atime;
    - dest->i_mtime = src->i_mtime;
    - dest->i_ctime = src->i_ctime;
    - dest->i_blkbits = src->i_blkbits;
    - dest->i_flags = src->i_flags;
    }

    /**
    @@ -171,8 +130,8 @@ ecryptfs_do_create(struct inode *directo
    ecryptfs_printk(KERN_ERR, "Failure in ecryptfs_interpose\n");
    goto out_lock;
    }
    - ecryptfs_copy_attr_timesizes(directory_inode,
    - lower_dir_dentry->d_inode);
    + stackfs_copy_attr_timesizes(directory_inode,
    + lower_dir_dentry->d_inode);
    out_lock:
    unlock_dir(lower_dir_dentry);
    out:
    @@ -372,7 +331,7 @@ static struct dentry *ecryptfs_lookup(st
    "d_name.name = [%s]\n", lower_dentry,
    lower_dentry->d_name.name);
    lower_inode = lower_dentry->d_inode;
    - ecryptfs_copy_attr_atime(dir, lower_dir_dentry->d_inode);
    + stackfs_copy_attr_atime(dir, lower_dir_dentry->d_inode);
    BUG_ON(!atomic_read(&lower_dentry->d_count));
    ecryptfs_set_dentry_private(dentry,
    kmem_cache_alloc(ecryptfs_dentry_info_cache,
    @@ -478,7 +437,7 @@ static int ecryptfs_link(struct dentry *
    rc = ecryptfs_interpose(lower_new_dentry, new_dentry, dir->i_sb, 0);
    if (rc)
    goto out_lock;
    - ecryptfs_copy_attr_timesizes(dir, lower_new_dentry->d_inode);
    + stackfs_copy_attr_timesizes(dir, lower_new_dentry->d_inode);
    old_dentry->d_inode->i_nlink =
    ecryptfs_inode_to_lower(old_dentry->d_inode)->i_nlink;
    i_size_write(new_dentry->d_inode, file_size_save);
    @@ -503,7 +462,7 @@ static int ecryptfs_unlink(struct inode
    ecryptfs_printk(KERN_ERR, "Error in vfs_unlink\n");
    goto out_unlock;
    }
    - ecryptfs_copy_attr_times(dir, lower_dir_inode);
    + stackfs_copy_attr_times(dir, lower_dir_inode);
    dentry->d_inode->i_nlink =
    ecryptfs_inode_to_lower(dentry->d_inode)->i_nlink;
    dentry->d_inode->i_ctime = dir->i_ctime;
    @@ -542,7 +501,7 @@ static int ecryptfs_symlink(struct inode
    rc = ecryptfs_interpose(lower_dentry, dentry, dir->i_sb, 0);
    if (rc)
    goto out_lock;
    - ecryptfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    + stackfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    out_lock:
    unlock_dir(lower_dir_dentry);
    dput(lower_dentry);
    @@ -565,7 +524,7 @@ static int ecryptfs_mkdir(struct inode *
    rc = ecryptfs_interpose(lower_dentry, dentry, dir->i_sb, 0);
    if (rc)
    goto out;
    - ecryptfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    + stackfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    dir->i_nlink = lower_dir_dentry->d_inode->i_nlink;
    out:
    unlock_dir(lower_dir_dentry);
    @@ -601,7 +560,7 @@ static int ecryptfs_rmdir(struct inode *
    d_delete(tlower_dentry);
    tlower_dentry = NULL;
    }
    - ecryptfs_copy_attr_times(dir, lower_dir_dentry->d_inode);
    + stackfs_copy_attr_times(dir, lower_dir_dentry->d_inode);
    dir->i_nlink = lower_dir_dentry->d_inode->i_nlink;
    unlock_dir(lower_dir_dentry);
    if (!rc)
    @@ -629,7 +588,7 @@ ecryptfs_mknod(struct inode *dir, struct
    rc = ecryptfs_interpose(lower_dentry, dentry, dir->i_sb, 0);
    if (rc)
    goto out;
    - ecryptfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    + stackfs_copy_attr_timesizes(dir, lower_dir_dentry->d_inode);
    out:
    unlock_dir(lower_dir_dentry);
    if (!dentry->d_inode)
    @@ -658,9 +617,9 @@ ecryptfs_rename(struct inode *old_dir, s
    lower_new_dir_dentry->d_inode, lower_new_dentry);
    if (rc)
    goto out_lock;
    - ecryptfs_copy_attr_all(new_dir, lower_new_dir_dentry->d_inode);
    + stackfs_copy_attr_all(new_dir, lower_new_dir_dentry->d_inode);
    if (new_dir != old_dir)
    - ecryptfs_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode);
    + stackfs_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode);
    out_lock:
    unlock_rename(lower_old_dir_dentry, lower_new_dir_dentry);
    dput(lower_new_dentry);
    @@ -714,8 +673,8 @@ ecryptfs_readlink(struct dentry *dentry,
    rc = -EFAULT;
    }
    kfree(decoded_name);
    - ecryptfs_copy_attr_atime(dentry->d_inode,
    - lower_dentry->d_inode);
    + stackfs_copy_attr_atime(dentry->d_inode,
    + lower_dentry->d_inode);
    }
    out_free_lower_buf:
    kfree(lower_buf);
    @@ -945,7 +904,7 @@ static int ecryptfs_setattr(struct dentr
    }
    rc = notify_change(lower_dentry, ia);
    out:
    - ecryptfs_copy_attr_all(inode, lower_inode);
    + stackfs_copy_attr_all(inode, lower_inode);
    return rc;
    }

    diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c
    --- a/fs/ecryptfs/main.c
    +++ b/fs/ecryptfs/main.c
    @@ -35,6 +35,7 @@
    #include <linux/pagemap.h>
    #include <linux/key.h>
    #include <linux/parser.h>
    +#include <linux/stack_fs.h>
    #include "ecryptfs_kernel.h"

    /**
    @@ -115,10 +116,10 @@ int ecryptfs_interpose(struct dentry *lo
    d_add(dentry, inode);
    else
    d_instantiate(dentry, inode);
    - ecryptfs_copy_attr_all(inode, lower_inode);
    + stackfs_copy_attr_all(inode, lower_inode);
    /* This size will be overwritten for real files w/ headers and
    * other metadata */
    - ecryptfs_copy_inode_size(inode, lower_inode);
    + stackfs_copy_inode_size(inode, lower_inode);
    out:
    return rc;
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-10-13 13:53    [W:0.034 / U:0.652 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site