[libvirt] [TCK PATCH] block devices: allow specification of size for safety
Jim Meyering
jim at meyering.net
Wed May 5 20:08:31 UTC 2010
Eric Blake wrote:
> On 05/05/2010 12:54 PM, Jim Meyering wrote:
>>> + if (!defined $device) {
>>> + $device = $self->config("host_block_devices/[$devindex]", undef);
>>> + }
>>
>> This can be equivalently (idiomatically) written as:
>>
>> $device ||= $self->config("host_block_devices/[$devindex]", undef);
>
> Thanks for the tip.
>
>>> + if ($size) {
>>> + sysopen(BLK, "$device", O_RDONLY) or return undef;
>>> + return undef unless sysseek(BLK, 0, SEEK_END) == $size * 1024;
>>> + close(BLK);
>>> + }
>>
>> (Note no need for double quotes around $device;
>> Leaving parens off of some built-ins like "close" is a personal
>> preference (less syntax is better), but obviously keeping in sync
>> with the prevailing style is more important)
>>
>> This is similar, but doesn't leave BLK open upon failure or size mismatch:
>
> Aargh. I noticed that too, and even have it in my editor, but I hadn't
> hit save before I did 'git commit'. But your alternative
>
>>
>> if ($size) {
>> my $match = (sysopen (BLK, $device, O_RDONLY)
>> && sysseek (BLK, 0, SEEK_END) == $size * 1024);
>> close BLK;
>> $match or return undef;
>> }
>
> is even shorter that what 'git diff' says was still in my editor:
Your "$blocks" is better than "$size", but
how about $kb_blocks instead "blocks", to distinguish from
the relatively common connotation of 512-byte blocks.
> diff --git i/lib/Sys/Virt/TCK.pm w/lib/Sys/Virt/TCK.pm
> index fc325a3..1fcfdf0 100644
> --- i/lib/Sys/Virt/TCK.pm
> +++ w/lib/Sys/Virt/TCK.pm
> @@ -835,15 +835,16 @@ sub get_host_block_device {
> my $devindex = @_ ? shift : 0;
>
> my $device = $self->config("host_block_devices/[$devindex]/path",
> undef);
> - my $size = $self->config("host_block_devices/[$devindex]/size", 0);
> + my $blocks = $self->config("host_block_devices/[$devindex]/size", 0);
More information about the libvir-list
mailing list