On Mon, Sep 01, 2014 at 06:47:13AM +0000, Gonglei (Arei) wrote:
> > From: Gerd Hoffmann [mailto:kra...@redhat.com]
> > Sent: Monday, September 01, 2014 2:43 PM
> > Subject: Re: [PATCH v6 02/27] bootindex: add del_boot_device_path function
> > Importance: High
> > 
> >   Hi,
> > 
> > > +static bool is_same_fw_dev_path(DeviceState *src, DeviceState *dst)
> > > +{
> > > +    bool ret = false;
> > > +    char *devpath_src = qdev_get_fw_dev_path(src);
> > > +    char *devpath_dst = qdev_get_fw_dev_path(dst);
> > > +
> > > +    if (!strcmp(devpath_src, devpath_dst)) {
> > > +        ret = true;
> > > +    }
> > > +
> > > +    g_free(devpath_src);
> > > +    g_free(devpath_dst);
> > > +    return ret;
> > > +}
> > > +
> > > +void del_boot_device_path(DeviceState *dev)
> > > +{
> > > +    FWBootEntry *i;
> > > +
> > > +    assert(dev != NULL);
> > > +
> > > +    /* remove all entries of the assigned device */
> > > +    QTAILQ_FOREACH(i, &fw_boot_order, link) {
> > > +        if (i->dev == NULL) {
> > > +            continue;
> > > +        }
> > > +        if ((i->dev == dev || is_same_fw_dev_path(i->dev, dev))) {
> > 
> > Why this is needed?  Is there any case where i-->dev != dev but
> > is_same_fw_dev_path() returns true?
> > 
> Yes, it is needed. At present, the virito-net-pci device 
> compliance with this situation.
> 
> Please see the qom path about virtio-net-pci and virtio-net device:
> 
> id: null, /machine/peripheral/nic1/virtio-backend
> id: nic1, /machine/peripheral/nic1

And why exactly is the caller passing a different pointer to
del_boot_device_path()? Why not simply change the caller to pass the
same pointer to add_boot_device_path() and del_boot_device_path()?

-- 
Eduardo

Reply via email to