Lines Matching defs:ea_inode

124 void ext4_xattr_inode_set_class(struct inode *ea_inode)
126 struct ext4_inode_info *ei = EXT4_I(ea_inode);
128 lockdep_set_subclass(&ea_inode->i_rwsem, 1);
321 static u64 ext4_xattr_inode_get_ref(struct inode *ea_inode)
323 return ((u64)ea_inode->i_ctime.tv_sec << 32) |
324 (u32) inode_peek_iversion_raw(ea_inode);
327 static void ext4_xattr_inode_set_ref(struct inode *ea_inode, u64 ref_count)
329 ea_inode->i_ctime.tv_sec = (u32)(ref_count >> 32);
330 inode_set_iversion_raw(ea_inode, ref_count & 0xffffffff);
333 static u32 ext4_xattr_inode_get_hash(struct inode *ea_inode)
335 return (u32)ea_inode->i_atime.tv_sec;
338 static void ext4_xattr_inode_set_hash(struct inode *ea_inode, u32 hash)
340 ea_inode->i_atime.tv_sec = hash;
346 static int ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t size)
348 int blocksize = 1 << ea_inode->i_blkbits;
349 int bh_count = (size + blocksize - 1) >> ea_inode->i_blkbits;
361 ret = ext4_bread_batch(ea_inode, 0 /* block */, bh_count,
367 /* There shouldn't be any holes in ea_inode. */
388 u32 ea_inode_hash, struct inode **ea_inode)
417 * backpointer from ea_inode to the parent inode.
430 *ea_inode = inode;
450 ext4_xattr_inode_verify_hashes(struct inode *ea_inode,
457 hash = ext4_xattr_inode_hash(EXT4_SB(ea_inode->i_sb), buffer, size);
458 if (hash != ext4_xattr_inode_get_hash(ea_inode))
482 struct inode *ea_inode;
486 le32_to_cpu(entry->e_hash), &ea_inode);
488 ea_inode = NULL;
492 if (i_size_read(ea_inode) != size) {
493 ext4_warning_inode(ea_inode,
494 "ea_inode file size=%llu entry size=%zu",
495 i_size_read(ea_inode), size);
500 err = ext4_xattr_inode_read(ea_inode, buffer, size);
504 if (!ext4_test_inode_state(ea_inode, EXT4_STATE_LUSTRE_EA_INODE)) {
505 err = ext4_xattr_inode_verify_hashes(ea_inode, entry, buffer,
508 ext4_warning_inode(ea_inode,
515 ext4_xattr_inode_get_hash(ea_inode),
516 ea_inode->i_ino, true /* reusable */);
519 iput(ea_inode);
892 struct inode *ea_inode,
895 if (ea_inode &&
896 ext4_test_inode_state(ea_inode, EXT4_STATE_LUSTRE_EA_INODE))
934 /* We are done if ea_inode feature is not enabled. */
938 /* New ea_inode, inode map, block bitmap, group descriptor. */
954 /* Dereference ea_inode holding old xattr value.
955 * Old ea_inode, inode map, block bitmap, group descriptor.
959 /* Data blocks for old ea_inode. */
963 * ea_inode.
979 /* Ref count update on ea_inode. */
985 static int ext4_xattr_inode_update_ref(handle_t *handle, struct inode *ea_inode,
992 inode_lock(ea_inode);
994 ret = ext4_reserve_inode_write(handle, ea_inode, &iloc);
998 ref_count = ext4_xattr_inode_get_ref(ea_inode);
1000 ext4_xattr_inode_set_ref(ea_inode, ref_count);
1004 ea_inode->i_ino, ref_count);
1007 WARN_ONCE(ea_inode->i_nlink, "EA inode %lu i_nlink=%u",
1008 ea_inode->i_ino, ea_inode->i_nlink);
1010 set_nlink(ea_inode, 1);
1011 ext4_orphan_del(handle, ea_inode);
1015 ea_inode->i_ino, ref_count);
1018 WARN_ONCE(ea_inode->i_nlink != 1,
1020 ea_inode->i_ino, ea_inode->i_nlink);
1022 clear_nlink(ea_inode);
1023 ext4_orphan_add(handle, ea_inode);
1027 ret = ext4_mark_iloc_dirty(handle, ea_inode, &iloc);
1029 ext4_warning_inode(ea_inode,
1032 inode_unlock(ea_inode);
1036 static int ext4_xattr_inode_inc_ref(handle_t *handle, struct inode *ea_inode)
1038 return ext4_xattr_inode_update_ref(handle, ea_inode, 1);
1041 static int ext4_xattr_inode_dec_ref(handle_t *handle, struct inode *ea_inode)
1043 return ext4_xattr_inode_update_ref(handle, ea_inode, -1);
1049 struct inode *ea_inode;
1062 &ea_inode);
1065 err = ext4_xattr_inode_inc_ref(handle, ea_inode);
1067 ext4_warning_inode(ea_inode, "inc ref error %d", err);
1068 iput(ea_inode);
1071 iput(ea_inode);
1086 &ea_inode);
1093 err = ext4_xattr_inode_dec_ref(handle, ea_inode);
1095 ext4_warning_inode(ea_inode, "cleanup dec ref error %d",
1097 iput(ea_inode);
1127 struct inode *ea_inode;
1134 /* One credit for dec ref on ea_inode, one for orphan list addition, */
1144 &ea_inode);
1148 err = ext4_expand_inode_array(ea_inode_array, ea_inode);
1150 ext4_warning_inode(ea_inode,
1152 iput(ea_inode);
1161 ext4_warning_inode(ea_inode, "Ensure credits err=%d",
1168 ext4_warning_inode(ea_inode,
1175 err = ext4_xattr_inode_dec_ref(handle, ea_inode);
1177 ext4_warning_inode(ea_inode, "ea_inode dec ref err=%d",
1183 ext4_xattr_inode_free_quota(parent, ea_inode,
1187 * Forget about ea_inode within the same transaction that
1331 static int ext4_xattr_inode_write(handle_t *handle, struct inode *ea_inode,
1336 int blocksize = ea_inode->i_sb->s_blocksize;
1337 int max_blocks = (bufsize + blocksize - 1) >> ea_inode->i_blkbits;
1348 ret = ext4_map_blocks(handle, ea_inode, &map,
1351 ext4_mark_inode_dirty(handle, ea_inode);
1353 ext4_should_retry_alloc(ea_inode->i_sb, &retries)) {
1369 bh = ext4_getblk(handle, ea_inode, block, 0);
1374 EXT4_ERROR_INODE(ea_inode,
1384 ext4_handle_dirty_metadata(handle, ea_inode, bh);
1391 inode_lock(ea_inode);
1392 i_size_write(ea_inode, wsize);
1393 ext4_update_i_disksize(ea_inode, wsize);
1394 inode_unlock(ea_inode);
1396 ret2 = ext4_mark_inode_dirty(handle, ea_inode);
1412 struct inode *ea_inode = NULL;
1427 ea_inode = ext4_new_inode(handle, inode->i_sb->s_root->d_inode,
1430 if (!IS_ERR(ea_inode)) {
1431 ea_inode->i_op = &ext4_file_inode_operations;
1432 ea_inode->i_fop = &ext4_file_operations;
1433 ext4_set_aops(ea_inode);
1434 ext4_xattr_inode_set_class(ea_inode);
1435 unlock_new_inode(ea_inode);
1436 ext4_xattr_inode_set_ref(ea_inode, 1);
1437 ext4_xattr_inode_set_hash(ea_inode, hash);
1438 err = ext4_mark_inode_dirty(handle, ea_inode);
1440 err = ext4_inode_attach_jinode(ea_inode);
1442 if (ext4_xattr_inode_dec_ref(handle, ea_inode))
1443 ext4_warning_inode(ea_inode,
1445 iput(ea_inode);
1453 dquot_free_inode(ea_inode);
1454 dquot_drop(ea_inode);
1455 inode_lock(ea_inode);
1456 ea_inode->i_flags |= S_NOQUOTA;
1457 inode_unlock(ea_inode);
1460 return ea_inode;
1467 struct inode *ea_inode;
1489 ea_inode = ext4_iget(inode->i_sb, ce->e_value,
1491 if (IS_ERR(ea_inode))
1493 ext4_xattr_inode_set_class(ea_inode);
1494 if (i_size_read(ea_inode) == value_len &&
1495 !ext4_xattr_inode_read(ea_inode, ea_data, value_len) &&
1496 !ext4_xattr_inode_verify_hashes(ea_inode, NULL, ea_data,
1502 return ea_inode;
1504 iput(ea_inode);
1519 struct inode *ea_inode;
1524 ea_inode = ext4_xattr_inode_cache_find(inode, value, value_len, hash);
1525 if (ea_inode) {
1526 err = ext4_xattr_inode_inc_ref(handle, ea_inode);
1528 iput(ea_inode);
1532 *ret_inode = ea_inode;
1537 ea_inode = ext4_xattr_inode_create(handle, inode, hash);
1538 if (IS_ERR(ea_inode))
1539 return PTR_ERR(ea_inode);
1541 err = ext4_xattr_inode_write(handle, ea_inode, value, value_len);
1543 ext4_xattr_inode_dec_ref(handle, ea_inode);
1544 iput(ea_inode);
1550 ea_inode->i_ino, true /* reusable */);
1552 *ret_inode = ea_inode;
1557 * Reserve min(block_size/8, 1024) bytes for xattr entries/names if ea_inode
1876 struct inode *ea_inode = NULL, *tmp_inode;
1993 * A ref count on ea_inode has been taken as part of the call to
1996 * initialized and has its own ref count on the ea_inode.
2001 &ea_inode);
2003 ea_inode = NULL;
2108 if (ea_inode) {
2109 /* Drop the extra ref on ea_inode. */
2111 ea_inode);
2113 ext4_warning_inode(ea_inode,
2116 iput(ea_inode);
2117 ea_inode = NULL;
2157 if (ea_inode) {
2160 error2 = ext4_xattr_inode_dec_ref(handle, ea_inode);
2162 ext4_warning_inode(ea_inode, "dec ref error=%d",
2167 ext4_xattr_inode_free_quota(inode, ea_inode,
2168 i_size_read(ea_inode));
2169 iput(ea_inode);
2870 struct inode *ea_inode;
2930 &ea_inode);
2933 ext4_xattr_inode_free_quota(inode, ea_inode,
2935 iput(ea_inode);