Lines Matching refs:entry
31 * | entry 1 | |
32 * | entry 2 | | growing downwards
33 * | entry 3 | v
41 * The header is followed by multiple entry descriptors. In disk blocks, the
42 * entry descriptors are kept sorted. In inodes, they are unsorted. The
192 struct ext4_xattr_entry *entry, void *end, void *value_start,
195 struct ext4_xattr_entry *e = entry;
241 while (!IS_LAST_ENTRY(entry)) {
242 u32 size = le32_to_cpu(entry->e_value_size);
243 unsigned long ea_ino = le32_to_cpu(entry->e_value_inum);
259 if (size != 0 && entry->e_value_inum == 0) {
260 u16 offs = le16_to_cpu(entry->e_value_offs);
281 entry = EXT4_XATTR_NEXT(entry);
326 struct ext4_xattr_entry *entry, *next;
333 for (entry = *pentry; !IS_LAST_ENTRY(entry); entry = next) {
334 next = EXT4_XATTR_NEXT(entry);
339 cmp = name_index - entry->e_name_index;
341 cmp = name_len - entry->e_name_len;
343 cmp = memcmp(name, entry->e_name, name_len);
347 *pentry = entry;
470 /* Remove entry from mbcache when EA inode is getting evicted */
477 /* Wait for entry to get unused so that we can remove it */
487 struct ext4_xattr_entry *entry, void *buffer,
497 if (entry) {
500 /* Verify entry hash. */
502 e_hash = ext4_xattr_hash_entry(entry->e_name, entry->e_name_len,
505 if (e_hash == entry->e_hash)
509 * Not good. Maybe the entry hash was calculated
512 e_hash = ext4_xattr_hash_entry_signed(entry->e_name, entry->e_name_len,
515 if (e_hash != entry->e_hash)
528 ext4_xattr_inode_get(struct inode *inode, struct ext4_xattr_entry *entry,
535 err = ext4_xattr_inode_iget(inode, le32_to_cpu(entry->e_value_inum),
536 le32_to_cpu(entry->e_hash), &ea_inode);
544 "ea_inode file size=%llu entry size=%zu",
555 err = ext4_xattr_inode_verify_hashes(ea_inode, entry, buffer,
578 struct ext4_xattr_entry *entry;
600 entry = BFIRST(bh);
602 error = xattr_find_entry(inode, &entry, end, name_index, name, 1);
605 size = le32_to_cpu(entry->e_value_size);
612 if (entry->e_value_inum) {
613 error = ext4_xattr_inode_get(inode, entry, buffer,
618 u16 offset = le16_to_cpu(entry->e_value_offs);
638 struct ext4_xattr_entry *entry;
656 entry = IFIRST(header);
657 error = xattr_find_entry(inode, &entry, end, name_index, name, 0);
660 size = le32_to_cpu(entry->e_value_size);
667 if (entry->e_value_inum) {
668 error = ext4_xattr_inode_get(inode, entry, buffer,
673 u16 offset = le16_to_cpu(entry->e_value_offs);
721 ext4_xattr_list_entries(struct dentry *dentry, struct ext4_xattr_entry *entry,
726 for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry)) {
729 prefix = ext4_xattr_prefix(entry->e_name_index, dentry);
732 size_t size = prefix_len + entry->e_name_len + 1;
739 memcpy(buffer, entry->e_name, entry->e_name_len);
740 buffer += entry->e_name_len;
869 struct ext4_xattr_entry *entry;
887 for (entry = IFIRST(header); !IS_LAST_ENTRY(entry);
888 entry = EXT4_XATTR_NEXT(entry))
889 if (entry->e_value_inum)
905 for (entry = BFIRST(bh); !IS_LAST_ENTRY(entry);
906 entry = EXT4_XATTR_NEXT(entry))
907 if (entry->e_value_inum)
1025 struct ext4_xattr_entry *entry = BFIRST(block_bh);
1027 for (; !IS_LAST_ENTRY(entry); entry = EXT4_XATTR_NEXT(entry))
1028 if (entry->e_value_inum)
1100 struct ext4_xattr_entry *entry;
1105 for (entry = first; !IS_LAST_ENTRY(entry);
1106 entry = EXT4_XATTR_NEXT(entry)) {
1107 if (!entry->e_value_inum)
1109 ea_ino = le32_to_cpu(entry->e_value_inum);
1111 le32_to_cpu(entry->e_hash),
1127 failed_entry = entry;
1129 for (entry = first; entry != failed_entry;
1130 entry = EXT4_XATTR_NEXT(entry)) {
1131 if (!entry->e_value_inum)
1133 ea_ino = le32_to_cpu(entry->e_value_inum);
1135 le32_to_cpu(entry->e_hash),
1178 struct ext4_xattr_entry *entry;
1187 for (entry = first; !IS_LAST_ENTRY(entry);
1188 entry = EXT4_XATTR_NEXT(entry)) {
1189 if (!entry->e_value_inum)
1191 ea_ino = le32_to_cpu(entry->e_value_inum);
1193 le32_to_cpu(entry->e_hash),
1235 le32_to_cpu(entry->e_value_size));
1243 entry->e_value_inum = 0;
1244 entry->e_value_size = 0;
1845 * Feed crc32c hash instead of the raw value for entry
1997 * If existing entry points to an xattr inode, we need
2000 * original block. In this case, make the entry look
2576 static void ext4_xattr_shift_entries(struct ext4_xattr_entry *entry,
2580 struct ext4_xattr_entry *last = entry;
2599 * Move xattr pointed to by 'entry' from inode into external xattr block
2603 struct ext4_xattr_entry *entry)
2608 size_t value_size = le32_to_cpu(entry->e_value_size);
2612 .name_index = entry->e_name_index,
2613 .in_inode = !!entry->e_value_inum,
2621 b_entry_name = kmalloc(entry->e_name_len + 1, GFP_NOFS);
2632 /* Save the entry name and the entry value */
2633 if (entry->e_value_inum) {
2640 error = ext4_xattr_inode_get(inode, entry, buffer, value_size);
2644 size_t value_offs = le16_to_cpu(entry->e_value_offs);
2648 memcpy(b_entry_name, entry->e_name, entry->e_name_len);
2649 b_entry_name[entry->e_name_len] = '\0';
2666 /* Move ea entry from the inode into the block */
2671 /* Remove the chosen entry from the inode */
2697 struct ext4_xattr_entry *entry;
2699 unsigned int entry_size; /* EA entry size */
2700 unsigned int total_size; /* EA entry size + value size */
2705 entry = NULL;
2709 /* Find the entry best suited to be pushed into EA block */
2725 entry = last;
2731 if (entry == NULL) {
2734 entry = small_entry;
2737 entry_size = EXT4_XATTR_LEN(entry->e_name_len);
2739 if (!entry->e_value_inum)
2741 le32_to_cpu(entry->e_value_size));
2743 entry);
2926 struct ext4_xattr_entry *entry;
2981 for (entry = BFIRST(bh); !IS_LAST_ENTRY(entry);
2982 entry = EXT4_XATTR_NEXT(entry)) {
2983 if (!entry->e_value_inum)
2986 le32_to_cpu(entry->e_value_inum),
2987 le32_to_cpu(entry->e_hash),
2992 le32_to_cpu(entry->e_value_size));
3035 * Create a new entry in the extended attribute block cache, and insert
3036 * it unless such an entry is already in the cache.
3200 * Re-compute the extended attribute hash value after an entry has changed.
3210 /* Block is not shared if an entry's hash value == 0 */