ext4: initialize moved_len before calling ext4_move_extents()
The move_extent.moved_len is used to pass back the number of exchanged blocks count to user space. Currently the caller must clear this field; but we spend more code space checking for this requirement than simply zeroing the field ourselves, so let's just make life easier for everyone all around. Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com> Signed-off-by: Akira Fujita <a-fujita@rs.jp.nec.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
Родитель
94d7c16cbb
Коммит
446aaa6e7e
|
@ -239,6 +239,7 @@ setversion_out:
|
|||
}
|
||||
}
|
||||
|
||||
me.moved_len = 0;
|
||||
err = ext4_move_extents(filp, donor_filp, me.orig_start,
|
||||
me.donor_start, me.len, &me.moved_len);
|
||||
fput(donor_filp);
|
||||
|
|
|
@ -947,7 +947,6 @@ out2:
|
|||
* @orig_start: logical start offset in block for orig
|
||||
* @donor_start: logical start offset in block for donor
|
||||
* @len: the number of blocks to be moved
|
||||
* @moved_len: moved block length
|
||||
*
|
||||
* Check the arguments of ext4_move_extents() whether the files can be
|
||||
* exchanged with each other.
|
||||
|
@ -955,8 +954,8 @@ out2:
|
|||
*/
|
||||
static int
|
||||
mext_check_arguments(struct inode *orig_inode,
|
||||
struct inode *donor_inode, __u64 orig_start,
|
||||
__u64 donor_start, __u64 *len, __u64 moved_len)
|
||||
struct inode *donor_inode, __u64 orig_start,
|
||||
__u64 donor_start, __u64 *len)
|
||||
{
|
||||
ext4_lblk_t orig_blocks, donor_blocks;
|
||||
unsigned int blkbits = orig_inode->i_blkbits;
|
||||
|
@ -1010,13 +1009,6 @@ mext_check_arguments(struct inode *orig_inode,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (moved_len) {
|
||||
ext4_debug("ext4 move extent: moved_len should be 0 "
|
||||
"[ino:orig %lu, donor %lu]\n", orig_inode->i_ino,
|
||||
donor_inode->i_ino);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ((orig_start > EXT_MAX_BLOCK) ||
|
||||
(donor_start > EXT_MAX_BLOCK) ||
|
||||
(*len > EXT_MAX_BLOCK) ||
|
||||
|
@ -1226,7 +1218,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp,
|
|||
double_down_write_data_sem(orig_inode, donor_inode);
|
||||
/* Check the filesystem environment whether move_extent can be done */
|
||||
ret1 = mext_check_arguments(orig_inode, donor_inode, orig_start,
|
||||
donor_start, &len, *moved_len);
|
||||
donor_start, &len);
|
||||
if (ret1)
|
||||
goto out;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче