diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index beb05b1..53d315b 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1689,8 +1689,7 @@
 
 /* xattr.c */
 ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
-int btrfs_delete_xattrs(struct btrfs_trans_handle *trans,
-			struct btrfs_root *root, struct inode *inode);
+
 /* super.c */
 u64 btrfs_parse_size(char *str);
 int btrfs_parse_options(struct btrfs_root *root, char *options);
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index 3e9eb91..6730b59 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -379,57 +379,6 @@
 }
 
 /*
- * delete all the xattrs associated with the inode.
- */
-int btrfs_delete_xattrs(struct btrfs_trans_handle *trans,
-			struct btrfs_root *root, struct inode *inode)
-{
-	struct btrfs_path *path;
-	struct btrfs_key key, found_key;
-	struct btrfs_item *item;
-	struct extent_buffer *leaf;
-	int ret;
-
-	path = btrfs_alloc_path();
-	if (!path)
-		return -ENOMEM;
-	path->reada = -1;
-	key.objectid = inode->i_ino;
-	btrfs_set_key_type(&key, BTRFS_XATTR_ITEM_KEY);
-	key.offset = (u64)-1;
-
-	while(1) {
-		/* look for our next xattr */
-		ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
-		if (ret < 0)
-			goto out;
-		BUG_ON(ret == 0);
-
-		if (path->slots[0] == 0)
-			break;
-
-		path->slots[0]--;
-		leaf = path->nodes[0];
-		item = btrfs_item_nr(leaf, path->slots[0]);
-		btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]);
-
-		if (found_key.objectid != key.objectid)
-			break;
-		if (btrfs_key_type(&found_key) != BTRFS_XATTR_ITEM_KEY)
-			break;
-
-		ret = btrfs_del_item(trans, root, path);
-		BUG_ON(ret);
-		btrfs_release_path(root, path);
-	}
-	ret = 0;
-out:
-	btrfs_free_path(path);
-
-	return ret;
-}
-
-/*
  * Handler functions
  */
 #define BTRFS_XATTR_SETGET_FUNCS(name, index)				\
