lkml.org 
[lkml]   [2009]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/8] exofs: symlink_inode and fast_symlink_inode operations
    Date
    Generic implementation of symlink ops.

    Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
    ---
    fs/exofs/Kbuild | 2 +-
    fs/exofs/exofs.h | 4 +++
    fs/exofs/symlink.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++
    3 files changed, 62 insertions(+), 1 deletions(-)
    create mode 100644 fs/exofs/symlink.c

    diff --git a/fs/exofs/Kbuild b/fs/exofs/Kbuild
    index d8bd4d5..18c6158 100644
    --- a/fs/exofs/Kbuild
    +++ b/fs/exofs/Kbuild
    @@ -26,5 +26,5 @@ KBUILD_CPPFLAGS := -I$(OSD_INC) $(KBUILD_CPPFLAGS)

    endif

    -exofs-objs := osd.o inode.o file.o
    +exofs-objs := osd.o inode.o file.o symlink.o
    obj-$(CONFIG_EXOFS_FS) += exofs.o
    diff --git a/fs/exofs/exofs.h b/fs/exofs/exofs.h
    index b6d9089..9470be3 100644
    --- a/fs/exofs/exofs.h
    +++ b/fs/exofs/exofs.h
    @@ -147,4 +147,8 @@ int exofs_setattr(struct dentry *, struct iattr *);
    extern const struct inode_operations exofs_file_inode_operations;
    extern const struct file_operations exofs_file_operations;

    +/* symlink.c */
    +extern const struct inode_operations exofs_symlink_inode_operations;
    +extern const struct inode_operations exofs_fast_symlink_inode_operations;
    +
    #endif
    diff --git a/fs/exofs/symlink.c b/fs/exofs/symlink.c
    new file mode 100644
    index 0000000..36e2d7b
    --- /dev/null
    +++ b/fs/exofs/symlink.c
    @@ -0,0 +1,57 @@
    +/*
    + * Copyright (C) 2005, 2006
    + * Avishay Traeger (avishay@gmail.com) (avishay@il.ibm.com)
    + * Copyright (C) 2005, 2006
    + * International Business Machines
    + * Copyright (C) 2008, 2009
    + * Boaz Harrosh <bharrosh@panasas.com>
    + *
    + * Copyrights for code taken from ext2:
    + * Copyright (C) 1992, 1993, 1994, 1995
    + * Remy Card (card@masi.ibp.fr)
    + * Laboratoire MASI - Institut Blaise Pascal
    + * Universite Pierre et Marie Curie (Paris VI)
    + * from
    + * linux/fs/minix/inode.c
    + * Copyright (C) 1991, 1992 Linus Torvalds
    + *
    + * This file is part of exofs.
    + *
    + * exofs is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation. Since it is based on ext2, and the only
    + * valid version of GPL for the Linux kernel is version 2, the only valid
    + * version of GPL for exofs is version 2.
    + *
    + * exofs is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with exofs; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    + */
    +
    +#include <linux/namei.h>
    +
    +#include "exofs.h"
    +
    +static void *exofs_follow_link(struct dentry *dentry, struct nameidata *nd)
    +{
    + struct exofs_i_info *oi = exofs_i(dentry->d_inode);
    +
    + nd_set_link(nd, (char *)oi->i_data);
    + return NULL;
    +}
    +
    +const struct inode_operations exofs_symlink_inode_operations = {
    + .readlink = generic_readlink,
    + .follow_link = page_follow_link_light,
    + .put_link = page_put_link,
    +};
    +
    +const struct inode_operations exofs_fast_symlink_inode_operations = {
    + .readlink = generic_readlink,
    + .follow_link = exofs_follow_link,
    +};
    --
    1.6.0.1


    \
     
     \ /
      Last update: 2009-02-09 14:23    [W:2.964 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site