Lines Matching refs:inode

47 		struct dentry *unused, struct inode *inode,
50 struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
63 return f2fs_getxattr(inode, handler->flags, name,
69 struct dentry *unused, struct inode *inode,
73 struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
86 return f2fs_setxattr(inode, handler->flags, name,
103 struct dentry *unused, struct inode *inode,
107 *((char *)buffer) = F2FS_I(inode)->i_advise;
113 struct dentry *unused, struct inode *inode,
117 unsigned char old_advise = F2FS_I(inode)->i_advise;
120 if (!inode_owner_or_capable(&nop_mnt_idmap, inode))
132 F2FS_I(inode)->i_advise = new_advise;
133 f2fs_mark_inode_dirty_sync(inode, true);
138 static int f2fs_initxattrs(struct inode *inode, const struct xattr *xattr_array,
145 err = f2fs_setxattr(inode, F2FS_XATTR_INDEX_SECURITY,
154 int f2fs_init_security(struct inode *inode, struct inode *dir,
157 return security_inode_init_security(inode, dir, qstr,
253 static struct f2fs_xattr_entry *__find_inline_xattr(struct inode *inode,
258 unsigned int inline_size = inline_xattr_size(inode);
274 static int read_inline_xattr(struct inode *inode, struct page *ipage,
277 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
278 unsigned int inline_size = inline_xattr_size(inode);
283 inline_addr = inline_xattr_addr(inode, ipage);
285 page = f2fs_get_node_page(sbi, inode->i_ino);
289 inline_addr = inline_xattr_addr(inode, page);
297 static int read_xattr_block(struct inode *inode, void *txattr_addr)
299 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
300 nid_t xnid = F2FS_I(inode)->i_xattr_nid;
301 unsigned int inline_size = inline_xattr_size(inode);
305 /* The inode already has an extended attribute block. */
317 static int lookup_all_xattrs(struct inode *inode, struct page *ipage,
325 nid_t xnid = F2FS_I(inode)->i_xattr_nid;
326 unsigned int inline_size = inline_xattr_size(inode);
332 *base_size = XATTR_SIZE(inode) + XATTR_PADDING_SIZE;
333 txattr_addr = xattr_alloc(F2FS_I_SB(inode), *base_size, is_inline);
337 last_txattr_addr = (void *)txattr_addr + XATTR_SIZE(inode);
341 err = read_inline_xattr(inode, ipage, txattr_addr);
345 *xe = __find_inline_xattr(inode, txattr_addr, &last_addr,
355 err = read_xattr_block(inode, txattr_addr);
367 f2fs_err(F2FS_I_SB(inode), "lookup inode (%lu) has corrupted xattr",
368 inode->i_ino);
369 set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK);
371 f2fs_handle_error(F2FS_I_SB(inode),
384 xattr_free(F2FS_I_SB(inode), txattr_addr, *is_inline);
388 static int read_all_xattrs(struct inode *inode, struct page *ipage,
392 nid_t xnid = F2FS_I(inode)->i_xattr_nid;
394 unsigned int inline_size = inline_xattr_size(inode);
398 txattr_addr = f2fs_kzalloc(F2FS_I_SB(inode),
405 err = read_inline_xattr(inode, ipage, txattr_addr);
412 err = read_xattr_block(inode, txattr_addr);
431 static inline int write_all_xattrs(struct inode *inode, __u32 hsize,
434 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
435 size_t inline_size = inline_xattr_size(inode);
443 if (hsize > inline_size && !F2FS_I(inode)->i_xattr_nid)
450 inline_addr = inline_xattr_addr(inode, ipage);
452 in_page = f2fs_get_node_page(sbi, inode->i_ino);
457 inline_addr = inline_xattr_addr(inode, in_page);
464 err = f2fs_truncate_xattr_node(inode);
477 if (F2FS_I(inode)->i_xattr_nid) {
478 xpage = f2fs_get_node_page(sbi, F2FS_I(inode)->i_xattr_nid);
489 set_new_dnode(&dn, inode, NULL, NULL, new_nid);
514 int f2fs_getxattr(struct inode *inode, int index, const char *name,
532 f2fs_down_read(&F2FS_I(inode)->i_xattr_sem);
533 error = lookup_all_xattrs(inode, ipage, index, len, name,
536 f2fs_up_read(&F2FS_I(inode)->i_xattr_sem);
558 xattr_free(F2FS_I_SB(inode), base_addr, is_inline);
564 struct inode *inode = d_inode(dentry);
570 f2fs_down_read(&F2FS_I(inode)->i_xattr_sem);
571 error = read_all_xattrs(inode, NULL, &base_addr);
572 f2fs_up_read(&F2FS_I(inode)->i_xattr_sem);
576 last_base_addr = (void *)base_addr + XATTR_SIZE(inode);
587 f2fs_err(F2FS_I_SB(inode), "list inode (%lu) has corrupted xattr",
588 inode->i_ino);
589 set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK);
590 f2fs_handle_error(F2FS_I_SB(inode),
628 static int __f2fs_setxattr(struct inode *inode, int index,
650 if (size > MAX_VALUE_LEN(inode))
653 error = read_all_xattrs(inode, ipage, &base_addr);
657 last_base_addr = (void *)base_addr + XATTR_SIZE(inode);
662 if (!F2FS_I(inode)->i_xattr_nid) {
663 error = f2fs_recover_xattr_data(inode, NULL);
664 f2fs_notice(F2FS_I_SB(inode),
665 "recover xattr in inode (%lu), error(%d)",
666 inode->i_ino, error);
672 f2fs_err(F2FS_I_SB(inode), "set inode (%lu) has corrupted xattr",
673 inode->i_ino);
674 set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK);
676 f2fs_handle_error(F2FS_I_SB(inode),
700 f2fs_err(F2FS_I_SB(inode), "inode (%lu) has invalid last xattr entry, entry_size: %zu",
701 inode->i_ino, ENTRY_SIZE(last));
702 set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_FSCK);
704 f2fs_handle_error(F2FS_I_SB(inode),
720 free = MIN_OFFSET(inode) - ((char *)last - (char *)base_addr);
768 error = write_all_xattrs(inode, new_hsize, base_addr, ipage);
774 f2fs_set_encrypted_inode(inode);
775 if (S_ISDIR(inode->i_mode))
776 set_sbi_flag(F2FS_I_SB(inode), SBI_NEED_CP);
779 if (is_inode_flag_set(inode, FI_ACL_MODE)) {
780 inode->i_mode = F2FS_I(inode)->i_acl_mode;
781 clear_inode_flag(inode, FI_ACL_MODE);
784 inode_set_ctime_current(inode);
785 f2fs_mark_inode_dirty_sync(inode, true);
791 int f2fs_setxattr(struct inode *inode, int index, const char *name,
795 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
803 err = f2fs_dquot_initialize(inode);
809 return __f2fs_setxattr(inode, index, name, value,
814 f2fs_down_write(&F2FS_I(inode)->i_xattr_sem);
815 err = __f2fs_setxattr(inode, index, name, value, size, ipage, flags);
816 f2fs_up_write(&F2FS_I(inode)->i_xattr_sem);