Lines Matching refs:xattr
19 struct ceph_inode_xattr *xattr);
442 struct ceph_inode_xattr *xattr = NULL; in __set_xattr() local
449 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __set_xattr()
450 c = strncmp(name, xattr->name, min(name_len, xattr->name_len)); in __set_xattr()
456 if (name_len == xattr->name_len) in __set_xattr()
458 else if (name_len < xattr->name_len) in __set_xattr()
463 xattr = NULL; in __set_xattr()
469 if (xattr && (flags & XATTR_CREATE)) in __set_xattr()
471 else if (!xattr && (flags & XATTR_REPLACE)) in __set_xattr()
480 if (xattr) in __set_xattr()
481 __remove_xattr(ci, xattr); in __set_xattr()
488 if (!xattr) { in __set_xattr()
490 xattr = *newxattr; in __set_xattr()
491 xattr->name = name; in __set_xattr()
492 xattr->name_len = name_len; in __set_xattr()
493 xattr->should_free_name = update_xattr; in __set_xattr()
500 if (xattr->should_free_val) in __set_xattr()
501 kfree(xattr->val); in __set_xattr()
505 name = xattr->name; in __set_xattr()
507 ci->i_xattrs.names_size -= xattr->name_len; in __set_xattr()
508 ci->i_xattrs.vals_size -= xattr->val_len; in __set_xattr()
513 xattr->val = val; in __set_xattr()
515 xattr->val = ""; in __set_xattr()
517 xattr->val_len = val_len; in __set_xattr()
518 xattr->dirty = update_xattr; in __set_xattr()
519 xattr->should_free_val = (val && update_xattr); in __set_xattr()
522 rb_link_node(&xattr->node, parent, p); in __set_xattr()
523 rb_insert_color(&xattr->node, &ci->i_xattrs.index); in __set_xattr()
528 ceph_vinop(&ci->vfs_inode), xattr, name_len, name, val_len, val); in __set_xattr()
538 struct ceph_inode_xattr *xattr = NULL; in __get_xattr() local
545 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __get_xattr()
546 c = strncmp(name, xattr->name, xattr->name_len); in __get_xattr()
547 if (c == 0 && name_len > xattr->name_len) in __get_xattr()
555 xattr->val_len, xattr->val); in __get_xattr()
556 return xattr; in __get_xattr()
565 static void __free_xattr(struct ceph_inode_xattr *xattr) in __free_xattr() argument
567 BUG_ON(!xattr); in __free_xattr()
569 if (xattr->should_free_name) in __free_xattr()
570 kfree(xattr->name); in __free_xattr()
571 if (xattr->should_free_val) in __free_xattr()
572 kfree(xattr->val); in __free_xattr()
574 kfree(xattr); in __free_xattr()
578 struct ceph_inode_xattr *xattr) in __remove_xattr() argument
580 if (!xattr) in __remove_xattr()
583 rb_erase(&xattr->node, &ci->i_xattrs.index); in __remove_xattr()
585 if (xattr->should_free_name) in __remove_xattr()
586 kfree(xattr->name); in __remove_xattr()
587 if (xattr->should_free_val) in __remove_xattr()
588 kfree(xattr->val); in __remove_xattr()
590 ci->i_xattrs.names_size -= xattr->name_len; in __remove_xattr()
591 ci->i_xattrs.vals_size -= xattr->val_len; in __remove_xattr()
593 kfree(xattr); in __remove_xattr()
602 struct ceph_inode_xattr *xattr = NULL; in __copy_xattr_names() local
608 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __copy_xattr_names()
609 memcpy(dest, xattr->name, xattr->name_len); in __copy_xattr_names()
610 dest[xattr->name_len] = '\0'; in __copy_xattr_names()
612 dout("dest=%s %p (%s) (%d/%d)\n", dest, xattr, xattr->name, in __copy_xattr_names()
613 xattr->name_len, ci->i_xattrs.names_size); in __copy_xattr_names()
615 dest += xattr->name_len + 1; in __copy_xattr_names()
625 struct ceph_inode_xattr *xattr = NULL; in __ceph_destroy_xattrs() local
632 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_destroy_xattrs()
636 xattr->name_len, xattr->name); in __ceph_destroy_xattrs()
639 __free_xattr(xattr); in __ceph_destroy_xattrs()
766 struct ceph_inode_xattr *xattr = NULL; in __ceph_build_xattrs_blob() local
781 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_build_xattrs_blob()
783 ceph_encode_32(&dest, xattr->name_len); in __ceph_build_xattrs_blob()
784 memcpy(dest, xattr->name, xattr->name_len); in __ceph_build_xattrs_blob()
785 dest += xattr->name_len; in __ceph_build_xattrs_blob()
786 ceph_encode_32(&dest, xattr->val_len); in __ceph_build_xattrs_blob()
787 memcpy(dest, xattr->val, xattr->val_len); in __ceph_build_xattrs_blob()
788 dest += xattr->val_len; in __ceph_build_xattrs_blob()
829 struct ceph_inode_xattr *xattr; in __ceph_getxattr() local
882 xattr = __get_xattr(ci, name); in __ceph_getxattr()
883 if (!xattr) in __ceph_getxattr()
887 if (size && size < xattr->val_len) in __ceph_getxattr()
890 err = xattr->val_len; in __ceph_getxattr()
894 memcpy(value, xattr->val, xattr->val_len); in __ceph_getxattr()
1026 struct ceph_inode_xattr *xattr = NULL; in __ceph_setxattr() local
1058 xattr = kmalloc(sizeof(struct ceph_inode_xattr), GFP_NOFS); in __ceph_setxattr()
1059 if (!xattr) in __ceph_setxattr()
1107 flags, value ? 1 : -1, &xattr); in __ceph_setxattr()
1152 kfree(xattr); in __ceph_setxattr()