public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] DASD: send 'change' uevents
@ 2008-10-24  6:05 Hannes Reinecke
  2008-10-26 18:29 ` Martin Schwidefsky
  0 siblings, 1 reply; 2+ messages in thread
From: Hannes Reinecke @ 2008-10-24  6:05 UTC (permalink / raw)
  To: Martin Schwidefsky; +Cc: Linux Kernel, Michael Holzheu

[-- Attachment #1: Type: text/plain, Size: 458 bytes --]

Hi Martin,

this patch modifies the DASD driver to sent out 'change' events
whenever the internal state machine transitions in or out of the
'ready' state. This is required for udev so that vol_id and friends
can actually read from the disk.

Please apply.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)

[-- Attachment #2: dasd-send-change-events --]
[-- Type: text/plain, Size: 1945 bytes --]

DASD: Send 'change' uevents

A DASD is only useable after the internal state machine transitioned
to 'ready', way after the device has been added to sysfs.
So we need to send out a 'change' event here to notify udev.

Signed-off-by: Hannes Reinecke <hare@suse.de>

diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 0a225cc..447fcdc 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -335,7 +335,9 @@ static int dasd_state_unfmt_to_basic(struct dasd_device *device)
 static int
 dasd_state_ready_to_online(struct dasd_device * device)
 {
-	int rc;
+	int rc, i;
+	struct gendisk *disk = device->bdev->bd_disk;
+	struct hd_struct *p;
 
 	if (device->discipline->ready_to_online) {
 		rc = device->discipline->ready_to_online(device);
@@ -345,6 +347,15 @@ dasd_state_ready_to_online(struct dasd_device * device)
 	device->state = DASD_STATE_ONLINE;
 	if (device->block)
 		dasd_schedule_block_bh(device->block);
+
+	kobject_uevent(&disk->kobj, KOBJ_CHANGE);
+	/* send uevents for all partitions */
+	for (i = 1; i < disk->minors; i++) {
+		p = disk->part[i-1];
+		if (!p || !p->nr_sects)
+			continue;
+		kobject_uevent(&p->kobj, KOBJ_CHANGE);
+	}
 	return 0;
 }
 
@@ -353,7 +364,9 @@ dasd_state_ready_to_online(struct dasd_device * device)
  */
 static int dasd_state_online_to_ready(struct dasd_device *device)
 {
-	int rc;
+	int rc, i;
+	struct gendisk *disk = device->bdev->bd_disk;
+	struct hd_struct *p;
 
 	if (device->discipline->online_to_ready) {
 		rc = device->discipline->online_to_ready(device);
@@ -361,6 +374,14 @@ static int dasd_state_online_to_ready(struct dasd_device *device)
 			return rc;
 	}
 	device->state = DASD_STATE_READY;
+	/* send uevents for all partitions */
+	for (i = 1; i < disk->minors; i++) {
+		p = disk->part[i-1];
+		if (!p || !p->nr_sects)
+			continue;
+		kobject_uevent(&p->kobj, KOBJ_CHANGE);
+	}
+	kobject_uevent(&disk->kobj, KOBJ_CHANGE);
 	return 0;
 }
 

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

* Re: [PATCH] DASD: send 'change' uevents
  2008-10-24  6:05 [PATCH] DASD: send 'change' uevents Hannes Reinecke
@ 2008-10-26 18:29 ` Martin Schwidefsky
  0 siblings, 0 replies; 2+ messages in thread
From: Martin Schwidefsky @ 2008-10-26 18:29 UTC (permalink / raw)
  To: Hannes Reinecke; +Cc: Linux Kernel, Michael Holzheu, Stefan Weinhuber

Hi Hannes,

On Fri, 2008-10-24 at 08:05 +0200, Hannes Reinecke wrote:
> this patch modifies the DASD driver to sent out 'change' events
> whenever the internal state machine transitions in or out of the
> 'ready' state. This is required for udev so that vol_id and friends
> can actually read from the disk.
> 
> Please apply.

Looks reasonable to me. Stefan can you take a look at this please?

-- 
blue skies,
  Martin.

"Reality continues to ruin my life." - Calvin.



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

end of thread, other threads:[~2008-10-26 17:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-24  6:05 [PATCH] DASD: send 'change' uevents Hannes Reinecke
2008-10-26 18:29 ` Martin Schwidefsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox