* Check compat and incompat flags on the inode
* Get rid of struct ctree_path, limiting tree levels held at one time
* Add generation number to key pointer in nodes
-* Add parent pointer back to extent map.
-* Implement real list of pending transactions
+* Add generation number to inode
* Release
* Do real tree locking
* Add extent mirroring (backup copies of blocks)
return 0;
}
+static int try_remove_page(struct address_space *mapping, unsigned long index)
+{
+ int ret;
+ ret = invalidate_mapping_pages(mapping, index, index);
+ return ret;
+}
+
int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, struct
btrfs_root *root)
{
unsigned long gang[8];
+ struct inode *btree_inode = root->fs_info->btree_inode;
u64 first = 0;
int ret;
int i;
first = gang[0];
for (i = 0; i < ret; i++) {
clear_radix_bit(pinned_radix, gang[i]);
+ try_remove_page(btree_inode->i_mapping,
+ gang[i] << (PAGE_CACHE_SHIFT -
+ btree_inode->i_blkbits));
}
}
if (root->fs_info->block_group_cache) {
*/
btrfs_release_path(root, path);
BUG_ON(ins->objectid < search_start);
+ if (ins->objectid >= btrfs_super_total_blocks(info->disk_super)) {
+ if (search_start == 0)
+ return -ENOSPC;
+ search_start = 0;
+ goto check_failed;
+ }
for (test_block = ins->objectid;
test_block < ins->objectid + num_blocks; test_block++) {
if (test_radix_bit(&info->pinned_radix, test_block)) {