diff options
author | Jan Schmidt <list.btrfs@jan-o-sch.net> | 2011-06-13 13:52:59 -0400 |
---|---|---|
committer | Jan Schmidt <list.btrfs@jan-o-sch.net> | 2011-09-29 06:54:27 -0400 |
commit | a542ad1bafc7df9fc16de8a6894b350a4df75572 (patch) | |
tree | ece4cabbed85ceea326233735134863b2feec0e6 /fs/btrfs/backref.h | |
parent | 0a7a0519d1789f3a222849421dbe91b6bddb88f5 (diff) |
btrfs: added helper functions to iterate backrefs
These helper functions iterate back references and call a function for each
backref. There is also a function to resolve an inode to a path in the
file system.
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Diffstat (limited to 'fs/btrfs/backref.h')
-rw-r--r-- | fs/btrfs/backref.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/fs/btrfs/backref.h b/fs/btrfs/backref.h new file mode 100644 index 000000000000..92618837cb8f --- /dev/null +++ b/fs/btrfs/backref.h | |||
@@ -0,0 +1,62 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2011 STRATO. 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 | #ifndef __BTRFS_BACKREF__ | ||
20 | #define __BTRFS_BACKREF__ | ||
21 | |||
22 | #include "ioctl.h" | ||
23 | |||
24 | struct inode_fs_paths { | ||
25 | struct btrfs_path *btrfs_path; | ||
26 | struct btrfs_root *fs_root; | ||
27 | struct btrfs_data_container *fspath; | ||
28 | }; | ||
29 | |||
30 | typedef int (iterate_extent_inodes_t)(u64 inum, u64 offset, u64 root, | ||
31 | void *ctx); | ||
32 | typedef int (iterate_irefs_t)(u64 parent, struct btrfs_inode_ref *iref, | ||
33 | struct extent_buffer *eb, void *ctx); | ||
34 | |||
35 | int inode_item_info(u64 inum, u64 ioff, struct btrfs_root *fs_root, | ||
36 | struct btrfs_path *path); | ||
37 | |||
38 | int extent_from_logical(struct btrfs_fs_info *fs_info, u64 logical, | ||
39 | struct btrfs_path *path, struct btrfs_key *found_key); | ||
40 | |||
41 | int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb, | ||
42 | struct btrfs_extent_item *ei, u32 item_size, | ||
43 | u64 *out_root, u8 *out_level); | ||
44 | |||
45 | int iterate_extent_inodes(struct btrfs_fs_info *fs_info, | ||
46 | struct btrfs_path *path, | ||
47 | u64 extent_item_objectid, | ||
48 | u64 extent_offset, | ||
49 | iterate_extent_inodes_t *iterate, void *ctx); | ||
50 | |||
51 | int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info, | ||
52 | struct btrfs_path *path, | ||
53 | iterate_extent_inodes_t *iterate, void *ctx); | ||
54 | |||
55 | int paths_from_inode(u64 inum, struct inode_fs_paths *ipath); | ||
56 | |||
57 | struct btrfs_data_container *init_data_container(u32 total_bytes); | ||
58 | struct inode_fs_paths *init_ipath(s32 total_bytes, struct btrfs_root *fs_root, | ||
59 | struct btrfs_path *path); | ||
60 | void free_ipath(struct inode_fs_paths *ipath); | ||
61 | |||
62 | #endif | ||