Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
4acf381e
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4acf381e
编写于
5月 17, 2013
作者:
A
Al Viro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[readdir] convert reiserfs
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
上级
956ce208
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
23 deletion
+19
-23
fs/reiserfs/dir.c
fs/reiserfs/dir.c
+11
-15
fs/reiserfs/reiserfs.h
fs/reiserfs/reiserfs.h
+1
-1
fs/reiserfs/xattr.c
fs/reiserfs/xattr.c
+7
-7
未找到文件。
fs/reiserfs/dir.c
浏览文件 @
4acf381e
...
...
@@ -13,14 +13,14 @@
extern
const
struct
reiserfs_key
MIN_KEY
;
static
int
reiserfs_readdir
(
struct
file
*
,
void
*
,
filldir_t
);
static
int
reiserfs_readdir
(
struct
file
*
,
struct
dir_context
*
);
static
int
reiserfs_dir_fsync
(
struct
file
*
filp
,
loff_t
start
,
loff_t
end
,
int
datasync
);
const
struct
file_operations
reiserfs_dir_operations
=
{
.
llseek
=
generic_file_llseek
,
.
read
=
generic_read_dir
,
.
readdir
=
reiserfs_readdir
,
.
iterate
=
reiserfs_readdir
,
.
fsync
=
reiserfs_dir_fsync
,
.
unlocked_ioctl
=
reiserfs_ioctl
,
#ifdef CONFIG_COMPAT
...
...
@@ -58,8 +58,7 @@ static inline bool is_privroot_deh(struct dentry *dir,
deh
->
deh_objectid
==
INODE_PKEY
(
privroot
->
d_inode
)
->
k_objectid
);
}
int
reiserfs_readdir_dentry
(
struct
dentry
*
dentry
,
void
*
dirent
,
filldir_t
filldir
,
loff_t
*
pos
)
int
reiserfs_readdir_dentry
(
struct
dentry
*
dentry
,
struct
dir_context
*
ctx
)
{
struct
inode
*
inode
=
dentry
->
d_inode
;
struct
cpu_key
pos_key
;
/* key of current position in the directory (key of directory entry) */
...
...
@@ -81,7 +80,7 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
/* form key for search the next directory entry using f_pos field of
file structure */
make_cpu_key
(
&
pos_key
,
inode
,
*
pos
?:
DOT_OFFSET
,
TYPE_DIRENTRY
,
3
);
make_cpu_key
(
&
pos_key
,
inode
,
ctx
->
pos
?:
DOT_OFFSET
,
TYPE_DIRENTRY
,
3
);
next_pos
=
cpu_key_k_offset
(
&
pos_key
);
path_to_entry
.
reada
=
PATH_READA
;
...
...
@@ -126,7 +125,6 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
entry_num
++
,
deh
++
)
{
int
d_reclen
;
char
*
d_name
;
off_t
d_off
;
ino_t
d_ino
;
if
(
!
de_visible
(
deh
))
...
...
@@ -158,8 +156,7 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
if
(
is_privroot_deh
(
dentry
,
deh
))
continue
;
d_off
=
deh_offset
(
deh
);
*
pos
=
d_off
;
ctx
->
pos
=
deh_offset
(
deh
);
d_ino
=
deh_objectid
(
deh
);
if
(
d_reclen
<=
32
)
{
local_buf
=
small_buf
;
...
...
@@ -187,9 +184,9 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
* the write lock here for other waiters
*/
reiserfs_write_unlock
(
inode
->
i_sb
);
if
(
filldir
(
dirent
,
local_buf
,
d_reclen
,
d_off
,
d_ino
,
DT_UNKNOWN
)
<
0
)
{
if
(
!
dir_emit
(
ctx
,
local_buf
,
d_reclen
,
d_ino
,
DT_UNKNOWN
))
{
reiserfs_write_lock
(
inode
->
i_sb
);
if
(
local_buf
!=
small_buf
)
{
kfree
(
local_buf
);
...
...
@@ -237,7 +234,7 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
}
/* while */
end:
*
pos
=
next_pos
;
ctx
->
pos
=
next_pos
;
pathrelse
(
&
path_to_entry
);
reiserfs_check_path
(
&
path_to_entry
);
out:
...
...
@@ -245,10 +242,9 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
return
ret
;
}
static
int
reiserfs_readdir
(
struct
file
*
file
,
void
*
dirent
,
filldir_t
filldir
)
static
int
reiserfs_readdir
(
struct
file
*
file
,
struct
dir_context
*
ctx
)
{
struct
dentry
*
dentry
=
file
->
f_path
.
dentry
;
return
reiserfs_readdir_dentry
(
dentry
,
dirent
,
filldir
,
&
file
->
f_pos
);
return
reiserfs_readdir_dentry
(
file
->
f_path
.
dentry
,
ctx
);
}
/* compose directory item containing "." and ".." entries (entries are
...
...
fs/reiserfs/reiserfs.h
浏览文件 @
4acf381e
...
...
@@ -2709,7 +2709,7 @@ extern const struct inode_operations reiserfs_dir_inode_operations;
extern
const
struct
inode_operations
reiserfs_symlink_inode_operations
;
extern
const
struct
inode_operations
reiserfs_special_inode_operations
;
extern
const
struct
file_operations
reiserfs_dir_operations
;
int
reiserfs_readdir_dentry
(
struct
dentry
*
,
void
*
,
filldir_t
,
loff_
t
*
);
int
reiserfs_readdir_dentry
(
struct
dentry
*
,
struct
dir_contex
t
*
);
/* tail_conversion.c */
int
direct2indirect
(
struct
reiserfs_transaction_handle
*
,
struct
inode
*
,
...
...
fs/reiserfs/xattr.c
浏览文件 @
4acf381e
...
...
@@ -171,6 +171,7 @@ static struct dentry *open_xa_dir(const struct inode *inode, int flags)
* modifying extended attributes. This includes operations such as permissions
* or ownership changes, object deletions, etc. */
struct
reiserfs_dentry_buf
{
struct
dir_context
ctx
;
struct
dentry
*
xadir
;
int
count
;
struct
dentry
*
dentries
[
8
];
...
...
@@ -223,9 +224,8 @@ static int reiserfs_for_each_xattr(struct inode *inode,
{
struct
dentry
*
dir
;
int
i
,
err
=
0
;
loff_t
pos
=
0
;
struct
reiserfs_dentry_buf
buf
=
{
.
c
ount
=
0
,
.
c
tx
.
actor
=
fill_with_dentries
,
};
/* Skip out, an xattr has no xattrs associated with it */
...
...
@@ -249,7 +249,7 @@ static int reiserfs_for_each_xattr(struct inode *inode,
reiserfs_write_lock
(
inode
->
i_sb
);
buf
.
xadir
=
dir
;
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
,
fill_with_dentries
,
&
pos
);
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
.
ctx
);
while
((
err
==
0
||
err
==
-
ENOSPC
)
&&
buf
.
count
)
{
err
=
0
;
...
...
@@ -266,8 +266,7 @@ static int reiserfs_for_each_xattr(struct inode *inode,
}
buf
.
count
=
0
;
if
(
!
err
)
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
,
fill_with_dentries
,
&
pos
);
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
.
ctx
);
}
mutex_unlock
(
&
dir
->
d_inode
->
i_mutex
);
...
...
@@ -800,6 +799,7 @@ int reiserfs_removexattr(struct dentry *dentry, const char *name)
}
struct
listxattr_buf
{
struct
dir_context
ctx
;
size_t
size
;
size_t
pos
;
char
*
buf
;
...
...
@@ -845,8 +845,8 @@ ssize_t reiserfs_listxattr(struct dentry * dentry, char *buffer, size_t size)
{
struct
dentry
*
dir
;
int
err
=
0
;
loff_t
pos
=
0
;
struct
listxattr_buf
buf
=
{
.
ctx
.
actor
=
listxattr_filler
,
.
dentry
=
dentry
,
.
buf
=
buffer
,
.
size
=
buffer
?
size
:
0
,
...
...
@@ -868,7 +868,7 @@ ssize_t reiserfs_listxattr(struct dentry * dentry, char *buffer, size_t size)
}
mutex_lock_nested
(
&
dir
->
d_inode
->
i_mutex
,
I_MUTEX_XATTR
);
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
,
listxattr_filler
,
&
pos
);
err
=
reiserfs_readdir_dentry
(
dir
,
&
buf
.
ctx
);
mutex_unlock
(
&
dir
->
d_inode
->
i_mutex
);
if
(
!
err
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录