qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Amjad Alsharafi <amjadsharafi10@gmail.com>
Cc: qemu-devel@nongnu.org, Hanna Reitz <hreitz@redhat.com>,
	"open list:vvfat" <qemu-block@nongnu.org>
Subject: Re: [PATCH v3 1/6] vvfat: Fix bug in writing to middle of file
Date: Fri, 31 May 2024 18:15:35 +0200	[thread overview]
Message-ID: <Zln3p6x_pjoyIHYq@redhat.com> (raw)
In-Reply-To: <2871281d8ea41fb4d7ef8f9beeaba017a1717019.1716717181.git.amjadsharafi10@gmail.com>

Am 26.05.2024 um 11:56 hat Amjad Alsharafi geschrieben:
> 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.
> 
> Signed-off-by: Amjad Alsharafi <amjadsharafi10@gmail.com>

Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Tested-by: Kevin Wolf <kwolf@redhat.com>

> diff --git a/block/vvfat.c b/block/vvfat.c
> index 9d050ba3ae..ab342f0743 100644
> --- a/block/vvfat.c
> +++ b/block/vvfat.c
> @@ -2525,7 +2525,7 @@ 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 = s->cluster_size; i <= offset; i += s->cluster_size)
>          c = modified_fat_get(s, c);

While your change results in the correct behaviour, I think I would
prefer the code to be changed like this so that at the start of each
loop iteration, 'i' always refers to the offset that matches 'c':

    for (i = 0; i < offset; i += s->cluster_size) {
        c = modified_fat_get(s, c);
    }

I'm also adding braces here to make the code conform with the QEMU
coding style. You can use scripts/checkpatch.pl to make sure that all
code you add has the correct style. Much of the vvfat code predates the
coding style, so you'll often have to change style when you touch a
line. (Which is good, because it slowly fixes the existing mess.)

You can keep my Reviewed/Tested-by if you change this.

Kevin



  reply	other threads:[~2024-05-31 16:16 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-26  9:56 [PATCH v3 0/6] vvfat: Fix write bugs for large files and add iotests Amjad Alsharafi
2024-05-26  9:56 ` [PATCH v3 1/6] vvfat: Fix bug in writing to middle of file Amjad Alsharafi
2024-05-31 16:15   ` Kevin Wolf [this message]
2024-05-26  9:56 ` [PATCH v3 2/6] vvfat: Fix usage of `info.file.offset` Amjad Alsharafi
2024-05-26  9:56 ` [PATCH v3 3/6] vvfat: Fix reading files with non-continuous clusters Amjad Alsharafi
2024-05-26  9:56 ` [PATCH v3 4/6] iotests: Add `vvfat` tests Amjad Alsharafi
2024-05-26  9:56 ` [PATCH v3 5/6] iotests: Filter out `vvfat` fmt from failing tests Amjad Alsharafi
2024-05-31 17:29   ` Kevin Wolf
2024-05-26  9:56 ` [PATCH v3 6/6] iotests: Add `create_file` test for `vvfat` driver Amjad Alsharafi
2024-05-31 17:22 ` [PATCH v3 0/6] vvfat: Fix write bugs for large files and add iotests Kevin Wolf
2024-06-05  0:38   ` Amjad Alsharafi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zln3p6x_pjoyIHYq@redhat.com \
    --to=kwolf@redhat.com \
    --cc=amjadsharafi10@gmail.com \
    --cc=hreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).