Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

f2fs: Pass a folio to f2fs_getxattr()

The one caller of __f2fs_get_acl() which passes a non-NULL page already
has a folio, so pass it in, then into f2fs_getxattr(), which lets us
pass it to lookup_all_xattrs().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

authored by

Matthew Wilcox (Oracle) and committed by
Jaegeuk Kim
39d20727 cdbe260d

+12 -12
+4 -4
fs/f2fs/acl.c
··· 166 166 } 167 167 168 168 static struct posix_acl *__f2fs_get_acl(struct inode *inode, int type, 169 - struct page *dpage) 169 + struct folio *dfolio) 170 170 { 171 171 int name_index = F2FS_XATTR_INDEX_POSIX_ACL_DEFAULT; 172 172 void *value = NULL; ··· 176 176 if (type == ACL_TYPE_ACCESS) 177 177 name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS; 178 178 179 - retval = f2fs_getxattr(inode, name_index, "", NULL, 0, dpage); 179 + retval = f2fs_getxattr(inode, name_index, "", NULL, 0, dfolio); 180 180 if (retval > 0) { 181 181 value = f2fs_kmalloc(F2FS_I_SB(inode), retval, GFP_F2FS_ZERO); 182 182 if (!value) 183 183 return ERR_PTR(-ENOMEM); 184 184 retval = f2fs_getxattr(inode, name_index, "", value, 185 - retval, dpage); 185 + retval, dfolio); 186 186 } 187 187 188 188 if (retval > 0) ··· 371 371 if (S_ISLNK(*mode) || !IS_POSIXACL(dir)) 372 372 return 0; 373 373 374 - p = __f2fs_get_acl(dir, ACL_TYPE_DEFAULT, &dfolio->page); 374 + p = __f2fs_get_acl(dir, ACL_TYPE_DEFAULT, dfolio); 375 375 if (!p || p == ERR_PTR(-EOPNOTSUPP)) { 376 376 *mode &= ~current_umask(); 377 377 return 0;
+6 -6
fs/f2fs/xattr.c
··· 314 314 return 0; 315 315 } 316 316 317 - static int lookup_all_xattrs(struct inode *inode, struct page *ipage, 317 + static int lookup_all_xattrs(struct inode *inode, struct folio *ifolio, 318 318 unsigned int index, unsigned int len, 319 319 const char *name, struct f2fs_xattr_entry **xe, 320 320 void **base_addr, int *base_size, ··· 338 338 339 339 /* read from inline xattr */ 340 340 if (inline_size) { 341 - err = read_inline_xattr(inode, ipage, txattr_addr); 341 + err = read_inline_xattr(inode, &ifolio->page, txattr_addr); 342 342 if (err) 343 343 goto out; 344 344 ··· 512 512 } 513 513 514 514 int f2fs_getxattr(struct inode *inode, int index, const char *name, 515 - void *buffer, size_t buffer_size, struct page *ipage) 515 + void *buffer, size_t buffer_size, struct folio *ifolio) 516 516 { 517 517 struct f2fs_xattr_entry *entry = NULL; 518 518 int error; ··· 528 528 if (len > F2FS_NAME_LEN) 529 529 return -ERANGE; 530 530 531 - if (!ipage) 531 + if (!ifolio) 532 532 f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); 533 - error = lookup_all_xattrs(inode, ipage, index, len, name, 533 + error = lookup_all_xattrs(inode, ifolio, index, len, name, 534 534 &entry, &base_addr, &base_size, &is_inline); 535 - if (!ipage) 535 + if (!ifolio) 536 536 f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); 537 537 if (error) 538 538 return error;
+2 -2
fs/f2fs/xattr.h
··· 130 130 int f2fs_setxattr(struct inode *, int, const char *, const void *, 131 131 size_t, struct folio *, int); 132 132 int f2fs_getxattr(struct inode *, int, const char *, void *, 133 - size_t, struct page *); 133 + size_t, struct folio *); 134 134 ssize_t f2fs_listxattr(struct dentry *, char *, size_t); 135 135 int f2fs_init_xattr_caches(struct f2fs_sb_info *); 136 136 void f2fs_destroy_xattr_caches(struct f2fs_sb_info *); ··· 146 146 } 147 147 static inline int f2fs_getxattr(struct inode *inode, int index, 148 148 const char *name, void *buffer, 149 - size_t buffer_size, struct page *dpage) 149 + size_t buffer_size, struct folio *dfolio) 150 150 { 151 151 return -EOPNOTSUPP; 152 152 }