libfiemap_writer: Fix bugs in vfat handling.
FIBMAP returns block numbers, whereas fiemap_writer was treating them as byte offsets. Bug: 126230649 Test: gsi_tool install to vfat works Change-Id: Ice80128213425aa9601e381d0fbe53f9581bf596
This commit is contained in:
parent
8a1fb91e14
commit
f9134aa1d5
1 changed files with 6 additions and 5 deletions
|
@ -501,12 +501,13 @@ static bool ReadFibmap(int file_fd, const std::string& file_path,
|
|||
}
|
||||
|
||||
if (!extents->empty() && block == last_block + 1) {
|
||||
extents->back().fe_length++;
|
||||
extents->back().fe_length += s.st_blksize;
|
||||
} else {
|
||||
extents->push_back(fiemap_extent{.fe_logical = block_number,
|
||||
.fe_physical = block,
|
||||
.fe_length = 1,
|
||||
.fe_flags = 0});
|
||||
extents->push_back(
|
||||
fiemap_extent{.fe_logical = block_number,
|
||||
.fe_physical = static_cast<uint64_t>(block) * s.st_blksize,
|
||||
.fe_length = static_cast<uint64_t>(s.st_blksize),
|
||||
.fe_flags = 0});
|
||||
}
|
||||
last_block = block;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue