From 606c5aa22cf47bddf64b51a54b1fe516dcd9a5e0 Mon Sep 17 00:00:00 2001 From: Nageswara R Sastry Date: Wed, 21 Aug 2013 16:37:17 -0700 Subject: [PATCH 87/89] libparted: mklabel to support EDEV DASD 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 --- 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.5.3