mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
754661f143
Many struct inode_operations in the kernel can be "const". Marking them const moves these to the .rodata section, which avoids false sharing with potential dirty data. In addition it'll catch accidental writes at compile time to these shared resources. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
/*
|
|
* linux/fs/ext2/symlink.c
|
|
*
|
|
* Only fast symlinks left here - the rest is done by generic code. AV, 1999
|
|
*
|
|
* 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 "ext2.h"
|
|
#include "xattr.h"
|
|
#include <linux/namei.h>
|
|
|
|
static void *ext2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|
{
|
|
struct ext2_inode_info *ei = EXT2_I(dentry->d_inode);
|
|
nd_set_link(nd, (char *)ei->i_data);
|
|
return NULL;
|
|
}
|
|
|
|
const struct inode_operations ext2_symlink_inode_operations = {
|
|
.readlink = generic_readlink,
|
|
.follow_link = page_follow_link_light,
|
|
.put_link = page_put_link,
|
|
#ifdef CONFIG_EXT2_FS_XATTR
|
|
.setxattr = generic_setxattr,
|
|
.getxattr = generic_getxattr,
|
|
.listxattr = ext2_listxattr,
|
|
.removexattr = generic_removexattr,
|
|
#endif
|
|
};
|
|
|
|
const struct inode_operations ext2_fast_symlink_inode_operations = {
|
|
.readlink = generic_readlink,
|
|
.follow_link = ext2_follow_link,
|
|
#ifdef CONFIG_EXT2_FS_XATTR
|
|
.setxattr = generic_setxattr,
|
|
.getxattr = generic_getxattr,
|
|
.listxattr = ext2_listxattr,
|
|
.removexattr = generic_removexattr,
|
|
#endif
|
|
};
|