Message ID | 4100134ef391cc33487ded6568bdf1a2abd1e8e7.1718195956.git.amjadsharafi10@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vvfat: Fix write bugs for large files and add iotests | expand |
12.06.2024 15:43, Amjad Alsharafi wrote: > Before this commit, the behavior when calling `commit_one_file` for > example with `offset=0x2000` (second cluster), what will happen is that > we won't fetch the next cluster from the fat, and instead use the first > cluster for the read operation. > > This is due to off-by-one error here, where `i=0x2000 !< offset=0x2000`, > thus not fetching the next cluster. This smells like a -stable material, despite the fact vvfat is generally unreliable. I'm picking this up for 7.2.x and 9.0.x. Thanks, /mjt
diff --git a/block/vvfat.c b/block/vvfat.c index 9d050ba3ae..19da009a5b 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -2525,8 +2525,9 @@ commit_one_file(BDRVVVFATState* s, int dir_index, uint32_t offset) return -1; } - for (i = s->cluster_size; i < offset; i += s->cluster_size) + for (i = 0; i < offset; i += s->cluster_size) { c = modified_fat_get(s, c); + } fd = qemu_open_old(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666); if (fd < 0) {