lkml.org 
[lkml]   [2015]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/10] ufs: get rid of ->setattr() for symlinks
    Date
    From: Al Viro <viro@zeniv.linux.org.uk>

    It was to needed for a couple of months in 2010, until UFS
    quota support got dropped. Since then it's equivalent to
    simple_setattr() (i.e. the default) for everything except the
    regular files. And dropping it there allows to convert all
    UFS symlinks to {page,simple}_symlink_inode_operations, getting
    rid of fs/ufs/symlink.c completely.

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    ---
    fs/ufs/Makefile | 2 +-
    fs/ufs/inode.c | 4 ++--
    fs/ufs/namei.c | 4 ++--
    fs/ufs/symlink.c | 42 ------------------------------------------
    fs/ufs/ufs.h | 4 ----
    5 files changed, 5 insertions(+), 51 deletions(-)
    delete mode 100644 fs/ufs/symlink.c

    diff --git a/fs/ufs/Makefile b/fs/ufs/Makefile
    index 392db25..ec4a6b4 100644
    --- a/fs/ufs/Makefile
    +++ b/fs/ufs/Makefile
    @@ -5,5 +5,5 @@
    obj-$(CONFIG_UFS_FS) += ufs.o

    ufs-objs := balloc.o cylinder.o dir.o file.o ialloc.o inode.o \
    - namei.o super.o symlink.o util.o
    + namei.o super.o util.o
    ccflags-$(CONFIG_UFS_DEBUG) += -DDEBUG
    diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
    index a064cf44..737160a 100644
    --- a/fs/ufs/inode.c
    +++ b/fs/ufs/inode.c
    @@ -528,11 +528,11 @@ static void ufs_set_inode_ops(struct inode *inode)
    inode->i_mapping->a_ops = &ufs_aops;
    } else if (S_ISLNK(inode->i_mode)) {
    if (!inode->i_blocks) {
    - inode->i_op = &ufs_fast_symlink_inode_operations;
    inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink;
    + inode->i_op = &simple_symlink_inode_operations;
    } else {
    - inode->i_op = &ufs_symlink_inode_operations;
    inode->i_mapping->a_ops = &ufs_aops;
    + inode->i_op = &page_symlink_inode_operations;
    }
    } else
    init_special_inode(inode, inode->i_mode,
    diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
    index 4796655..24b0cbd 100644
    --- a/fs/ufs/namei.c
    +++ b/fs/ufs/namei.c
    @@ -123,14 +123,14 @@ static int ufs_symlink (struct inode * dir, struct dentry * dentry,

    if (l > UFS_SB(sb)->s_uspi->s_maxsymlinklen) {
    /* slow symlink */
    - inode->i_op = &ufs_symlink_inode_operations;
    + inode->i_op = &page_symlink_inode_operations;
    inode->i_mapping->a_ops = &ufs_aops;
    err = page_symlink(inode, symname, l);
    if (err)
    goto out_fail;
    } else {
    /* fast symlink */
    - inode->i_op = &ufs_fast_symlink_inode_operations;
    + inode->i_op = &simple_symlink_inode_operations;
    inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink;
    memcpy(inode->i_link, symname, l);
    inode->i_size = l-1;
    diff --git a/fs/ufs/symlink.c b/fs/ufs/symlink.c
    deleted file mode 100644
    index 874480b..0000000
    --- a/fs/ufs/symlink.c
    +++ /dev/null
    @@ -1,42 +0,0 @@
    -/*
    - * linux/fs/ufs/symlink.c
    - *
    - * Only fast symlinks left here - the rest is done by generic code. AV, 1999
    - *
    - * Copyright (C) 1998
    - * Daniel Pirkl <daniel.pirkl@emai.cz>
    - * Charles University, Faculty of Mathematics and Physics
    - *
    - * from
    - *
    - * linux/fs/ext2/symlink.c
    - *
    - * 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/symlink.c
    - *
    - * Copyright (C) 1991, 1992 Linus Torvalds
    - *
    - * ext2 symlink handling code
    - */
    -
    -#include "ufs_fs.h"
    -#include "ufs.h"
    -
    -const struct inode_operations ufs_fast_symlink_inode_operations = {
    - .readlink = generic_readlink,
    - .follow_link = simple_follow_link,
    - .setattr = ufs_setattr,
    -};
    -
    -const struct inode_operations ufs_symlink_inode_operations = {
    - .readlink = generic_readlink,
    - .follow_link = page_follow_link_light,
    - .put_link = page_put_link,
    - .setattr = ufs_setattr,
    -};
    diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
    index 7da4aca..c87f4c3 100644
    --- a/fs/ufs/ufs.h
    +++ b/fs/ufs/ufs.h
    @@ -136,10 +136,6 @@ extern __printf(3, 4)
    void ufs_panic(struct super_block *, const char *, const char *, ...);
    void ufs_mark_sb_dirty(struct super_block *sb);

    -/* symlink.c */
    -extern const struct inode_operations ufs_fast_symlink_inode_operations;
    -extern const struct inode_operations ufs_symlink_inode_operations;
    -
    static inline struct ufs_sb_info *UFS_SB(struct super_block *sb)
    {
    return sb->s_fs_info;
    --
    2.1.4


    \
     
     \ /
      Last update: 2015-11-18 00:21    [W:2.725 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site