root/fs/btrfs/orphan.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. btrfs_insert_orphan_item
  2. btrfs_del_orphan_item

   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 
   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 }

/* [<][>][^][v][top][bottom][index][help] */