linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 2/4] Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for ide-gd and ide-cd"
@ 2019-01-18 22:28 Martin Wilck
  2019-01-26 10:16 ` Hannes Reinecke
  0 siblings, 1 reply; 2+ messages in thread
From: Martin Wilck @ 2019-01-18 22:28 UTC (permalink / raw)
  To: Jens Axboe, Tejun Heo, Hannes Reinecke
  Cc: Martin Wilck, linux-scsi, linux-block, linux-ide,
	Christoph Hellwig, Martin K. Petersen, James Bottomley,
	Bart Van Assche, Borislav Petkov

This reverts commit 7eec77a1816a7042591a6cbdb4820e9e7ebffe0e.

Instead of leaving disk->events completely empty, we now export the supported
events again, and tell the block layer not to forward events to user space by
not setting DISK_EVENT_FLAG_UEVENT. This allows the block layer to distinguish
between devices that for which events should be handled in kernel only, and
devices which don't support any meda change events at all.

Changed wrt v1: fixed editing error made during revert.

Cc: Borislav Petkov <bp@alien8.de>
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
 drivers/ide/ide-cd.c       | 1 +
 drivers/ide/ide-cd_ioctl.c | 5 +++--
 drivers/ide/ide-gd.c       | 6 ++++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 1f03884..3b15adc 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1797,6 +1797,7 @@ static int ide_cd_probe(ide_drive_t *drive)
 	ide_cd_read_toc(drive);
 	g->fops = &idecd_ops;
 	g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
+	g->events = DISK_EVENT_MEDIA_CHANGE;
 	device_add_disk(&drive->gendev, g, NULL);
 	return 0;
 
diff --git a/drivers/ide/ide-cd_ioctl.c b/drivers/ide/ide-cd_ioctl.c
index 4a6e1a4..f9f4bac 100644
--- a/drivers/ide/ide-cd_ioctl.c
+++ b/drivers/ide/ide-cd_ioctl.c
@@ -82,8 +82,9 @@ int ide_cdrom_drive_status(struct cdrom_device_info *cdi, int slot_nr)
 
 /*
  * ide-cd always generates media changed event if media is missing, which
- * makes it impossible to use for proper event reporting, so disk->events
- * is cleared to 0 and the following function is used only to trigger
+ * makes it impossible to use for proper event reporting, so
+ * DISK_EVENT_FLAG_UEVENT is cleared in disk->events
+ * and the following function is used only to trigger
  * revalidation and never propagated to userland.
  */
 unsigned int ide_cdrom_check_events_real(struct cdrom_device_info *cdi,
diff --git a/drivers/ide/ide-gd.c b/drivers/ide/ide-gd.c
index 04e008e..88dceef 100644
--- a/drivers/ide/ide-gd.c
+++ b/drivers/ide/ide-gd.c
@@ -299,8 +299,9 @@ static unsigned int ide_gd_check_events(struct gendisk *disk,
 	/*
 	 * The following is used to force revalidation on the first open on
 	 * removeable devices, and never gets reported to userland as
-	 * genhd->events is 0.  This is intended as removeable ide disk
-	 * can't really detect MEDIA_CHANGE events.
+	 * DISK_EVENT_FLAG_UEVENT isn't set in genhd->events.
+	 * This is intended as removeable ide disk can't really detect
+	 * MEDIA_CHANGE events.
 	 */
 	ret = drive->dev_flags & IDE_DFLAG_MEDIA_CHANGED;
 	drive->dev_flags &= ~IDE_DFLAG_MEDIA_CHANGED;
@@ -416,6 +417,7 @@ static int ide_gd_probe(ide_drive_t *drive)
 	if (drive->dev_flags & IDE_DFLAG_REMOVABLE)
 		g->flags = GENHD_FL_REMOVABLE;
 	g->fops = &ide_gd_ops;
+	g->events = DISK_EVENT_MEDIA_CHANGE;
 	device_add_disk(&drive->gendev, g, NULL);
 	return 0;
 
-- 
2.19.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2 2/4] Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for ide-gd and ide-cd"
  2019-01-18 22:28 [PATCH v2 2/4] Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for ide-gd and ide-cd" Martin Wilck
@ 2019-01-26 10:16 ` Hannes Reinecke
  0 siblings, 0 replies; 2+ messages in thread
From: Hannes Reinecke @ 2019-01-26 10:16 UTC (permalink / raw)
  To: Martin Wilck, Jens Axboe, Tejun Heo
  Cc: linux-scsi, linux-block, linux-ide, Christoph Hellwig,
	Martin K. Petersen, James Bottomley, Bart Van Assche,
	Borislav Petkov

On 1/18/19 11:28 PM, Martin Wilck wrote:
> This reverts commit 7eec77a1816a7042591a6cbdb4820e9e7ebffe0e.
> 
> Instead of leaving disk->events completely empty, we now export the supported
> events again, and tell the block layer not to forward events to user space by
> not setting DISK_EVENT_FLAG_UEVENT. This allows the block layer to distinguish
> between devices that for which events should be handled in kernel only, and
> devices which don't support any meda change events at all.
> 
> Changed wrt v1: fixed editing error made during revert.
> 
> Cc: Borislav Petkov <bp@alien8.de>
> Signed-off-by: Martin Wilck <mwilck@suse.com>
> ---
>   drivers/ide/ide-cd.c       | 1 +
>   drivers/ide/ide-cd_ioctl.c | 5 +++--
>   drivers/ide/ide-gd.c       | 6 ++++--
>   3 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
> index 1f03884..3b15adc 100644
> --- a/drivers/ide/ide-cd.c
> +++ b/drivers/ide/ide-cd.c
> @@ -1797,6 +1797,7 @@ static int ide_cd_probe(ide_drive_t *drive)
>   	ide_cd_read_toc(drive);
>   	g->fops = &idecd_ops;
>   	g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
> +	g->events = DISK_EVENT_MEDIA_CHANGE;
>   	device_add_disk(&drive->gendev, g, NULL);
>   	return 0;
>   
> diff --git a/drivers/ide/ide-cd_ioctl.c b/drivers/ide/ide-cd_ioctl.c
> index 4a6e1a4..f9f4bac 100644
> --- a/drivers/ide/ide-cd_ioctl.c
> +++ b/drivers/ide/ide-cd_ioctl.c
> @@ -82,8 +82,9 @@ int ide_cdrom_drive_status(struct cdrom_device_info *cdi, int slot_nr)
>   
>   /*
>    * ide-cd always generates media changed event if media is missing, which
> - * makes it impossible to use for proper event reporting, so disk->events
> - * is cleared to 0 and the following function is used only to trigger
> + * makes it impossible to use for proper event reporting, so
> + * DISK_EVENT_FLAG_UEVENT is cleared in disk->events
> + * and the following function is used only to trigger
>    * revalidation and never propagated to userland.
>    */
>   unsigned int ide_cdrom_check_events_real(struct cdrom_device_info *cdi,
> diff --git a/drivers/ide/ide-gd.c b/drivers/ide/ide-gd.c
> index 04e008e..88dceef 100644
> --- a/drivers/ide/ide-gd.c
> +++ b/drivers/ide/ide-gd.c
> @@ -299,8 +299,9 @@ static unsigned int ide_gd_check_events(struct gendisk *disk,
>   	/*
>   	 * The following is used to force revalidation on the first open on
>   	 * removeable devices, and never gets reported to userland as
> -	 * genhd->events is 0.  This is intended as removeable ide disk
> -	 * can't really detect MEDIA_CHANGE events.
> +	 * DISK_EVENT_FLAG_UEVENT isn't set in genhd->events.
> +	 * This is intended as removeable ide disk can't really detect
> +	 * MEDIA_CHANGE events.
>   	 */
>   	ret = drive->dev_flags & IDE_DFLAG_MEDIA_CHANGED;
>   	drive->dev_flags &= ~IDE_DFLAG_MEDIA_CHANGED;
> @@ -416,6 +417,7 @@ static int ide_gd_probe(ide_drive_t *drive)
>   	if (drive->dev_flags & IDE_DFLAG_REMOVABLE)
>   		g->flags = GENHD_FL_REMOVABLE;
>   	g->fops = &ide_gd_ops;
> +	g->events = DISK_EVENT_MEDIA_CHANGE;
>   	device_add_disk(&drive->gendev, g, NULL);
>   	return 0;
>   
> 
Ah. Good.

Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-01-26 10:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-18 22:28 [PATCH v2 2/4] Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for ide-gd and ide-cd" Martin Wilck
2019-01-26 10:16 ` Hannes Reinecke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).