summaryrefslogtreecommitdiff
path: root/c_src/posix_to_bcachefs.c
diff options
context:
space:
mode:
authorAriel Miculas <ariel.miculas@gmail.com>2024-06-04 10:43:24 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2024-06-13 14:34:53 -0400
commit5ac0826dd50b8b11e5595c0e5ad4b84ce57f269e (patch)
tree45b5fc9004dfcc90d080d8ddb3e6c8552078f953 /c_src/posix_to_bcachefs.c
parent943005c68b2365c609b96ca40c02ee5c3f0a9a2d (diff)
Fix incomplete file copy due to copy_data misuse
The copy_data function takes a start and an end parameter as the range of bytes to copy, but it was called with a start and a length parameter. This resulted in incomplete file copies. Fix it by passing the end of the range instead of the length. Signed-off-by: Ariel Miculas <ariel.miculas@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src/posix_to_bcachefs.c')
-rw-r--r--c_src/posix_to_bcachefs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/c_src/posix_to_bcachefs.c b/c_src/posix_to_bcachefs.c
index 63fab98f..52105be1 100644
--- a/c_src/posix_to_bcachefs.c
+++ b/c_src/posix_to_bcachefs.c
@@ -288,7 +288,7 @@ static void copy_file(struct bch_fs *c, struct bch_inode_unpacked *dst,
FIEMAP_EXTENT_NOT_ALIGNED|
FIEMAP_EXTENT_DATA_INLINE))) {
copy_data(c, dst, src_fd, e.fe_logical,
- min(src_size - e.fe_logical,
+ e.fe_logical + min(src_size - e.fe_logical,
e.fe_length));
continue;
}
@@ -299,7 +299,7 @@ static void copy_file(struct bch_fs *c, struct bch_inode_unpacked *dst,
*/
if (e.fe_physical < 1 << 20) {
copy_data(c, dst, src_fd, e.fe_logical,
- min(src_size - e.fe_logical,
+ e.fe_logical + min(src_size - e.fe_logical,
e.fe_length));
continue;
}