提交 600362f9 编写于 作者: O Oleg Drokin 提交者: Greg Kroah-Hartman

staging/lustre: Remove unused lustre_acl_xattr_merge2posix()

Apparently this is only used only on the metadata server.
Reported-by: NArnd Bergmann <arnd@arndb.de>
Signed-off-by: NOleg Drokin <green@linuxhacker.ru>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 f24f47a4
......@@ -80,10 +80,6 @@ extern void
lustre_posix_acl_xattr_free(posix_acl_xattr_header *header, int size);
extern void
lustre_ext_acl_xattr_free(ext_acl_xattr_header *header);
extern int
lustre_acl_xattr_merge2posix(posix_acl_xattr_header *posix_header, int size,
ext_acl_xattr_header *ext_header,
posix_acl_xattr_header **out);
extern ext_acl_xattr_header *
lustre_acl_xattr_merge2ext(posix_acl_xattr_header *posix_header, int size,
ext_acl_xattr_header *ext_header);
......
......@@ -286,125 +286,6 @@ lustre_ext_acl_xattr_search(ext_acl_xattr_header *header,
return NULL;
}
/*
* Merge the posix ACL and the extended ACL into new posix ACL.
*/
int lustre_acl_xattr_merge2posix(posix_acl_xattr_header *posix_header, int size,
ext_acl_xattr_header *ext_header,
posix_acl_xattr_header **out)
{
int posix_count, posix_size, i, j;
int ext_count = le32_to_cpu(ext_header->a_count), pos = 0, rc = 0;
posix_acl_xattr_entry pe = {ACL_MASK, 0, ACL_UNDEFINED_ID};
posix_acl_xattr_header *new;
ext_acl_xattr_entry *ee, ae;
lustre_posix_acl_cpu_to_le(&pe, &pe);
ee = lustre_ext_acl_xattr_search(ext_header, &pe, &pos);
if (ee == NULL || le32_to_cpu(ee->e_stat) == ES_DEL) {
/* there are only base ACL entries at most. */
posix_count = 3;
posix_size = CFS_ACL_XATTR_SIZE(posix_count, posix_acl_xattr);
new = kzalloc(posix_size, GFP_NOFS);
if (unlikely(new == NULL))
return -ENOMEM;
new->a_version = cpu_to_le32(CFS_ACL_XATTR_VERSION);
for (i = 0, j = 0; i < ext_count; i++) {
lustre_ext_acl_le_to_cpu(&ae,
&ext_header->a_entries[i]);
switch (ae.e_tag) {
case ACL_USER_OBJ:
case ACL_GROUP_OBJ:
case ACL_OTHER:
if (ae.e_id != ACL_UNDEFINED_ID) {
rc = -EIO;
goto _out;
}
if (ae.e_stat != ES_DEL) {
new->a_entries[j].e_tag =
ext_header->a_entries[i].e_tag;
new->a_entries[j].e_perm =
ext_header->a_entries[i].e_perm;
new->a_entries[j++].e_id =
ext_header->a_entries[i].e_id;
}
break;
case ACL_MASK:
case ACL_USER:
case ACL_GROUP:
if (ae.e_stat == ES_DEL)
break;
default:
rc = -EIO;
goto _out;
}
}
} else {
/* maybe there are valid ACL_USER or ACL_GROUP entries in the
* original server-side ACL, they are regarded as ES_UNC stat.*/
int ori_posix_count;
if (unlikely(size < 0))
return -EINVAL;
else if (!size)
ori_posix_count = 0;
else
ori_posix_count =
CFS_ACL_XATTR_COUNT(size, posix_acl_xattr);
posix_count = ori_posix_count + ext_count;
posix_size =
CFS_ACL_XATTR_SIZE(posix_count, posix_acl_xattr);
new = kzalloc(posix_size, GFP_NOFS);
if (unlikely(new == NULL))
return -ENOMEM;
new->a_version = cpu_to_le32(CFS_ACL_XATTR_VERSION);
/* 1. process the unchanged ACL entries
* in the original server-side ACL. */
pos = 0;
for (i = 0, j = 0; i < ori_posix_count; i++) {
ee = lustre_ext_acl_xattr_search(ext_header,
&posix_header->a_entries[i], &pos);
if (ee == NULL)
memcpy(&new->a_entries[j++],
&posix_header->a_entries[i],
sizeof(posix_acl_xattr_entry));
}
/* 2. process the non-deleted entries
* from client-side extended ACL. */
for (i = 0; i < ext_count; i++) {
if (le16_to_cpu(ext_header->a_entries[i].e_stat) !=
ES_DEL) {
new->a_entries[j].e_tag =
ext_header->a_entries[i].e_tag;
new->a_entries[j].e_perm =
ext_header->a_entries[i].e_perm;
new->a_entries[j++].e_id =
ext_header->a_entries[i].e_id;
}
}
}
/* free unused space. */
rc = lustre_posix_acl_xattr_reduce_space(&new, posix_count, j);
if (rc >= 0) {
posix_size = rc;
*out = new;
rc = 0;
}
_out:
if (rc) {
kfree(new);
posix_size = rc;
}
return posix_size;
}
EXPORT_SYMBOL(lustre_acl_xattr_merge2posix);
/*
* Merge the posix ACL and the extended ACL into new extended ACL.
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册