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 ---