move_extent.c (b65b34895437915f411882dd40d704eb0863ffb0) | move_extent.c (24676da469f50f433baa347845639662c561d1f6) |
---|---|
1/* 2 * Copyright (c) 2008,2009 NEC Software Tohoku, Ltd. 3 * Written by Takashi Sato <t-sato@yk.jp.nec.com> 4 * Akira Fujita <a-fujita@rs.jp.nec.com> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of version 2.1 of the GNU Lesser General Public License 8 * as published by the Free Software Foundation. --- 468 unchanged lines hidden (view full) --- 477{ 478 struct ext4_extent *oext, *o_start, *o_end, *prev_ext; 479 struct ext4_extent new_ext, start_ext, end_ext; 480 ext4_lblk_t new_ext_end; 481 int oext_alen, new_ext_alen, end_ext_alen; 482 int depth = ext_depth(orig_inode); 483 int ret; 484 | 1/* 2 * Copyright (c) 2008,2009 NEC Software Tohoku, Ltd. 3 * Written by Takashi Sato <t-sato@yk.jp.nec.com> 4 * Akira Fujita <a-fujita@rs.jp.nec.com> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of version 2.1 of the GNU Lesser General Public License 8 * as published by the Free Software Foundation. --- 468 unchanged lines hidden (view full) --- 477{ 478 struct ext4_extent *oext, *o_start, *o_end, *prev_ext; 479 struct ext4_extent new_ext, start_ext, end_ext; 480 ext4_lblk_t new_ext_end; 481 int oext_alen, new_ext_alen, end_ext_alen; 482 int depth = ext_depth(orig_inode); 483 int ret; 484 |
485 start_ext.ee_block = end_ext.ee_block = 0; |
|
485 o_start = o_end = oext = orig_path[depth].p_ext; 486 oext_alen = ext4_ext_get_actual_len(oext); 487 start_ext.ee_len = end_ext.ee_len = 0; 488 489 new_ext.ee_block = cpu_to_le32(*from); 490 ext4_ext_store_pblock(&new_ext, ext_pblock(dext)); 491 new_ext.ee_len = dext->ee_len; 492 new_ext_alen = ext4_ext_get_actual_len(&new_ext); --- 31 unchanged lines hidden (view full) --- 524 } 525 526 /* 527 * Case: new_ext_end must be less than oext 528 * oext |-----------| 529 * new_ext |-------| 530 */ 531 if (le32_to_cpu(oext->ee_block) + oext_alen - 1 < new_ext_end) { | 486 o_start = o_end = oext = orig_path[depth].p_ext; 487 oext_alen = ext4_ext_get_actual_len(oext); 488 start_ext.ee_len = end_ext.ee_len = 0; 489 490 new_ext.ee_block = cpu_to_le32(*from); 491 ext4_ext_store_pblock(&new_ext, ext_pblock(dext)); 492 new_ext.ee_len = dext->ee_len; 493 new_ext_alen = ext4_ext_get_actual_len(&new_ext); --- 31 unchanged lines hidden (view full) --- 525 } 526 527 /* 528 * Case: new_ext_end must be less than oext 529 * oext |-----------| 530 * new_ext |-------| 531 */ 532 if (le32_to_cpu(oext->ee_block) + oext_alen - 1 < new_ext_end) { |
532 ext4_error(orig_inode->i_sb, | 533 EXT4_ERROR_INODE(orig_inode, |
533 "new_ext_end(%u) should be less than or equal to " 534 "oext->ee_block(%u) + oext_alen(%d) - 1", 535 new_ext_end, le32_to_cpu(oext->ee_block), 536 oext_alen); 537 ret = -EIO; 538 goto out; 539 } 540 --- 146 unchanged lines hidden (view full) --- 687 donor_off, count); 688 if (*err) 689 goto out; 690 691 /* Loop for the donor extents */ 692 while (1) { 693 /* The extent for donor must be found. */ 694 if (!dext) { | 534 "new_ext_end(%u) should be less than or equal to " 535 "oext->ee_block(%u) + oext_alen(%d) - 1", 536 new_ext_end, le32_to_cpu(oext->ee_block), 537 oext_alen); 538 ret = -EIO; 539 goto out; 540 } 541 --- 146 unchanged lines hidden (view full) --- 688 donor_off, count); 689 if (*err) 690 goto out; 691 692 /* Loop for the donor extents */ 693 while (1) { 694 /* The extent for donor must be found. */ 695 if (!dext) { |
695 ext4_error(donor_inode->i_sb, | 696 EXT4_ERROR_INODE(donor_inode, |
696 "The extent for donor must be found"); 697 *err = -EIO; 698 goto out; 699 } else if (donor_off != le32_to_cpu(tmp_dext.ee_block)) { | 697 "The extent for donor must be found"); 698 *err = -EIO; 699 goto out; 700 } else if (donor_off != le32_to_cpu(tmp_dext.ee_block)) { |
700 ext4_error(donor_inode->i_sb, | 701 EXT4_ERROR_INODE(donor_inode, |
701 "Donor offset(%u) and the first block of donor " 702 "extent(%u) should be equal", 703 donor_off, 704 le32_to_cpu(tmp_dext.ee_block)); 705 *err = -EIO; 706 goto out; 707 } 708 --- 640 unchanged lines hidden (view full) --- 1349 block_len_in_page, uninit, 1350 &ret1); 1351 1352 /* Count how many blocks we have exchanged */ 1353 *moved_len += block_len_in_page; 1354 if (ret1 < 0) 1355 break; 1356 if (*moved_len > len) { | 702 "Donor offset(%u) and the first block of donor " 703 "extent(%u) should be equal", 704 donor_off, 705 le32_to_cpu(tmp_dext.ee_block)); 706 *err = -EIO; 707 goto out; 708 } 709 --- 640 unchanged lines hidden (view full) --- 1350 block_len_in_page, uninit, 1351 &ret1); 1352 1353 /* Count how many blocks we have exchanged */ 1354 *moved_len += block_len_in_page; 1355 if (ret1 < 0) 1356 break; 1357 if (*moved_len > len) { |
1357 ext4_error(orig_inode->i_sb, | 1358 EXT4_ERROR_INODE(orig_inode, |
1358 "We replaced blocks too much! " 1359 "sum of replaced: %llu requested: %llu", 1360 *moved_len, len); 1361 ret1 = -EIO; 1362 break; 1363 } 1364 1365 orig_page_offset++; --- 56 unchanged lines hidden --- | 1359 "We replaced blocks too much! " 1360 "sum of replaced: %llu requested: %llu", 1361 *moved_len, len); 1362 ret1 = -EIO; 1363 break; 1364 } 1365 1366 orig_page_offset++; --- 56 unchanged lines hidden --- |