
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