qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 17/26] qemu-io: fix the alloc command


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 17/26] qemu-io: fix the alloc command
Date: Tue, 08 May 2012 15:06:16 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120425 Thunderbird/12.0

Il 08/05/2012 14:57, Kevin Wolf ha scritto:
>> > 
>> > diff --git a/qemu-io.c b/qemu-io.c
>> > index 43643c8..27a0c3c 100644
>> > --- a/qemu-io.c
>> > +++ b/qemu-io.c
>> > @@ -1560,7 +1560,7 @@ out:
>> >  
>> >  static int alloc_f(int argc, char **argv)
>> >  {
>> > -    int64_t offset;
>> > +    int64_t offset, sector_num;
>> >      int nb_sectors, remaining;
>> >      char s1[64];
>> >      int num, sum_alloc;
>> > @@ -1581,12 +1581,18 @@ static int alloc_f(int argc, char **argv)
>> >  
>> >      remaining = nb_sectors;
>> >      sum_alloc = 0;
>> > +    sector_num = offset >> 9;
>> >      while (remaining) {
>> > -        ret = bdrv_is_allocated(bs, offset >> 9, nb_sectors, &num);
>> > +        ret = bdrv_is_allocated(bs, sector_num, remaining, &num);
>> > +        sector_num += num;
>> >          remaining -= num;
>> >          if (ret) {
>> >              sum_alloc += num;
>> >          }
>> > +        if (num == 0) {
>> > +            nb_sectors -= remaining;
>> > +            remaining = 0;
>> > +        }
>> >      }
>> >  
>> >      cvtstr(offset, s1, sizeof(s1));
> This doesn't provide the semantics I expected, i.e. the semantics of
> bdrv_is_allocated, which is the number of contiguous clusters that are
> allocated or unallocated. Instead you provide the number of all
> allocated in the whole area even if there are some unallocated clusters
> in the middle.

commit a7824a886ed50eb4fe3c6fcd6afd8814a6973583
Author: Kevin Wolf <address@hidden>
Date:   Mon Jul 20 16:48:43 2009 +0200

    qemu-io: Rework alloc command
    
    The alloc command in qemu-io is mostly useless currently. Instead of doing a
    single call to bdrv_is_allocated, we must call bdrv_is_allocated in a loop
    until we have found out for each requested sector if it is allocated or not
    (bdrv_is_allocated returns a number of sectors that are known to be in the 
same
    state as the first one, but it is not required to include all of them)
    
    This changes the output format of the alloc command so that a change to the
    expected output of qemu-iotests 019 is necessary once this is included.
    
    Signed-off-by: Kevin Wolf <address@hidden>
    Signed-off-by: Anthony Liguori <address@hidden>

I guess this guy knows. :)

> Do you think there's a use case for the sum of the whole area?

I think for tests it's more useful, you don't want to depend on the 
implementation
of is_allocated.  That's what I can guess from the above commit message and from
the way 019 uses alloc.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]