On Thu, Nov 26, 2020 at 05:50:36PM +0100, Jan Kara wrote: > > + if (size == capacity || > > + (disk->flags & (GENHD_FL_UP | GENHD_FL_HIDDEN)) != GENHD_FL_UP) > > + return false; > > + pr_info("%s: detected capacity change from %lld to %lld\n", > > + disk->disk_name, size, capacity); > > + kobject_uevent_env(&disk_to_dev(disk)->kobj, KOBJ_CHANGE, envp); > > I think we don't want to generate resize event for changes from / to 0... Didn't you ask for that in the last round? > Also the return value of this function is now different. It returns true if it did send an uevent, which is what the callers rely on. > > diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c > > index 4e37fa9b409d52..a70c33c49f0960 100644 > > --- a/drivers/target/target_core_pscsi.c > > +++ b/drivers/target/target_core_pscsi.c > > @@ -1027,12 +1027,7 @@ static u32 pscsi_get_device_type(struct se_device *dev) > > > > static sector_t pscsi_get_blocks(struct se_device *dev) > > { > > - struct pscsi_dev_virt *pdv = PSCSI_DEV(dev); > > - > > - if (pdv->pdv_bd && pdv->pdv_bd->bd_part) > > - return pdv->pdv_bd->bd_part->nr_sects; > > - > > - return 0; > > + return bdev_nr_sectors(PSCSI_DEV(dev)->pdv_bd); > > I pdv_bd guaranteed to be non-NULL in pscsi_dev_virt? Looking at the code - only for disk devices. And while ->get_blocks should only be called for those I'd rather err on the safe side and will add the check back.