8dc857
Subject: [PATCH] libparted: mklabel to support EDEV DASD
8dc857
8dc857
From: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
8dc857
8dc857
Fixed Block Access (FBA) DASDs are mainframe-specific disk devices
8dc857
which are layed out as a sequence of 512-byte sectors. This patch adds
8dc857
support for mklabel to properly handle FBA devices.
8dc857
8dc857
Signed-off-by: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
8dc857
---
8dc857
 libparted/labels/fdasd.c |   24 +++++++++++++-----------
8dc857
 1 file changed, 13 insertions(+), 11 deletions(-)
8dc857
8dc857
--- a/libparted/labels/fdasd.c
8dc857
+++ b/libparted/labels/fdasd.c
8dc857
@@ -869,19 +869,21 @@ fdasd_check_volume (fdasd_anchor_t *anc,
8dc857
 	vtoc_read_volume_label (fd, anc->label_pos, v);
8dc857
 
8dc857
 	if (strncmp(v->vollbl, vtoc_ebcdic_enc ("VOL1", str, 4), 4) == 0) {
8dc857
-		/* found VOL1 volume label */
8dc857
-		b = (cchhb2blk (&v->vtoc, &anc->geo) - 1) * anc->blksize;
8dc857
+		if (anc->FBA_layout != 1 ) {
8dc857
+			/* found VOL1 volume label */
8dc857
+			b = (cchhb2blk (&v->vtoc, &anc->geo) - 1) * anc->blksize;
8dc857
 
8dc857
-		if (b > 0) {
8dc857
-			int rc;
8dc857
-			rc = fdasd_valid_vtoc_pointer (anc, b, fd);
8dc857
+			if (b > 0) {
8dc857
+				int rc;
8dc857
+				rc = fdasd_valid_vtoc_pointer (anc, b, fd);
8dc857
 
8dc857
-			if (rc < 0)
8dc857
-				return 1;
8dc857
-			else
8dc857
-				return 0;
8dc857
-		} else {
8dc857
-			fdasd_invalid_vtoc_pointer(anc);
8dc857
+				if (rc < 0)
8dc857
+					return 1;
8dc857
+				else
8dc857
+					return 0;
8dc857
+			} else {
8dc857
+				fdasd_invalid_vtoc_pointer(anc);
8dc857
+			}
8dc857
 		}
8dc857
 	} else if (strncmp (v->volkey, vtoc_ebcdic_enc ("LNX1", str, 4), 4) == 0 ||
8dc857
 	           strncmp (v->volkey, vtoc_ebcdic_enc ("CMS1", str, 4), 4) == 0) {