[libvirt] [PATCH v4] storage: Check for invalid storage mode before opening
Cole Robinson
crobinso at redhat.com
Fri May 28 19:53:16 UTC 2010
On 05/28/2010 03:38 PM, Eric Blake wrote:
> On 05/28/2010 01:26 PM, Cole Robinson wrote:
>> v4: Make second VolOpen function more extensible. Didn't opt to change
>> FS backend defaults, this can just be to fix the original bug.
>
> Good - you were able to take my pseudocode and flush it into something
> that looks even better.
>
>> +
>> + if (S_ISREG(sb.st_mode))
>> + mode = VIR_STORAGE_VOL_OPEN_REG;
>> + else if (S_ISCHR(sb.st_mode))
>> + mode = VIR_STORAGE_VOL_OPEN_CHAR;
>> + else if (S_ISBLK(sb.st_mode))
>> + mode = VIR_STORAGE_VOL_OPEN_BLOCK;
>> +
>
> Easy enough to extend, but as you say, extensions come later.
>
>> diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
>> index 907c4bc..d0f40da 100644
>> --- a/src/storage/storage_backend.h
>> +++ b/src/storage/storage_backend.h
>> @@ -80,6 +80,25 @@ struct _virStorageBackend {
>>
>> virStorageBackendPtr virStorageBackendForType(int type);
>>
>> +int virStorageBackendVolOpen(const char *path)
>> +ATTRIBUTE_NONNULL(1);
>> +
>> +/* VolOpenCheckMode flags */
>> +enum {
>> + VIR_STORAGE_VOL_OPEN_ERROR = 1 << 0, /* warn if unexpected type
>> + * encountered */
>> + VIR_STORAGE_VOL_OPEN_REG = 1 << 1, /* regular files okay */
>> + VIR_STORAGE_VOL_OPEN_BLOCK = 1 << 2, /* block files okay */
>> + VIR_STORAGE_VOL_OPEN_CHAR = 1 << 3, /* char okay */
>
> s/char /char files /
>
>> +};
>> +
>> +#define DEFAULT_VOL_OPEN_FLAGS (VIR_STORAGE_VOL_OPEN_ERROR |\
>> + VIR_STORAGE_VOL_OPEN_REG |\
>> + VIR_STORAGE_VOL_OPEN_CHAR |\
>> + VIR_STORAGE_VOL_OPEN_BLOCK)
>
> Namespace pollution, since the macro doesn't start with VIR_.
>
> s/DEFAULT_VOL_OPEN_FLAGS/VIR_STORAGE_VOL_OPEN_DEFAULT/
>
>> +
>> +int virStorageBackendVolOpenCheckMode(const char *path, unsigned int flags)
>> +ATTRIBUTE_NONNULL(1);
>
> Also add ATTRIBUTE_RETURN_CHECK.
>
> ACK with those minor changes.
>
Thanks! I made those changes and pushed.
- Cole
More information about the libvir-list
mailing list