|
|
|
@ -43,7 +43,6 @@ static struct inode *befs_alloc_inode(struct super_block *sb); |
|
|
|
|
static void befs_destroy_inode(struct inode *inode); |
|
|
|
|
static void befs_destroy_inodecache(void); |
|
|
|
|
static void *befs_follow_link(struct dentry *, struct nameidata *); |
|
|
|
|
static void *befs_fast_follow_link(struct dentry *, struct nameidata *); |
|
|
|
|
static int befs_utf2nls(struct super_block *sb, const char *in, int in_len, |
|
|
|
|
char **out, int *out_len); |
|
|
|
|
static int befs_nls2utf(struct super_block *sb, const char *in, int in_len, |
|
|
|
@ -80,11 +79,6 @@ static const struct address_space_operations befs_aops = { |
|
|
|
|
.bmap = befs_bmap, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const struct inode_operations befs_fast_symlink_inode_operations = { |
|
|
|
|
.readlink = generic_readlink, |
|
|
|
|
.follow_link = befs_fast_follow_link, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const struct inode_operations befs_symlink_inode_operations = { |
|
|
|
|
.readlink = generic_readlink, |
|
|
|
|
.follow_link = befs_follow_link, |
|
|
|
@ -403,10 +397,12 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino) |
|
|
|
|
inode->i_op = &befs_dir_inode_operations; |
|
|
|
|
inode->i_fop = &befs_dir_operations; |
|
|
|
|
} else if (S_ISLNK(inode->i_mode)) { |
|
|
|
|
if (befs_ino->i_flags & BEFS_LONG_SYMLINK) |
|
|
|
|
if (befs_ino->i_flags & BEFS_LONG_SYMLINK) { |
|
|
|
|
inode->i_op = &befs_symlink_inode_operations; |
|
|
|
|
else |
|
|
|
|
inode->i_op = &befs_fast_symlink_inode_operations; |
|
|
|
|
} else { |
|
|
|
|
inode->i_link = befs_ino->i_data.symlink; |
|
|
|
|
inode->i_op = &simple_symlink_inode_operations; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
befs_error(sb, "Inode %lu is not a regular file, " |
|
|
|
|
"directory or symlink. THAT IS WRONG! BeFS has no " |
|
|
|
@ -497,16 +493,6 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd) |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void * |
|
|
|
|
befs_fast_follow_link(struct dentry *dentry, struct nameidata *nd) |
|
|
|
|
{ |
|
|
|
|
struct befs_inode_info *befs_ino = BEFS_I(d_inode(dentry)); |
|
|
|
|
|
|
|
|
|
nd_set_link(nd, befs_ino->i_data.symlink); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* UTF-8 to NLS charset convert routine |
|
|
|
|
*
|
|
|
|
|