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