On 04/03/2013 01:06 PM, Hu Tao wrote:
On Mon, Apr 01, 2013 at 08:00:57PM +0800, Han Cheng wrote:
> +struct _virSCSIDevice {
> + unsigned int adapter;
> + unsigned int bus;
> + unsigned int target;
> + unsigned int unit;
> +
> + char *name; /* adapter:bus:target:unit */
> + char *id; /* model vendor */
> + char *path;
> + const char *used_by; /* name of the domain using this dev */
> +
> + unsigned int readonly : 1;
> +};
> +
> +struct _virSCSIDeviceList {
> + virObjectLockable parent;
> + unsigned int count;
> + virSCSIDevicePtr *devs;
> +};
I think it's better to implement a generic object list, otherwise
everytime who wants a list, he/she has to re-implement a list.
I agree with you. And I mentioned it in the cover letter.
> +
> +static virClassPtr virSCSIDeviceListClass;
> +
> +static void virSCSIDeviceListDispose(void *obj);
> +
> +static int virSCSIOnceInit(void)
> +{
> + if (!(virSCSIDeviceListClass = virClassNew(virClassForObjectLockable(),
> + "virSCSIDeviceList",
> + sizeof(virSCSIDeviceList),
> + virSCSIDeviceListDispose)))
The indentation style is:
virClassNew(...
...
^
Please correct them everywhere in your patches. You want to have a look
at HACKING for configs of editors.
Sorry about this. This will be fixed.
> +
> +int virSCSIDeviceFileIterate(virSCSIDevicePtr dev,
> + virSCSIDeviceFileActor actor,
> + void *opaque)
> +{
> + return (actor)(dev, dev->path, opaque);
> +}
What's the difference with directly calling actor?
To be honest, I don't know the difference. Maybe there is no difference.
I just define and use it like vir(pci|usb).c