disk-io.c (21ad10cf3e9c1ef42e725e5c3a593c49f779a16b) | disk-io.c (55c69072d6bd5be170a85467f64a20963cddf490) |
---|---|
1/* 2 * Copyright (C) 2007 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, --- 183 unchanged lines hidden (view full) --- 192 WARN_ON(1); 193 } 194 eb = alloc_extent_buffer(tree, start, len, page, GFP_NOFS); 195 read_extent_buffer_pages(tree, eb, start + PAGE_CACHE_SIZE, 1); 196 found_start = btrfs_header_bytenr(eb); 197 if (found_start != start) { 198 printk("warning: eb start incorrect %Lu buffer %Lu len %lu\n", 199 start, found_start, len); | 1/* 2 * Copyright (C) 2007 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, --- 183 unchanged lines hidden (view full) --- 192 WARN_ON(1); 193 } 194 eb = alloc_extent_buffer(tree, start, len, page, GFP_NOFS); 195 read_extent_buffer_pages(tree, eb, start + PAGE_CACHE_SIZE, 1); 196 found_start = btrfs_header_bytenr(eb); 197 if (found_start != start) { 198 printk("warning: eb start incorrect %Lu buffer %Lu len %lu\n", 199 start, found_start, len); |
200 WARN_ON(1); 201 goto err; |
|
200 } | 202 } |
203 if (eb->first_page != page) { 204 printk("bad first page %lu %lu\n", eb->first_page->index, 205 page->index); 206 WARN_ON(1); 207 goto err; 208 } 209 if (!PageUptodate(page)) { 210 printk("csum not up to date page %lu\n", page->index); 211 WARN_ON(1); 212 goto err; 213 } |
|
201 found_level = btrfs_header_level(eb); 202 csum_tree_block(root, eb, 0); | 214 found_level = btrfs_header_level(eb); 215 csum_tree_block(root, eb, 0); |
216err: |
|
203 free_extent_buffer(eb); 204out: 205 return 0; 206} 207 208static int btree_writepage_io_hook(struct page *page, u64 start, u64 end) 209{ 210 struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; --- 152 unchanged lines hidden (view full) --- 363 unlock_extent(extent_tree, buf->start, end, GFP_NOFS); 364 return buf; 365} 366 367int clean_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root, 368 struct extent_buffer *buf) 369{ 370 struct inode *btree_inode = root->fs_info->btree_inode; | 217 free_extent_buffer(eb); 218out: 219 return 0; 220} 221 222static int btree_writepage_io_hook(struct page *page, u64 start, u64 end) 223{ 224 struct btrfs_root *root = BTRFS_I(page->mapping->host)->root; --- 152 unchanged lines hidden (view full) --- 377 unlock_extent(extent_tree, buf->start, end, GFP_NOFS); 378 return buf; 379} 380 381int clean_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root, 382 struct extent_buffer *buf) 383{ 384 struct inode *btree_inode = root->fs_info->btree_inode; |
371 clear_extent_buffer_dirty(&BTRFS_I(btree_inode)->extent_tree, buf); | 385 if (btrfs_header_generation(buf) == 386 root->fs_info->running_transaction->transid) 387 clear_extent_buffer_dirty(&BTRFS_I(btree_inode)->extent_tree, 388 buf); |
372 return 0; 373} 374 375int wait_on_tree_block_writeback(struct btrfs_root *root, 376 struct extent_buffer *buf) 377{ 378 struct inode *btree_inode = root->fs_info->btree_inode; 379 wait_on_extent_buffer_writeback(&BTRFS_I(btree_inode)->extent_tree, --- 512 unchanged lines hidden (view full) --- 892 transid, root->fs_info->generation); 893 WARN_ON(1); 894 } 895 set_extent_buffer_dirty(&BTRFS_I(btree_inode)->extent_tree, buf); 896} 897 898void btrfs_throttle(struct btrfs_root *root) 899{ | 389 return 0; 390} 391 392int wait_on_tree_block_writeback(struct btrfs_root *root, 393 struct extent_buffer *buf) 394{ 395 struct inode *btree_inode = root->fs_info->btree_inode; 396 wait_on_extent_buffer_writeback(&BTRFS_I(btree_inode)->extent_tree, --- 512 unchanged lines hidden (view full) --- 909 transid, root->fs_info->generation); 910 WARN_ON(1); 911 } 912 set_extent_buffer_dirty(&BTRFS_I(btree_inode)->extent_tree, buf); 913} 914 915void btrfs_throttle(struct btrfs_root *root) 916{ |
900 if (root->fs_info->throttles) 901 congestion_wait(WRITE, HZ/10); | 917 struct backing_dev_info *bdi; 918 919 bdi = root->fs_info->sb->s_bdev->bd_inode->i_mapping->backing_dev_info; 920 if (root->fs_info->throttles && bdi_write_congested(bdi)) 921 congestion_wait(WRITE, HZ/20); |
902} 903 904void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr) 905{ 906 balance_dirty_pages_ratelimited_nr( 907 root->fs_info->btree_inode->i_mapping, 1); 908} 909 --- 63 unchanged lines hidden --- | 922} 923 924void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr) 925{ 926 balance_dirty_pages_ratelimited_nr( 927 root->fs_info->btree_inode->i_mapping, 1); 928} 929 --- 63 unchanged lines hidden --- |