orphan.c (1128B)
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 "disk-io.h" 8 9int 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 30int 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 55out: 56 btrfs_free_path(path); 57 return ret; 58}