[PATCH] s390: dasd device offline messages
authorHorst Hummel <horst.hummel@de.ibm.com>
Tue, 11 Apr 2006 05:53:47 +0000 (22:53 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 11 Apr 2006 13:18:38 +0000 (06:18 -0700)
The dasd driver sometimes print the misleading message "Can't offline dasd
device with open count = 0".  The reason why it can't offline the device in
this case is that the device is still in the startup phase.  Print a more
meaningful message.

Signed-off-by: Horst Hummel <horst.hummel@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/s390/block/dasd.c

index 0a9f12c4e91154b57d73dd39e58ade8a6663c34e..170aae004ceb0b069354f4b79bb4348f98d19643 100644 (file)
@@ -1968,7 +1968,7 @@ int
 dasd_generic_set_offline (struct ccw_device *cdev)
 {
        struct dasd_device *device;
-       int max_count;
+       int max_count, open_count;
 
        device = dasd_device_from_cdev(cdev);
        if (IS_ERR(device))
@@ -1985,10 +1985,16 @@ dasd_generic_set_offline (struct ccw_device *cdev)
         * in the other openers.
         */
        max_count = device->bdev ? 0 : -1;
-       if (atomic_read(&device->open_count) > max_count) {
-               printk (KERN_WARNING "Can't offline dasd device with open"
-                       " count = %i.\n",
-                       atomic_read(&device->open_count));
+       open_count = (int) atomic_read(&device->open_count);
+       if (open_count > max_count) {
+               if (open_count > 0)
+                       printk (KERN_WARNING "Can't offline dasd device with "
+                               "open count = %i.\n",
+                               open_count);
+               else
+                       printk (KERN_WARNING "%s",
+                               "Can't offline dasd device due to internal "
+                               "use\n");
                clear_bit(DASD_FLAG_OFFLINE, &device->flags);
                dasd_put_device(device);
                return -EBUSY;