Message ID | 20220308113657.221101-2-takahiro.akashi@linaro.org |
---|---|
State | New |
Headers | show |
Series | efi_loader: more tightly integrate UEFI disks to driver model | expand |
On 3/8/22 12:36, AKASHI Takahiro wrote: > Every time a scsi bus/port is scanned and a new block device is detected, > we want to call device_probe() as it will give us a chance to run > additional post-processings for some purposes. > > In particular, support for creating partitions on a device will be added. > > Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> > Reviewed-by: Simon Glass <sjg@chromium.org> > --- > drivers/scsi/scsi.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c > index d7b33010e469..78d729d809d7 100644 > --- a/drivers/scsi/scsi.c > +++ b/drivers/scsi/scsi.c > @@ -595,6 +595,11 @@ static int do_scsi_scan_one(struct udevice *dev, int id, int lun, bool verbose) > ata_swap_buf_le16((u16 *)&bdesc->revision, sizeof(bd.revision) / 2); > } > > + ret = blk_probe_or_unbind(bdev); > + if (ret < 0) > + /* TODO: undo create */ Isn't device_unbind() releasing all resources? What is missing? Best regards Heinrich > + return ret; > + > if (verbose) { > printf(" Device %d: ", bdesc->devnum); > dev_print(bdesc);
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index d7b33010e469..78d729d809d7 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -595,6 +595,11 @@ static int do_scsi_scan_one(struct udevice *dev, int id, int lun, bool verbose) ata_swap_buf_le16((u16 *)&bdesc->revision, sizeof(bd.revision) / 2); } + ret = blk_probe_or_unbind(bdev); + if (ret < 0) + /* TODO: undo create */ + return ret; + if (verbose) { printf(" Device %d: ", bdesc->devnum); dev_print(bdesc);