cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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}