Whamcloud - gitweb
git://git.whamcloud.com
/
tools
/
e2fsprogs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-16067 misc: cleanup compiler warnings
[tools/e2fsprogs.git]
/
lib
/
ext2fs
/
ext_attr.c
diff --git
a/lib/ext2fs/ext_attr.c
b/lib/ext2fs/ext_attr.c
index
45135c9
..
ad51371
100644
(file)
--- a/
lib/ext2fs/ext_attr.c
+++ b/
lib/ext2fs/ext_attr.c
@@
-379,6
+379,7
@@
static struct ea_name_index ea_names[] = {
{2, "system.posix_acl_access"},
{8, "system.richacl"},
{6, "security."},
+ {5, "lustre."},
{4, "trusted."},
{7, "system."},
{1, "user."},
@@
-1021,30
+1022,19
@@
static void xattrs_free_keys(struct ext2_xattr_handle *h)
h->ibody_count = 0;
}
-errcode_t ext2fs_xattrs_read(struct ext2_xattr_handle *handle)
+/* fetch xattrs from an already-loaded inode */
+errcode_t ext2fs_xattrs_read_inode(struct ext2_xattr_handle *handle,
+ struct ext2_inode_large *inode)
{
- struct ext2_inode_large *inode;
+
struct ext2_ext_attr_header *header;
__u32 ea_inode_magic;
unsigned int storage_size;
char *start, *block_buf = NULL;
blk64_t blk;
- size_t i;
errcode_t err;
EXT2_CHECK_MAGIC(handle, EXT2_ET_MAGIC_EA_HANDLE);
- i = EXT2_INODE_SIZE(handle->fs->super);
- if (i < sizeof(*inode))
- i = sizeof(*inode);
- err = ext2fs_get_memzero(i, &inode);
- if (err)
- return err;
-
- err = ext2fs_read_inode_full(handle->fs, handle->ino,
- (struct ext2_inode *)inode,
- EXT2_INODE_SIZE(handle->fs->super));
- if (err)
- goto out;
xattrs_free_keys(handle);
@@
-1080,7
+1070,7
@@
errcode_t ext2fs_xattrs_read(struct ext2_xattr_handle *handle)
read_ea_block:
/* Look for EA in a separate EA block */
- blk = ext2fs_file_acl_block(handle->fs,
(struct ext2_inode *)inode
);
+ blk = ext2fs_file_acl_block(handle->fs,
EXT2_INODE(inode)
);
if (blk != 0) {
if ((blk < handle->fs->super->s_first_data_block) ||
(blk >= ext2fs_blocks_count(handle->fs->super))) {
@@
-1111,26
+1101,46
@@
read_ea_block:
err = read_xattrs_from_buffer(handle, inode,
(struct ext2_ext_attr_entry *) start,
storage_size, block_buf);
- if (err)
- goto out3;
+ }
+out3:
+ if (block_buf)
ext2fs_free_mem(&block_buf);
- }
+out:
+ return err;
+}
- ext2fs_free_mem(&block_buf);
- ext2fs_free_mem(&inode);
- return 0;
+errcode_t ext2fs_xattrs_read(struct ext2_xattr_handle *handle)
+{
+ struct ext2_inode_large *inode;
+ size_t inode_size = EXT2_INODE_SIZE(handle->fs->super);
+ errcode_t err;
+
+ EXT2_CHECK_MAGIC(handle, EXT2_ET_MAGIC_EA_HANDLE);
+
+ if (inode_size < sizeof(*inode))
+ inode_size = sizeof(*inode);
+ err = ext2fs_get_memzero(inode_size, &inode);
+ if (err)
+ return err;
+
+ err = ext2fs_read_inode_full(handle->fs, handle->ino, EXT2_INODE(inode),
+ EXT2_INODE_SIZE(handle->fs->super));
+ if (err)
+ goto out;
+
+ err = ext2fs_xattrs_read_inode(handle, inode);
-out3:
- ext2fs_free_mem(&block_buf);
out:
ext2fs_free_mem(&inode);
+
return err;
}
errcode_t ext2fs_xattrs_iterate(struct ext2_xattr_handle *h,
int (*func)(char *name, char *value,
- size_t value_len, void *data),
+ size_t value_len,
+ ext2_ino_t inode_num, void *data),
void *data)
{
struct ext2_xattr *x;
@@
-1139,7
+1149,7
@@
errcode_t ext2fs_xattrs_iterate(struct ext2_xattr_handle *h,
EXT2_CHECK_MAGIC(h, EXT2_ET_MAGIC_EA_HANDLE);
for (x = h->attrs; x < h->attrs + h->count; x++) {
- ret = func(x->name, x->value, x->value_len, data);
+ ret = func(x->name, x->value, x->value_len,
x->ea_ino,
data);
if (ret & XATTR_CHANGED)
dirty = 1;
if (ret & XATTR_ABORT)