]>
Commit | Line | Data |
---|---|---|
7b128766 JB |
1 | /* |
2 | * Copyright (C) 2008 Red Hat. All rights reserved. | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public | |
6 | * License v2 as published by the Free Software Foundation. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, | |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
11 | * General Public License for more details. | |
12 | * | |
13 | * You should have received a copy of the GNU General Public | |
14 | * License along with this program; if not, write to the | |
15 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
16 | * Boston, MA 021110-1307, USA. | |
17 | */ | |
18 | ||
19 | #include "ctree.h" | |
20 | #include "disk-io.h" | |
21 | ||
22 | int btrfs_insert_orphan_item(struct btrfs_trans_handle *trans, | |
23 | struct btrfs_root *root, u64 offset) | |
24 | { | |
25 | struct btrfs_path *path; | |
26 | struct btrfs_key key; | |
27 | int ret = 0; | |
28 | ||
29 | key.objectid = BTRFS_ORPHAN_OBJECTID; | |
962a298f | 30 | key.type = BTRFS_ORPHAN_ITEM_KEY; |
7b128766 JB |
31 | key.offset = offset; |
32 | ||
33 | path = btrfs_alloc_path(); | |
34 | if (!path) | |
35 | return -ENOMEM; | |
36 | ||
37 | ret = btrfs_insert_empty_item(trans, root, path, &key, 0); | |
38 | ||
39 | btrfs_free_path(path); | |
40 | return ret; | |
41 | } | |
42 | ||
43 | int btrfs_del_orphan_item(struct btrfs_trans_handle *trans, | |
44 | struct btrfs_root *root, u64 offset) | |
45 | { | |
46 | struct btrfs_path *path; | |
47 | struct btrfs_key key; | |
48 | int ret = 0; | |
49 | ||
50 | key.objectid = BTRFS_ORPHAN_OBJECTID; | |
962a298f | 51 | key.type = BTRFS_ORPHAN_ITEM_KEY; |
7b128766 JB |
52 | key.offset = offset; |
53 | ||
54 | path = btrfs_alloc_path(); | |
55 | if (!path) | |
56 | return -ENOMEM; | |
57 | ||
58 | ret = btrfs_search_slot(trans, root, &key, path, -1, 1); | |
7e1fea73 | 59 | if (ret < 0) |
7b128766 | 60 | goto out; |
79787eaa | 61 | if (ret) { /* JDM: Really? */ |
7e1fea73 JB |
62 | ret = -ENOENT; |
63 | goto out; | |
64 | } | |
7b128766 JB |
65 | |
66 | ret = btrfs_del_item(trans, root, path); | |
67 | ||
68 | out: | |
69 | btrfs_free_path(path); | |
70 | return ret; | |
71 | } |