Re: [PATCH 09/19] xsysace: simplify media change handling

2020-09-09 Thread Hannes Reinecke
On 9/8/20 4:53 PM, Christoph Hellwig wrote:
> Pass a struct ace_device to ace_revalidate_disk, move the media changed
> check into the one caller that needs it, and give the routine a better
> name.
> 
> Signed-off-by: Christoph Hellwig 
> ---
>  drivers/block/xsysace.c | 26 ++
>  1 file changed, 10 insertions(+), 16 deletions(-)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckeKernel Storage Architect
h...@suse.de  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer


[PATCH 09/19] xsysace: simplify media change handling

2020-09-08 Thread Christoph Hellwig
Pass a struct ace_device to ace_revalidate_disk, move the media changed
check into the one caller that needs it, and give the routine a better
name.

Signed-off-by: Christoph Hellwig 
---
 drivers/block/xsysace.c | 26 ++
 1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index eefe542f2d9fff..8d581c7536fb51 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -888,26 +888,20 @@ static unsigned int ace_check_events(struct gendisk *gd, 
unsigned int clearing)
return ace->media_change ? DISK_EVENT_MEDIA_CHANGE : 0;
 }
 
-static int ace_revalidate_disk(struct gendisk *gd)
+static void ace_media_changed(struct ace_device *ace)
 {
-   struct ace_device *ace = gd->private_data;
unsigned long flags;
 
-   dev_dbg(ace->dev, "ace_revalidate_disk()\n");
-
-   if (ace->media_change) {
-   dev_dbg(ace->dev, "requesting cf id and scheduling tasklet\n");
+   dev_dbg(ace->dev, "requesting cf id and scheduling tasklet\n");
 
-   spin_lock_irqsave(>lock, flags);
-   ace->id_req_count++;
-   spin_unlock_irqrestore(>lock, flags);
+   spin_lock_irqsave(>lock, flags);
+   ace->id_req_count++;
+   spin_unlock_irqrestore(>lock, flags);
 
-   tasklet_schedule(>fsm_tasklet);
-   wait_for_completion(>id_completion);
-   }
+   tasklet_schedule(>fsm_tasklet);
+   wait_for_completion(>id_completion);
 
dev_dbg(ace->dev, "revalidate complete\n");
-   return ace->id_result;
 }
 
 static int ace_open(struct block_device *bdev, fmode_t mode)
@@ -922,8 +916,8 @@ static int ace_open(struct block_device *bdev, fmode_t mode)
ace->users++;
spin_unlock_irqrestore(>lock, flags);
 
-   if (bdev_check_media_change(bdev))
-   ace_revalidate_disk(bdev->bd_disk);
+   if (bdev_check_media_change(bdev) && ace->media_change)
+   ace_media_changed(ace);
mutex_unlock(_mutex);
 
return 0;
@@ -1080,7 +1074,7 @@ static int ace_setup(struct ace_device *ace)
(unsigned long long) ace->physaddr, ace->baseaddr, ace->irq);
 
ace->media_change = 1;
-   ace_revalidate_disk(ace->gd);
+   ace_media_changed(ace);
 
/* Make the sysace device 'live' */
add_disk(ace->gd);
-- 
2.28.0



[PATCH 09/19] xsysace: simplify media change handling

2020-09-02 Thread Christoph Hellwig
Pass a struct ace_device to ace_revalidate_disk, move the media changed
check into the one caller that needs it, and give the routine a better
name.

Signed-off-by: Christoph Hellwig 
---
 drivers/block/xsysace.c | 26 ++
 1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index eefe542f2d9fff..8d581c7536fb51 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -888,26 +888,20 @@ static unsigned int ace_check_events(struct gendisk *gd, 
unsigned int clearing)
return ace->media_change ? DISK_EVENT_MEDIA_CHANGE : 0;
 }
 
-static int ace_revalidate_disk(struct gendisk *gd)
+static void ace_media_changed(struct ace_device *ace)
 {
-   struct ace_device *ace = gd->private_data;
unsigned long flags;
 
-   dev_dbg(ace->dev, "ace_revalidate_disk()\n");
-
-   if (ace->media_change) {
-   dev_dbg(ace->dev, "requesting cf id and scheduling tasklet\n");
+   dev_dbg(ace->dev, "requesting cf id and scheduling tasklet\n");
 
-   spin_lock_irqsave(>lock, flags);
-   ace->id_req_count++;
-   spin_unlock_irqrestore(>lock, flags);
+   spin_lock_irqsave(>lock, flags);
+   ace->id_req_count++;
+   spin_unlock_irqrestore(>lock, flags);
 
-   tasklet_schedule(>fsm_tasklet);
-   wait_for_completion(>id_completion);
-   }
+   tasklet_schedule(>fsm_tasklet);
+   wait_for_completion(>id_completion);
 
dev_dbg(ace->dev, "revalidate complete\n");
-   return ace->id_result;
 }
 
 static int ace_open(struct block_device *bdev, fmode_t mode)
@@ -922,8 +916,8 @@ static int ace_open(struct block_device *bdev, fmode_t mode)
ace->users++;
spin_unlock_irqrestore(>lock, flags);
 
-   if (bdev_check_media_change(bdev))
-   ace_revalidate_disk(bdev->bd_disk);
+   if (bdev_check_media_change(bdev) && ace->media_change)
+   ace_media_changed(ace);
mutex_unlock(_mutex);
 
return 0;
@@ -1080,7 +1074,7 @@ static int ace_setup(struct ace_device *ace)
(unsigned long long) ace->physaddr, ace->baseaddr, ace->irq);
 
ace->media_change = 1;
-   ace_revalidate_disk(ace->gd);
+   ace_media_changed(ace);
 
/* Make the sysace device 'live' */
add_disk(ace->gd);
-- 
2.28.0