1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (C) 2008 Red Hat. All rights reserved. 4 */ 5 6 #include "ctree.h" 7 #include "orphan.h" 8 9 int btrfs_insert_orphan_item(struct btrfs_trans_handle *trans, 10 struct btrfs_root *root, u64 offset) 11 { 12 struct btrfs_path *path; 13 struct btrfs_key key; 14 int ret = 0; 15 16 key.objectid = BTRFS_ORPHAN_OBJECTID; 17 key.type = BTRFS_ORPHAN_ITEM_KEY; 18 key.offset = offset; 19 20 path = btrfs_alloc_path(); 21 if (!path) 22 return -ENOMEM; 23 24 ret = btrfs_insert_empty_item(trans, root, path, &key, 0); 25 26 btrfs_free_path(path); 27 return ret; 28 } 29 30 int btrfs_del_orphan_item(struct btrfs_trans_handle *trans, 31 struct btrfs_root *root, u64 offset) 32 { 33 struct btrfs_path *path; 34 struct btrfs_key key; 35 int ret = 0; 36 37 key.objectid = BTRFS_ORPHAN_OBJECTID; 38 key.type = BTRFS_ORPHAN_ITEM_KEY; 39 key.offset = offset; 40 41 path = btrfs_alloc_path(); 42 if (!path) 43 return -ENOMEM; 44 45 ret = btrfs_search_slot(trans, root, &key, path, -1, 1); 46 if (ret < 0) 47 goto out; 48 if (ret) { /* JDM: Really? */ 49 ret = -ENOENT; 50 goto out; 51 } 52 53 ret = btrfs_del_item(trans, root, path); 54 55 out: 56 btrfs_free_path(path); 57 return ret; 58 } 59