• Home
  • Raw
  • Download

Lines Matching +full:entry +full:- +full:name

9  * Copyright (C) 2001-2003 Andreas Gruenbacher <agruen@suse.de>
30 const char *name, void *buffer, size_t size) in f2fs_xattr_generic_get() argument
32 struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); in f2fs_xattr_generic_get()
34 switch (handler->flags) { in f2fs_xattr_generic_get()
37 return -EOPNOTSUPP; in f2fs_xattr_generic_get()
43 return -EINVAL; in f2fs_xattr_generic_get()
45 return f2fs_getxattr(inode, handler->flags, name, in f2fs_xattr_generic_get()
51 const char *name, const void *value, in f2fs_xattr_generic_set() argument
54 struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); in f2fs_xattr_generic_set()
56 switch (handler->flags) { in f2fs_xattr_generic_set()
59 return -EOPNOTSUPP; in f2fs_xattr_generic_set()
65 return -EINVAL; in f2fs_xattr_generic_set()
67 return f2fs_setxattr(inode, handler->flags, name, in f2fs_xattr_generic_set()
73 struct f2fs_sb_info *sbi = F2FS_SB(dentry->d_sb); in f2fs_xattr_user_list()
85 const char *name, void *buffer, size_t size) in f2fs_xattr_advise_get() argument
88 *((char *)buffer) = F2FS_I(inode)->i_advise; in f2fs_xattr_advise_get()
94 const char *name, const void *value, in f2fs_xattr_advise_set() argument
97 unsigned char old_advise = F2FS_I(inode)->i_advise; in f2fs_xattr_advise_set()
101 return -EPERM; in f2fs_xattr_advise_set()
103 return -EINVAL; in f2fs_xattr_advise_set()
107 return -EINVAL; in f2fs_xattr_advise_set()
112 F2FS_I(inode)->i_advise = new_advise; in f2fs_xattr_advise_set()
124 for (xattr = xattr_array; xattr->name != NULL; xattr++) { in f2fs_initxattrs()
126 xattr->name, xattr->value, in f2fs_initxattrs()
127 xattr->value_len, (struct page *)page, 0); in f2fs_initxattrs()
159 .name = F2FS_SYSTEM_ADVISE_NAME,
210 size_t len, const char *name) in __find_xattr() argument
212 struct f2fs_xattr_entry *entry; in __find_xattr() local
214 list_for_each_xattr(entry, base_addr) { in __find_xattr()
215 if ((void *)(entry) + sizeof(__u32) > last_base_addr || in __find_xattr()
216 (void *)XATTR_NEXT_ENTRY(entry) > last_base_addr) in __find_xattr()
219 if (entry->e_name_index != index) in __find_xattr()
221 if (entry->e_name_len != len) in __find_xattr()
223 if (!memcmp(entry->e_name, name, len)) in __find_xattr()
226 return entry; in __find_xattr()
231 size_t len, const char *name) in __find_inline_xattr() argument
233 struct f2fs_xattr_entry *entry; in __find_inline_xattr() local
237 list_for_each_xattr(entry, base_addr) { in __find_inline_xattr()
238 if ((void *)entry + sizeof(__u32) > max_addr || in __find_inline_xattr()
239 (void *)XATTR_NEXT_ENTRY(entry) > max_addr) { in __find_inline_xattr()
240 *last_addr = entry; in __find_inline_xattr()
243 if (entry->e_name_index != index) in __find_inline_xattr()
245 if (entry->e_name_len != len) in __find_inline_xattr()
247 if (!memcmp(entry->e_name, name, len)) in __find_inline_xattr()
251 /* inline xattr header or entry across max inline xattr size */ in __find_inline_xattr()
252 if (IS_XATTR_LAST_ENTRY(entry) && in __find_inline_xattr()
253 (void *)entry + sizeof(__u32) > max_addr) { in __find_inline_xattr()
254 *last_addr = entry; in __find_inline_xattr()
257 return entry; in __find_inline_xattr()
271 page = f2fs_get_node_page(sbi, inode->i_ino); in read_inline_xattr()
286 nid_t xnid = F2FS_I(inode)->i_xattr_nid; in read_xattr_block()
305 const char *name, struct f2fs_xattr_entry **xe, in lookup_all_xattrs() argument
310 nid_t xnid = F2FS_I(inode)->i_xattr_nid; in lookup_all_xattrs()
315 return -ENODATA; in lookup_all_xattrs()
320 return -ENOMEM; in lookup_all_xattrs()
331 index, len, name); in lookup_all_xattrs()
346 cur_addr = XATTR_HDR(last_addr) - 1; in lookup_all_xattrs()
350 *xe = __find_xattr(cur_addr, last_txattr_addr, index, len, name); in lookup_all_xattrs()
352 err = -EFSCORRUPTED; in lookup_all_xattrs()
357 err = -ENODATA; in lookup_all_xattrs()
372 nid_t xnid = F2FS_I(inode)->i_xattr_nid; in read_all_xattrs()
381 return -ENOMEM; in read_all_xattrs()
400 if (le32_to_cpu(header->h_magic) != F2FS_XATTR_MAGIC) { in read_all_xattrs()
401 header->h_magic = cpu_to_le32(F2FS_XATTR_MAGIC); in read_all_xattrs()
402 header->h_refcount = cpu_to_le32(1); in read_all_xattrs()
423 if (hsize > inline_size && !F2FS_I(inode)->i_xattr_nid) in write_all_xattrs()
425 return -ENOSPC; in write_all_xattrs()
432 in_page = f2fs_get_node_page(sbi, inode->i_ino); in write_all_xattrs()
457 if (F2FS_I(inode)->i_xattr_nid) { in write_all_xattrs()
458 xpage = f2fs_get_node_page(sbi, F2FS_I(inode)->i_xattr_nid); in write_all_xattrs()
493 int f2fs_getxattr(struct inode *inode, int index, const char *name, in f2fs_getxattr() argument
496 struct f2fs_xattr_entry *entry = NULL; in f2fs_getxattr() local
502 if (name == NULL) in f2fs_getxattr()
503 return -EINVAL; in f2fs_getxattr()
505 len = strlen(name); in f2fs_getxattr()
507 return -ERANGE; in f2fs_getxattr()
509 down_read(&F2FS_I(inode)->i_xattr_sem); in f2fs_getxattr()
510 error = lookup_all_xattrs(inode, ipage, index, len, name, in f2fs_getxattr()
511 &entry, &base_addr, &base_size); in f2fs_getxattr()
512 up_read(&F2FS_I(inode)->i_xattr_sem); in f2fs_getxattr()
516 size = le16_to_cpu(entry->e_value_size); in f2fs_getxattr()
519 error = -ERANGE; in f2fs_getxattr()
524 char *pval = entry->e_name + entry->e_name_len; in f2fs_getxattr()
526 if (base_size - (pval - (char *)base_addr) < size) { in f2fs_getxattr()
527 error = -ERANGE; in f2fs_getxattr()
541 nid_t xnid = F2FS_I(inode)->i_xattr_nid; in f2fs_listxattr()
542 struct f2fs_xattr_entry *entry; in f2fs_listxattr() local
547 down_read(&F2FS_I(inode)->i_xattr_sem); in f2fs_listxattr()
549 up_read(&F2FS_I(inode)->i_xattr_sem); in f2fs_listxattr()
555 list_for_each_xattr(entry, base_addr) { in f2fs_listxattr()
557 f2fs_xattr_handler(entry->e_name_index); in f2fs_listxattr()
562 if ((void *)(entry) + sizeof(__u32) > last_base_addr || in f2fs_listxattr()
563 (void *)XATTR_NEXT_ENTRY(entry) > last_base_addr) { in f2fs_listxattr()
564 f2fs_msg(dentry->d_sb, KERN_ERR, in f2fs_listxattr()
566 inode->i_ino); in f2fs_listxattr()
568 error = -EFSCORRUPTED; in f2fs_listxattr()
572 if (!handler || (handler->list && !handler->list(dentry))) in f2fs_listxattr()
575 prefix = handler->prefix ?: handler->name; in f2fs_listxattr()
577 size = prefix_len + entry->e_name_len + 1; in f2fs_listxattr()
580 error = -ERANGE; in f2fs_listxattr()
585 memcpy(buffer, entry->e_name, entry->e_name_len); in f2fs_listxattr()
586 buffer += entry->e_name_len; in f2fs_listxattr()
589 rest -= size; in f2fs_listxattr()
591 error = buffer_size - rest; in f2fs_listxattr()
597 static bool f2fs_xattr_value_same(struct f2fs_xattr_entry *entry, in f2fs_xattr_value_same() argument
600 void *pval = entry->e_name + entry->e_name_len; in f2fs_xattr_value_same()
602 return (le16_to_cpu(entry->e_value_size) == size) && in f2fs_xattr_value_same()
607 const char *name, const void *value, size_t size, in __f2fs_setxattr() argument
612 nid_t xnid = F2FS_I(inode)->i_xattr_nid; in __f2fs_setxattr()
618 if (name == NULL) in __f2fs_setxattr()
619 return -EINVAL; in __f2fs_setxattr()
624 len = strlen(name); in __f2fs_setxattr()
627 return -ERANGE; in __f2fs_setxattr()
630 return -E2BIG; in __f2fs_setxattr()
638 /* find entry with wanted name. */ in __f2fs_setxattr()
639 here = __find_xattr(base_addr, last_base_addr, index, len, name); in __f2fs_setxattr()
641 error = -EFSCORRUPTED; in __f2fs_setxattr()
649 error = -EEXIST; in __f2fs_setxattr()
656 error = -ENODATA; in __f2fs_setxattr()
673 free = MIN_OFFSET(inode) - ((char *)last - (char *)base_addr); in __f2fs_setxattr()
678 error = -E2BIG; in __f2fs_setxattr()
683 /* 2. Remove old entry */ in __f2fs_setxattr()
686 * If entry is found, remove old entry. in __f2fs_setxattr()
692 memmove(here, next, (char *)last - (char *)next); in __f2fs_setxattr()
693 last = (struct f2fs_xattr_entry *)((char *)last - oldsize); in __f2fs_setxattr()
697 new_hsize = (char *)last - (char *)base_addr; in __f2fs_setxattr()
699 /* 3. Write new entry */ in __f2fs_setxattr()
703 * Before we come here, old entry is removed. in __f2fs_setxattr()
704 * We just write new entry. in __f2fs_setxattr()
706 last->e_name_index = index; in __f2fs_setxattr()
707 last->e_name_len = len; in __f2fs_setxattr()
708 memcpy(last->e_name, name, len); in __f2fs_setxattr()
709 pval = last->e_name + len; in __f2fs_setxattr()
711 last->e_value_size = cpu_to_le16(size); in __f2fs_setxattr()
720 inode->i_mode = F2FS_I(inode)->i_acl_mode; in __f2fs_setxattr()
721 inode->i_ctime = current_time(inode); in __f2fs_setxattr()
725 !strcmp(name, F2FS_XATTR_NAME_ENCRYPTION_CONTEXT)) in __f2fs_setxattr()
728 if (!error && S_ISDIR(inode->i_mode)) in __f2fs_setxattr()
735 int f2fs_setxattr(struct inode *inode, int index, const char *name, in f2fs_setxattr() argument
748 return __f2fs_setxattr(inode, index, name, value, in f2fs_setxattr()
754 down_write(&F2FS_I(inode)->i_sem); in f2fs_setxattr()
755 down_write(&F2FS_I(inode)->i_xattr_sem); in f2fs_setxattr()
756 err = __f2fs_setxattr(inode, index, name, value, size, ipage, flags); in f2fs_setxattr()
757 up_write(&F2FS_I(inode)->i_xattr_sem); in f2fs_setxattr()
758 up_write(&F2FS_I(inode)->i_sem); in f2fs_setxattr()