Lines Matching refs:xattr
18 struct ceph_inode_xattr *xattr);
423 struct ceph_inode_xattr *xattr = NULL; in __set_xattr() local
430 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __set_xattr()
431 c = strncmp(name, xattr->name, min(name_len, xattr->name_len)); in __set_xattr()
437 if (name_len == xattr->name_len) in __set_xattr()
439 else if (name_len < xattr->name_len) in __set_xattr()
444 xattr = NULL; in __set_xattr()
450 if (xattr && (flags & XATTR_CREATE)) in __set_xattr()
452 else if (!xattr && (flags & XATTR_REPLACE)) in __set_xattr()
461 if (xattr) in __set_xattr()
462 __remove_xattr(ci, xattr); in __set_xattr()
469 if (!xattr) { in __set_xattr()
471 xattr = *newxattr; in __set_xattr()
472 xattr->name = name; in __set_xattr()
473 xattr->name_len = name_len; in __set_xattr()
474 xattr->should_free_name = update_xattr; in __set_xattr()
481 if (xattr->should_free_val) in __set_xattr()
482 kfree((void *)xattr->val); in __set_xattr()
486 name = xattr->name; in __set_xattr()
488 ci->i_xattrs.names_size -= xattr->name_len; in __set_xattr()
489 ci->i_xattrs.vals_size -= xattr->val_len; in __set_xattr()
494 xattr->val = val; in __set_xattr()
496 xattr->val = ""; in __set_xattr()
498 xattr->val_len = val_len; in __set_xattr()
499 xattr->dirty = update_xattr; in __set_xattr()
500 xattr->should_free_val = (val && update_xattr); in __set_xattr()
503 rb_link_node(&xattr->node, parent, p); in __set_xattr()
504 rb_insert_color(&xattr->node, &ci->i_xattrs.index); in __set_xattr()
509 ceph_vinop(&ci->vfs_inode), xattr, name, val_len, val); in __set_xattr()
519 struct ceph_inode_xattr *xattr = NULL; in __get_xattr() local
526 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __get_xattr()
527 c = strncmp(name, xattr->name, xattr->name_len); in __get_xattr()
528 if (c == 0 && name_len > xattr->name_len) in __get_xattr()
536 xattr->val_len, xattr->val); in __get_xattr()
537 return xattr; in __get_xattr()
546 static void __free_xattr(struct ceph_inode_xattr *xattr) in __free_xattr() argument
548 BUG_ON(!xattr); in __free_xattr()
550 if (xattr->should_free_name) in __free_xattr()
551 kfree((void *)xattr->name); in __free_xattr()
552 if (xattr->should_free_val) in __free_xattr()
553 kfree((void *)xattr->val); in __free_xattr()
555 kfree(xattr); in __free_xattr()
559 struct ceph_inode_xattr *xattr) in __remove_xattr() argument
561 if (!xattr) in __remove_xattr()
564 rb_erase(&xattr->node, &ci->i_xattrs.index); in __remove_xattr()
566 if (xattr->should_free_name) in __remove_xattr()
567 kfree((void *)xattr->name); in __remove_xattr()
568 if (xattr->should_free_val) in __remove_xattr()
569 kfree((void *)xattr->val); in __remove_xattr()
571 ci->i_xattrs.names_size -= xattr->name_len; in __remove_xattr()
572 ci->i_xattrs.vals_size -= xattr->val_len; in __remove_xattr()
574 kfree(xattr); in __remove_xattr()
583 struct ceph_inode_xattr *xattr = NULL; in __copy_xattr_names() local
589 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __copy_xattr_names()
590 memcpy(dest, xattr->name, xattr->name_len); in __copy_xattr_names()
591 dest[xattr->name_len] = '\0'; in __copy_xattr_names()
593 dout("dest=%s %p (%s) (%d/%d)\n", dest, xattr, xattr->name, in __copy_xattr_names()
594 xattr->name_len, ci->i_xattrs.names_size); in __copy_xattr_names()
596 dest += xattr->name_len + 1; in __copy_xattr_names()
606 struct ceph_inode_xattr *xattr = NULL; in __ceph_destroy_xattrs() local
613 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_destroy_xattrs()
617 xattr->name_len, xattr->name); in __ceph_destroy_xattrs()
620 __free_xattr(xattr); in __ceph_destroy_xattrs()
745 struct ceph_inode_xattr *xattr = NULL; in __ceph_build_xattrs_blob() local
759 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_build_xattrs_blob()
761 ceph_encode_32(&dest, xattr->name_len); in __ceph_build_xattrs_blob()
762 memcpy(dest, xattr->name, xattr->name_len); in __ceph_build_xattrs_blob()
763 dest += xattr->name_len; in __ceph_build_xattrs_blob()
764 ceph_encode_32(&dest, xattr->val_len); in __ceph_build_xattrs_blob()
765 memcpy(dest, xattr->val, xattr->val_len); in __ceph_build_xattrs_blob()
766 dest += xattr->val_len; in __ceph_build_xattrs_blob()
805 struct ceph_inode_xattr *xattr; in __ceph_getxattr() local
855 xattr = __get_xattr(ci, name); in __ceph_getxattr()
856 if (!xattr) in __ceph_getxattr()
860 if (size && size < xattr->val_len) in __ceph_getxattr()
863 err = xattr->val_len; in __ceph_getxattr()
867 memcpy(value, xattr->val, xattr->val_len); in __ceph_getxattr()
1021 struct ceph_inode_xattr *xattr = NULL; in __ceph_setxattr() local
1053 xattr = kmalloc(sizeof(struct ceph_inode_xattr), GFP_NOFS); in __ceph_setxattr()
1054 if (!xattr) in __ceph_setxattr()
1099 flags, value ? 1 : -1, &xattr); in __ceph_setxattr()
1143 kfree(xattr); in __ceph_setxattr()