Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
free-space-cache.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2009 Oracle. 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_FREE_SPACE_CACHE
20 #define __BTRFS_FREE_SPACE_CACHE
21 
26  unsigned long *bitmap;
27  struct list_head list;
28 };
29 
37  int unit;
40  void *private;
41 };
42 
46  struct btrfs_free_space *info);
47 };
48 
49 struct inode *lookup_free_space_inode(struct btrfs_root *root,
51  *block_group, struct btrfs_path *path);
52 int create_free_space_inode(struct btrfs_root *root,
53  struct btrfs_trans_handle *trans,
55  struct btrfs_path *path);
56 
58  struct btrfs_trans_handle *trans,
59  struct btrfs_path *path,
60  struct inode *inode);
63 int btrfs_write_out_cache(struct btrfs_root *root,
64  struct btrfs_trans_handle *trans,
66  struct btrfs_path *path);
67 
68 struct inode *lookup_free_ino_inode(struct btrfs_root *root,
69  struct btrfs_path *path);
70 int create_free_ino_inode(struct btrfs_root *root,
71  struct btrfs_trans_handle *trans,
72  struct btrfs_path *path);
74  struct btrfs_root *root);
75 int btrfs_write_out_ino_cache(struct btrfs_root *root,
76  struct btrfs_trans_handle *trans,
77  struct btrfs_path *path);
78 
81  u64 bytenr, u64 size);
82 static inline int
83 btrfs_add_free_space(struct btrfs_block_group_cache *block_group,
84  u64 bytenr, u64 size)
85 {
86  return __btrfs_add_free_space(block_group->free_space_ctl,
87  bytenr, size);
88 }
90  u64 bytenr, u64 size);
93  *block_group);
95  u64 offset, u64 bytes, u64 empty_size);
98  u64 bytes);
100  struct btrfs_root *root,
102  struct btrfs_free_cluster *cluster,
103  u64 offset, u64 bytes, u64 empty_size);
107  u64 min_start);
110  struct btrfs_free_cluster *cluster);
112  u64 *trimmed, u64 start, u64 end, u64 minlen);
113 #endif