Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
79a58d1f
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
79a58d1f
编写于
7月 06, 2007
作者:
S
Steve French
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CIFS] whitespace cleanup
checkpatch.pl redux Signed-off-by:
N
Steve French
<
sfrench@us.ibm.com
>
上级
d20acd09
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
232 addition
and
228 deletion
+232
-228
fs/cifs/smberr.h
fs/cifs/smberr.h
+4
-4
fs/cifs/transport.c
fs/cifs/transport.c
+113
-113
fs/cifs/xattr.c
fs/cifs/xattr.c
+115
-111
未找到文件。
fs/cifs/smberr.h
浏览文件 @
79a58d1f
...
...
@@ -4,8 +4,8 @@
* Copyright (c) International Business Machines Corp., 2002,2004
* Author(s): Steve French (sfrench@us.ibm.com)
*
* See Error Codes section of the SNIA CIFS Specification
* for more information
* See Error Codes section of the SNIA CIFS Specification
* for more information
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
...
...
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define SUCCESS 0x00
/* The request was successful. */
...
...
@@ -110,7 +110,7 @@
/* Below errors are used internally (do not come over the wire) for passthrough
from STATUS codes to POSIX only */
#define ErrTooManyLinks 0xFFFE
#define ErrTooManyLinks 0xFFFE
/* Following error codes may be generated with the ERRSRV error class.*/
...
...
fs/cifs/transport.c
浏览文件 @
79a58d1f
此差异已折叠。
点击以展开。
fs/cifs/xattr.c
浏览文件 @
79a58d1f
/*
* fs/cifs/xattr.c
*
* Copyright (c) International Business Machines Corp., 2003
* Copyright (c) International Business Machines Corp., 2003
, 2007
* Author(s): Steve French (sfrench@us.ibm.com)
*
* This library is free software; you can redistribute it and/or modify
...
...
@@ -40,47 +40,49 @@
int
cifs_removexattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
)
int
cifs_removexattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
)
{
int
rc
=
-
EOPNOTSUPP
;
#ifdef CONFIG_CIFS_XATTR
int
xid
;
struct
cifs_sb_info
*
cifs_sb
;
struct
cifsTconInfo
*
pTcon
;
struct
super_block
*
sb
;
char
*
full_path
;
if
(
direntry
==
NULL
)
struct
super_block
*
sb
;
char
*
full_path
;
if
(
direntry
==
NULL
)
return
-
EIO
;
if
(
direntry
->
d_inode
==
NULL
)
if
(
direntry
->
d_inode
==
NULL
)
return
-
EIO
;
sb
=
direntry
->
d_inode
->
i_sb
;
if
(
sb
==
NULL
)
if
(
sb
==
NULL
)
return
-
EIO
;
xid
=
GetXid
();
cifs_sb
=
CIFS_SB
(
sb
);
pTcon
=
cifs_sb
->
tcon
;
full_path
=
build_path_from_dentry
(
direntry
);
if
(
full_path
==
NULL
)
{
if
(
full_path
==
NULL
)
{
FreeXid
(
xid
);
return
-
ENOMEM
;
}
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
&&
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)))
{
cFYI
(
1
,(
"illegal xattr namespace %s (only user namespace supported)"
,
ea_name
));
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,
(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
&&
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)))
{
cFYI
(
1
,
(
"illegal xattr request %s (only user namespace supported)"
,
ea_name
));
/* BB what if no namespace prefix? */
/* Should we just pass them to server, except for
system and perhaps security prefixes? */
}
else
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
remove_ea_exit
;
ea_name
+=
5
;
/* skip past user. prefix */
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
NULL
,
ea_name
+=
5
;
/* skip past user. prefix */
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
NULL
,
(
__u16
)
0
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
}
...
...
@@ -91,23 +93,23 @@ int cifs_removexattr(struct dentry * direntry, const char * ea_name)
return
rc
;
}
int
cifs_setxattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
,
const
void
*
ea_value
,
size_t
value_size
,
int
flags
)
int
cifs_setxattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
,
const
void
*
ea_value
,
size_t
value_size
,
int
flags
)
{
int
rc
=
-
EOPNOTSUPP
;
#ifdef CONFIG_CIFS_XATTR
int
xid
;
struct
cifs_sb_info
*
cifs_sb
;
struct
cifsTconInfo
*
pTcon
;
struct
super_block
*
sb
;
char
*
full_path
;
struct
super_block
*
sb
;
char
*
full_path
;
if
(
direntry
==
NULL
)
if
(
direntry
==
NULL
)
return
-
EIO
;
if
(
direntry
->
d_inode
==
NULL
)
if
(
direntry
->
d_inode
==
NULL
)
return
-
EIO
;
sb
=
direntry
->
d_inode
->
i_sb
;
if
(
sb
==
NULL
)
if
(
sb
==
NULL
)
return
-
EIO
;
xid
=
GetXid
();
...
...
@@ -115,7 +117,7 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name,
pTcon
=
cifs_sb
->
tcon
;
full_path
=
build_path_from_dentry
(
direntry
);
if
(
full_path
==
NULL
)
{
if
(
full_path
==
NULL
)
{
FreeXid
(
xid
);
return
-
ENOMEM
;
}
...
...
@@ -123,67 +125,68 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name,
/* return alt name if available as pseudo attr */
/* if proc/fs/cifs/streamstoxattr is set then
search server for EAs or streams to
search server for EAs or streams to
returns as xattrs */
if
(
value_size
>
MAX_EA_VALUE_SIZE
)
{
cFYI
(
1
,(
"size of EA value too large"
));
if
(
value_size
>
MAX_EA_VALUE_SIZE
)
{
cFYI
(
1
,
(
"size of EA value too large"
));
kfree
(
full_path
);
FreeXid
(
xid
);
return
-
EOPNOTSUPP
;
}
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,
(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
set_ea_exit
;
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
{
cFYI
(
1
,(
"attempt to set cifs inode metadata"
));
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
{
cFYI
(
1
,
(
"attempt to set cifs inode metadata"
));
}
ea_name
+=
5
;
/* skip past user. prefix */
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
(
__u16
)
value_size
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
set_ea_exit
;
ea_name
+=
4
;
/* skip past os2. prefix */
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
rc
=
CIFSSMBSetEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
(
__u16
)
value_size
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
}
else
{
int
temp
;
temp
=
strncmp
(
ea_name
,
POSIX_ACL_XATTR_ACCESS
,
int
temp
;
temp
=
strncmp
(
ea_name
,
POSIX_ACL_XATTR_ACCESS
,
strlen
(
POSIX_ACL_XATTR_ACCESS
));
if
(
temp
==
0
)
{
#ifdef CONFIG_CIFS_POSIX
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBSetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
(
const
int
)
value_size
,
ACL_TYPE_ACCESS
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBSetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
(
const
int
)
value_size
,
ACL_TYPE_ACCESS
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
cFYI
(
1
,
(
"set POSIX ACL rc %d"
,
rc
));
cFYI
(
1
,
(
"set POSIX ACL rc %d"
,
rc
));
#else
cFYI
(
1
,(
"set POSIX ACL not supported"
));
cFYI
(
1
,
(
"set POSIX ACL not supported"
));
#endif
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_DEFAULT
,
strlen
(
POSIX_ACL_XATTR_DEFAULT
))
==
0
)
{
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_DEFAULT
,
strlen
(
POSIX_ACL_XATTR_DEFAULT
))
==
0
)
{
#ifdef CONFIG_CIFS_POSIX
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBSetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
(
const
int
)
value_size
,
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBSetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
(
const
int
)
value_size
,
ACL_TYPE_DEFAULT
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
cFYI
(
1
,
(
"set POSIX default ACL rc %d"
,
rc
));
cFYI
(
1
,
(
"set POSIX default ACL rc %d"
,
rc
));
#else
cFYI
(
1
,(
"set default POSIX ACL not supported"
));
cFYI
(
1
,
(
"set default POSIX ACL not supported"
));
#endif
}
else
{
cFYI
(
1
,
(
"illegal xattr request %s (only user namespace supported)"
,
ea_name
));
cFYI
(
1
,
(
"illegal xattr request %s (only user namespace supported)"
,
ea_name
));
/* BB what if no namespace prefix? */
/* Should we just pass them to server, except for
/* Should we just pass them to server, except for
system and perhaps security prefixes? */
}
}
...
...
@@ -195,23 +198,23 @@ int cifs_setxattr(struct dentry * direntry, const char * ea_name,
return
rc
;
}
ssize_t
cifs_getxattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
,
void
*
ea_value
,
size_t
buf_size
)
ssize_t
cifs_getxattr
(
struct
dentry
*
direntry
,
const
char
*
ea_name
,
void
*
ea_value
,
size_t
buf_size
)
{
ssize_t
rc
=
-
EOPNOTSUPP
;
#ifdef CONFIG_CIFS_XATTR
int
xid
;
struct
cifs_sb_info
*
cifs_sb
;
struct
cifsTconInfo
*
pTcon
;
struct
super_block
*
sb
;
char
*
full_path
;
struct
super_block
*
sb
;
char
*
full_path
;
if
(
direntry
==
NULL
)
if
(
direntry
==
NULL
)
return
-
EIO
;
if
(
direntry
->
d_inode
==
NULL
)
if
(
direntry
->
d_inode
==
NULL
)
return
-
EIO
;
sb
=
direntry
->
d_inode
->
i_sb
;
if
(
sb
==
NULL
)
if
(
sb
==
NULL
)
return
-
EIO
;
xid
=
GetXid
();
...
...
@@ -220,42 +223,42 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name,
pTcon
=
cifs_sb
->
tcon
;
full_path
=
build_path_from_dentry
(
direntry
);
if
(
full_path
==
NULL
)
{
if
(
full_path
==
NULL
)
{
FreeXid
(
xid
);
return
-
ENOMEM
;
}
/* return dos attributes as pseudo xattr */
/* return alt name if available as pseudo attr */
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
if
(
ea_name
==
NULL
)
{
cFYI
(
1
,
(
"Null xattr names not supported"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_USER_PREFIX
,
5
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
get_ea_exit
;
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
{
cFYI
(
1
,(
"attempt to query cifs inode metadata"
));
if
(
strncmp
(
ea_name
,
CIFS_XATTR_DOS_ATTRIB
,
14
)
==
0
)
{
cFYI
(
1
,
(
"attempt to query cifs inode metadata"
));
/* revalidate/getattr then populate from inode */
}
/* BB add else when above is implemented */
ea_name
+=
5
;
/* skip past user. prefix */
rc
=
CIFSSMBQueryEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
rc
=
CIFSSMBQueryEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
buf_size
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_OS2_PREFIX
,
4
)
==
0
)
{
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
goto
get_ea_exit
;
ea_name
+=
4
;
/* skip past os2. prefix */
rc
=
CIFSSMBQueryEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
rc
=
CIFSSMBQueryEA
(
xid
,
pTcon
,
full_path
,
ea_name
,
ea_value
,
buf_size
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_ACCESS
,
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_ACCESS
,
strlen
(
POSIX_ACL_XATTR_ACCESS
))
==
0
)
{
#ifdef CONFIG_CIFS_POSIX
if
(
sb
->
s_flags
&
MS_POSIXACL
)
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBGetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
buf_size
,
ACL_TYPE_ACCESS
,
ea_value
,
buf_size
,
ACL_TYPE_ACCESS
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
/* else if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
__u16 fid;
...
...
@@ -272,39 +275,40 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name,
CIFSSMBClose(xid, pTcon, fid);
}
} */
/* BB enable after fixing up return data */
#else
cFYI
(
1
,(
"query POSIX ACL not supported yet"
));
#else
cFYI
(
1
,
(
"query POSIX ACL not supported yet"
));
#endif
/* CONFIG_CIFS_POSIX */
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_DEFAULT
,
}
else
if
(
strncmp
(
ea_name
,
POSIX_ACL_XATTR_DEFAULT
,
strlen
(
POSIX_ACL_XATTR_DEFAULT
))
==
0
)
{
#ifdef CONFIG_CIFS_POSIX
if
(
sb
->
s_flags
&
MS_POSIXACL
)
if
(
sb
->
s_flags
&
MS_POSIXACL
)
rc
=
CIFSSMBGetPosixACL
(
xid
,
pTcon
,
full_path
,
ea_value
,
buf_size
,
ACL_TYPE_DEFAULT
,
ea_value
,
buf_size
,
ACL_TYPE_DEFAULT
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
#else
cFYI
(
1
,(
"query POSIX default ACL not supported yet"
));
#else
cFYI
(
1
,
(
"query POSIX default ACL not supported yet"
));
#endif
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_TRUSTED_PREFIX
,
XATTR_TRUSTED_PREFIX_LEN
)
==
0
)
{
cFYI
(
1
,(
"Trusted xattr namespace not supported yet"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_SECURITY_PREFIX
,
XATTR_SECURITY_PREFIX_LEN
)
==
0
)
{
cFYI
(
1
,(
"Security xattr namespace not supported yet"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_TRUSTED_PREFIX
,
XATTR_TRUSTED_PREFIX_LEN
)
==
0
)
{
cFYI
(
1
,
(
"Trusted xattr namespace not supported yet"
));
}
else
if
(
strncmp
(
ea_name
,
CIFS_XATTR_SECURITY_PREFIX
,
XATTR_SECURITY_PREFIX_LEN
)
==
0
)
{
cFYI
(
1
,
(
"Security xattr namespace not supported yet"
));
}
else
{
cFYI
(
1
,(
"illegal xattr name request %s (only user namespace supported)"
,
ea_name
));
cFYI
(
1
,
(
"illegal xattr request %s (only user namespace supported)"
,
ea_name
));
}
/* We could add an additional check for streams ie
/* We could add an additional check for streams ie
if proc/fs/cifs/streamstoxattr is set then
search server for EAs or streams to
search server for EAs or streams to
returns as xattrs */
if
(
rc
==
-
EINVAL
)
rc
=
-
EOPNOTSUPP
;
if
(
rc
==
-
EINVAL
)
rc
=
-
EOPNOTSUPP
;
get_ea_exit:
kfree
(
full_path
);
...
...
@@ -313,34 +317,34 @@ ssize_t cifs_getxattr(struct dentry * direntry, const char * ea_name,
return
rc
;
}
ssize_t
cifs_listxattr
(
struct
dentry
*
direntry
,
char
*
data
,
size_t
buf_size
)
ssize_t
cifs_listxattr
(
struct
dentry
*
direntry
,
char
*
data
,
size_t
buf_size
)
{
ssize_t
rc
=
-
EOPNOTSUPP
;
#ifdef CONFIG_CIFS_XATTR
int
xid
;
struct
cifs_sb_info
*
cifs_sb
;
struct
cifsTconInfo
*
pTcon
;
struct
super_block
*
sb
;
char
*
full_path
;
struct
super_block
*
sb
;
char
*
full_path
;
if
(
direntry
==
NULL
)
if
(
direntry
==
NULL
)
return
-
EIO
;
if
(
direntry
->
d_inode
==
NULL
)
if
(
direntry
->
d_inode
==
NULL
)
return
-
EIO
;
sb
=
direntry
->
d_inode
->
i_sb
;
if
(
sb
==
NULL
)
if
(
sb
==
NULL
)
return
-
EIO
;
cifs_sb
=
CIFS_SB
(
sb
);
pTcon
=
cifs_sb
->
tcon
;
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
if
(
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_NO_XATTR
)
return
-
EOPNOTSUPP
;
xid
=
GetXid
();
full_path
=
build_path_from_dentry
(
direntry
);
if
(
full_path
==
NULL
)
{
if
(
full_path
==
NULL
)
{
FreeXid
(
xid
);
return
-
ENOMEM
;
}
...
...
@@ -348,11 +352,11 @@ ssize_t cifs_listxattr(struct dentry * direntry, char * data, size_t buf_size)
/* return alt name if available as pseudo attr */
/* if proc/fs/cifs/streamstoxattr is set then
search server for EAs or streams to
search server for EAs or streams to
returns as xattrs */
rc
=
CIFSSMBQAllEAs
(
xid
,
pTcon
,
full_path
,
data
,
buf_size
,
rc
=
CIFSSMBQAllEAs
(
xid
,
pTcon
,
full_path
,
data
,
buf_size
,
cifs_sb
->
local_nls
,
cifs_sb
->
mnt_cifs_flags
&
cifs_sb
->
mnt_cifs_flags
&
CIFS_MOUNT_MAP_SPECIAL_CHR
);
kfree
(
full_path
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录