Thread (4 messages) 4 messages, 3 authors, 2014-07-21

RE: [PATCH] IMSM: move "validate_container_imsm" to be included in mdassemble

From: Baldysiak, Pawel <hidden>
Date: 2014-07-21 08:02:29

On Monday, July 21, 2014 9:48 AM Samuli Suominen [mailto:ssuominen@gentoo.org] wrote:
To: NeilBrown; Baldysiak, Pawel
Cc: linux-raid@vger.kernel.org; Paszkiewicz, Artur
Subject: Re: [PATCH] IMSM: move "validate_container_imsm" to be included
in mdassemble


On 21/07/14 09:57, NeilBrown wrote:
quoted
On Fri, 18 Jul 2014 17:01:27 +0200 Pawel Baldysiak
[off-list ref] wrote:
quoted
Commit 0c21b485e4beb7bcfe631412a231f7c1ea1067bc added new
function in
quoted
quoted
imsm superswitch. This function should be included in mdassemble.

Signed-off-by: Pawel Baldysiak <redacted>
---
 super-intel.c |   82 +++++++++++++++++++++++++++++--------------------
--------
quoted
quoted
 1 file changed, 41 insertions(+), 41 deletions(-)
diff --git a/super-intel.c b/super-intel.c index b4efa72..e28ac7d
100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -9048,6 +9048,47 @@ int open_backup_targets(struct mdinfo *info,
int raid_disks, int *raid_fds,
quoted
quoted
 	return 0;
 }
+/*********************************************************
**********************
quoted
quoted
+ * Function:	validate_container_imsm
+ * Description: This routine validates container after assemble,
+ *		eg. if devices in container are under the same controller.
+ *
+ * Parameters:
+ *	info	: linked list with info about devices used in array
+ * Returns:
+ *	1 : HBA mismatch
+ *	0 : Success
+
+*********************************************************
***********
quoted
quoted
+**********/ int validate_container_imsm(struct mdinfo *info) {
+	if (!check_env("IMSM_NO_PLATFORM")) {
+		struct sys_dev *idev;
+		struct mdinfo *dev;
+		char *hba_path = NULL;
+		char *dev_path = devt_to_devpath(makedev(info-
disk.major,
quoted
+
	info->disk.minor));
quoted
quoted
+
+		for (idev = find_intel_devices(); idev; idev = idev->next) {
+			if (strstr(dev_path, idev->path)) {
+				hba_path = idev->path;
+				break;
+			}
+		}
+		free(dev_path);
+
+		if (hba_path) {
+			for (dev = info->next; dev; dev = dev->next) {
+				if (!devt_attached_to_hba(makedev(dev-
disk.major,
quoted
+						dev->disk.minor), hba_path))
{
quoted
quoted
+					pr_err("WARNING - IMSM container
assembled with disks under different HBAs!\n"
quoted
quoted
+						"       This operation is not
supported and can lead to data loss.\n");
quoted
quoted
+					return 1;
+				}
+			}
+		}
+	}
+	return 0;
+}
 #ifndef MDASSEMBLE
/**********************************************************
*********************
quoted
quoted
  * Function:	init_migr_record_imsm
@@ -10524,47 +10565,6 @@ abort:
 	return ret_val;
 }

-
/**********************************************************
*********************
quoted
quoted
- * Function:	validate_container_imsm
- * Description: This routine validates container after assemble,
- *		eg. if devices in container are under the same controller.
- *
- * Parameters:
- *	info	: linked list with info about devices used in array
- * Returns:
- *	1 : HBA mismatch
- *	0 : Success
-
**********************************************************
***********
quoted
quoted
*********/ -int validate_container_imsm(struct mdinfo *info) -{
-	if (!check_env("IMSM_NO_PLATFORM")) {
-		struct sys_dev *idev;
-		struct mdinfo *dev;
-		char *hba_path = NULL;
-		char *dev_path = devt_to_devpath(makedev(info-
disk.major,
quoted
-
	info->disk.minor));
quoted
quoted
-
-		for (idev = find_intel_devices(); idev; idev = idev->next) {
-			if (strstr(dev_path, idev->path)) {
-				hba_path = idev->path;
-				break;
-			}
-		}
-		free(dev_path);
-
-		if (hba_path) {
-			for (dev = info->next; dev; dev = dev->next) {
-				if (!devt_attached_to_hba(makedev(dev-
disk.major,
quoted
-						dev->disk.minor), hba_path))
{
quoted
quoted
-					pr_err("WARNING - IMSM container
assembled with disks under different HBAs!\n"
quoted
quoted
-						"       This operation is not
supported and can lead to data loss.\n");
quoted
quoted
-					return 1;
-				}
-			}
-		}
-	}
-	return 0;
-}
 #endif /* MDASSEMBLE */

 struct superswitch super_imsm = {
Applied, thanks.

Though I do wonder if we really need mdassemble.  Is there a
convincing use-case?

NeilBrown
This is why we are packaging mdassemble in Gentoo's sys-fs/mdadm
package:

http://bugs.gentoo.org/show_bug.cgi?id=211426

Quoting from the bug:

"mdassemble is a lightweight program to assemble raid devices that can be
called directly for an initramfs filesystem. It weights 88ko compiled statically
with dietlibc."

So the use case seems to be initramfs, embedded, minimal systems

- Samuli
Hi

Intel does not support mdassemble.
Above fix  was created only to avoid compilation errors.

Thanks
Pawel Baldysiak
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help