struct ext4_xattr_item *b)
{
int result;
+ if (a->in_inode && !b->in_inode)
+ return -1;
+
+ if (!a->in_inode && b->in_inode)
+ return 1;
+
result = a->name_index - b->name_index;
if (result)
return result;
memset(&item->node, 0, sizeof(item->node));
memcpy(item->name, name, name_len);
+ if (name_index == EXT4_XATTR_INDEX_SYSTEM &&
+ name_len == 4 &&
+ !memcmp(name, "data", 4))
+ item->in_inode = true;
+ else
+ item->in_inode = false;
+
return item;
}
.name = (char *)name, /*RB_FIND - won't touch this string*/
.name_len = name_len,
};
+ if (name_index == EXT4_XATTR_INDEX_SYSTEM &&
+ name_len == 4 &&
+ !memcmp(name, "data", 4))
+ tmp.in_inode = true;
return RB_FIND(ext4_xattr_tree, &xattr_ref->root, &tmp);
}
block_data = (char *)block_header + block_size_rem;
block_size_rem -= sizeof(struct ext4_xattr_header);
- xattr_ref->block.dirty = true;
+ ext4_bcache_set_dirty(xattr_ref->block.buf);
} else {
/* We don't need an extra block.*/
if (xattr_ref->block_loaded) {
&xattr_ref->fs->sb, 0);
xattr_ref->inode_ref->dirty = true;
- xattr_ref->block.dirty = true;
+ ext4_bcache_set_dirty(xattr_ref->block.buf);
}
}
}
ext4_xattr_set_block_checksum(xattr_ref->inode_ref,
xattr_ref->block.lb_id,
block_header);
- xattr_ref->block.dirty = true;
+ ext4_bcache_set_dirty(xattr_ref->block.buf);
}
Finish:
static const struct xattr_prefix prefix_tbl[] = {
{"user.", EXT4_XATTR_INDEX_USER},
- {"system.", EXT4_XATTR_INDEX_SYSTEM},
{"system.posix_acl_access", EXT4_XATTR_INDEX_POSIX_ACL_ACCESS},
{"system.posix_acl_default", EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT},
+ {"trusted.", EXT4_XATTR_INDEX_TRUSTED},
+ {"security.", EXT4_XATTR_INDEX_SECURITY},
+ {"system.", EXT4_XATTR_INDEX_SYSTEM},
+ {"system.richacl", EXT4_XATTR_INDEX_RICHACL},
{NULL, 0},
};