bug-parted
[Top][All Lists]
Advanced

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

bug#15349: [PATCH 10/19] libparted: mklabel to support EDEV DASD


From: Brian C. Lane
Subject: bug#15349: [PATCH 10/19] libparted: mklabel to support EDEV DASD
Date: Wed, 11 Sep 2013 12:25:00 -0700

From: Nageswara R Sastry <address@hidden>

Fixed Block Access (FBA) DASDs are mainframe-specific disk devices
which are layed out as a sequence of 512-byte sectors. This patch adds
support for mklabel to properly handle FBA devices.

Signed-off-by: Nageswara R Sastry <address@hidden>
---
 libparted/labels/fdasd.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
index 7de5f34..1f87937 100644
--- a/libparted/labels/fdasd.c
+++ b/libparted/labels/fdasd.c
@@ -870,19 +870,21 @@ fdasd_check_volume (fdasd_anchor_t *anc, int fd)
        vtoc_read_volume_label (fd, anc->label_pos, v);
 
        if (strncmp(v->vollbl, vtoc_ebcdic_enc ("VOL1", str, 4), 4) == 0) {
-               /* found VOL1 volume label */
-               b = (cchhb2blk (&v->vtoc, &anc->geo) - 1) * anc->blksize;
-
-               if (b > 0) {
-                       int rc;
-                       rc = fdasd_valid_vtoc_pointer (anc, b, fd);
-
-                       if (rc < 0)
-                               return 1;
-                       else
-                               return 0;
-               } else {
-                       fdasd_invalid_vtoc_pointer(anc);
+               if (anc->FBA_layout != 1 ) {
+                       /* found VOL1 volume label */
+                       b = (cchhb2blk (&v->vtoc, &anc->geo) - 1) * 
anc->blksize;
+
+                       if (b > 0) {
+                               int rc;
+                               rc = fdasd_valid_vtoc_pointer (anc, b, fd);
+
+                               if (rc < 0)
+                                       return 1;
+                               else
+                                       return 0;
+                       } else {
+                               fdasd_invalid_vtoc_pointer(anc);
+                       }
                }
        } else if (strncmp (v->volkey, vtoc_ebcdic_enc ("LNX1", str, 4), 4) == 
0 ||
                   strncmp (v->volkey, vtoc_ebcdic_enc ("CMS1", str, 4), 4) == 
0) {
-- 
1.8.3.1






reply via email to

[Prev in Thread] Current Thread [Next in Thread]