[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#815912: dasd: detect if a DASD is already configured



Package: s390-dasd
Version: 0.0.34
Severity: normal
Tags: d-i patch

If you have configured one ore more DASDs, the s390-dasd shows
them as "(configured)".  If you then leave the module, for example,
with "Finish", and re-enter the module again, the DASDs show up as
"online" again.

The patch below enhances the detect_channels_driver() function
to check if a configuration file exists, that means, if DASDs
are already online and configured.

Kind regards,
  Hendrik
>From ba645de637b74de9a58e4296dae0f4bd6a785c07 Mon Sep 17 00:00:00 2001
From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Date: Mon, 15 Feb 2016 17:44:29 +0100
Subject: [PATCH 4/4] dasd: detect if a DASD is already configured

If the s390-dasd module is started twice, already configured DASDs
appear as "online".  Enhance the detect_channels_driver() function
to check if a configuration file exists, that means, if DASDs are
already online and configured.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Reviewed-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
---
 dasd-config.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/dasd-config.c b/dasd-config.c
index 6194da7..e085534 100644
--- a/dasd-config.c
+++ b/dasd-config.c
@@ -1,6 +1,7 @@
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -111,6 +112,7 @@ static enum state_wanted setup ()
 
 static enum state_wanted detect_channels_driver (struct sysfs_driver *driver, int type)
 {
+	char path[PATH_MAX];
 	struct dlist *devices;
 	struct sysfs_device *device;
 
@@ -141,6 +143,10 @@ static enum state_wanted detect_channels_driver (struct sysfs_driver *driver, in
 		if (strtol (attr_online->value, NULL, 10) > 0)
 			current->online = true;
 
+		/* Check if the current DASD is already configured */
+		snprintf (path, sizeof (path), SYSCONFIG_DIR "config-ccw-%s", current->name);
+		current->configured = !access (path, F_OK);
+
 		di_tree_insert (channels, current, current);
 	}
 
-- 
2.7.0


Reply to: