Commit | Line | Data |
---|---|---|
c1d7c514 | 1 | // SPDX-License-Identifier: GPL-2.0 |
7b128766 JB |
2 | /* |
3 | * Copyright (C) 2008 Red Hat. All rights reserved. | |
7b128766 JB |
4 | */ |
5 | ||
6 | #include "ctree.h" | |
7 | #include "disk-io.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; | |
962a298f | 17 | key.type = BTRFS_ORPHAN_ITEM_KEY; |
7b128766 JB |
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; | |
962a298f | 38 | key.type = BTRFS_ORPHAN_ITEM_KEY; |
7b128766 JB |
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); | |
7e1fea73 | 46 | if (ret < 0) |
7b128766 | 47 | goto out; |
79787eaa | 48 | if (ret) { /* JDM: Really? */ |
7e1fea73 JB |
49 | ret = -ENOENT; |
50 | goto out; | |
51 | } | |
7b128766 JB |
52 | |
53 | ret = btrfs_del_item(trans, root, path); | |
54 | ||
55 | out: | |
56 | btrfs_free_path(path); | |
57 | return ret; | |
58 | } |