Lines Matching refs:xattr

17 			  struct ceph_inode_xattr *xattr);
346 struct ceph_inode_xattr *xattr = NULL; in __set_xattr() local
353 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __set_xattr()
354 c = strncmp(name, xattr->name, min(name_len, xattr->name_len)); in __set_xattr()
360 if (name_len == xattr->name_len) in __set_xattr()
362 else if (name_len < xattr->name_len) in __set_xattr()
367 xattr = NULL; in __set_xattr()
372 if (xattr && (flags & XATTR_CREATE)) in __set_xattr()
374 else if (!xattr && (flags & XATTR_REPLACE)) in __set_xattr()
382 if (xattr) in __set_xattr()
383 __remove_xattr(ci, xattr); in __set_xattr()
389 if (!xattr) { in __set_xattr()
391 xattr = *newxattr; in __set_xattr()
392 xattr->name = name; in __set_xattr()
393 xattr->name_len = name_len; in __set_xattr()
394 xattr->should_free_name = update_xattr; in __set_xattr()
401 if (xattr->should_free_val) in __set_xattr()
402 kfree((void *)xattr->val); in __set_xattr()
406 name = xattr->name; in __set_xattr()
408 ci->i_xattrs.names_size -= xattr->name_len; in __set_xattr()
409 ci->i_xattrs.vals_size -= xattr->val_len; in __set_xattr()
414 xattr->val = val; in __set_xattr()
416 xattr->val = ""; in __set_xattr()
418 xattr->val_len = val_len; in __set_xattr()
419 xattr->dirty = update_xattr; in __set_xattr()
420 xattr->should_free_val = (val && update_xattr); in __set_xattr()
423 rb_link_node(&xattr->node, parent, p); in __set_xattr()
424 rb_insert_color(&xattr->node, &ci->i_xattrs.index); in __set_xattr()
429 ceph_vinop(&ci->vfs_inode), xattr, name, val_len, val); in __set_xattr()
439 struct ceph_inode_xattr *xattr = NULL; in __get_xattr() local
446 xattr = rb_entry(parent, struct ceph_inode_xattr, node); in __get_xattr()
447 c = strncmp(name, xattr->name, xattr->name_len); in __get_xattr()
448 if (c == 0 && name_len > xattr->name_len) in __get_xattr()
456 xattr->val_len, xattr->val); in __get_xattr()
457 return xattr; in __get_xattr()
466 static void __free_xattr(struct ceph_inode_xattr *xattr) in __free_xattr() argument
468 BUG_ON(!xattr); in __free_xattr()
470 if (xattr->should_free_name) in __free_xattr()
471 kfree((void *)xattr->name); in __free_xattr()
472 if (xattr->should_free_val) in __free_xattr()
473 kfree((void *)xattr->val); in __free_xattr()
475 kfree(xattr); in __free_xattr()
479 struct ceph_inode_xattr *xattr) in __remove_xattr() argument
481 if (!xattr) in __remove_xattr()
484 rb_erase(&xattr->node, &ci->i_xattrs.index); in __remove_xattr()
486 if (xattr->should_free_name) in __remove_xattr()
487 kfree((void *)xattr->name); in __remove_xattr()
488 if (xattr->should_free_val) in __remove_xattr()
489 kfree((void *)xattr->val); in __remove_xattr()
491 ci->i_xattrs.names_size -= xattr->name_len; in __remove_xattr()
492 ci->i_xattrs.vals_size -= xattr->val_len; in __remove_xattr()
494 kfree(xattr); in __remove_xattr()
503 struct ceph_inode_xattr *xattr; in __remove_xattr_by_name() local
507 xattr = __get_xattr(ci, name); in __remove_xattr_by_name()
508 err = __remove_xattr(ci, xattr); in __remove_xattr_by_name()
516 struct ceph_inode_xattr *xattr = NULL; in __copy_xattr_names() local
522 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __copy_xattr_names()
523 memcpy(dest, xattr->name, xattr->name_len); in __copy_xattr_names()
524 dest[xattr->name_len] = '\0'; in __copy_xattr_names()
526 dout("dest=%s %p (%s) (%d/%d)\n", dest, xattr, xattr->name, in __copy_xattr_names()
527 xattr->name_len, ci->i_xattrs.names_size); in __copy_xattr_names()
529 dest += xattr->name_len + 1; in __copy_xattr_names()
539 struct ceph_inode_xattr *xattr = NULL; in __ceph_destroy_xattrs() local
546 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_destroy_xattrs()
550 xattr->name_len, xattr->name); in __ceph_destroy_xattrs()
553 __free_xattr(xattr); in __ceph_destroy_xattrs()
678 struct ceph_inode_xattr *xattr = NULL; in __ceph_build_xattrs_blob() local
692 xattr = rb_entry(p, struct ceph_inode_xattr, node); in __ceph_build_xattrs_blob()
694 ceph_encode_32(&dest, xattr->name_len); in __ceph_build_xattrs_blob()
695 memcpy(dest, xattr->name, xattr->name_len); in __ceph_build_xattrs_blob()
696 dest += xattr->name_len; in __ceph_build_xattrs_blob()
697 ceph_encode_32(&dest, xattr->val_len); in __ceph_build_xattrs_blob()
698 memcpy(dest, xattr->val, xattr->val_len); in __ceph_build_xattrs_blob()
699 dest += xattr->val_len; in __ceph_build_xattrs_blob()
722 struct ceph_inode_xattr *xattr; in __ceph_getxattr() local
754 xattr = __get_xattr(ci, name); in __ceph_getxattr()
755 if (!xattr) in __ceph_getxattr()
759 if (size && size < xattr->val_len) in __ceph_getxattr()
762 err = xattr->val_len; in __ceph_getxattr()
766 memcpy(value, xattr->val, xattr->val_len); in __ceph_getxattr()
921 struct ceph_inode_xattr *xattr = NULL; in __ceph_setxattr() local
947 xattr = kmalloc(sizeof(struct ceph_inode_xattr), GFP_NOFS); in __ceph_setxattr()
948 if (!xattr) in __ceph_setxattr()
978 flags, value ? 1 : -1, &xattr); in __ceph_setxattr()
998 kfree(xattr); in __ceph_setxattr()