[1765] | 1 | #if ENABLE_FEATURE_AIX_LABEL
|
---|
| 2 | /*
|
---|
| 3 | * Copyright (C) Andreas Neuper, Sep 1998.
|
---|
| 4 | * This file may be redistributed under
|
---|
| 5 | * the terms of the GNU Public License.
|
---|
| 6 | */
|
---|
| 7 |
|
---|
| 8 | typedef struct {
|
---|
| 9 | unsigned int magic; /* expect AIX_LABEL_MAGIC */
|
---|
| 10 | unsigned int fillbytes1[124];
|
---|
| 11 | unsigned int physical_volume_id;
|
---|
| 12 | unsigned int fillbytes2[124];
|
---|
| 13 | } aix_partition;
|
---|
| 14 |
|
---|
| 15 | #define AIX_LABEL_MAGIC 0xc9c2d4c1
|
---|
| 16 | #define AIX_LABEL_MAGIC_SWAPPED 0xc1d4c2c9
|
---|
| 17 | #define AIX_INFO_MAGIC 0x00072959
|
---|
| 18 | #define AIX_INFO_MAGIC_SWAPPED 0x59290700
|
---|
| 19 |
|
---|
| 20 | #define aixlabel ((aix_partition *)MBRbuffer)
|
---|
| 21 |
|
---|
| 22 |
|
---|
| 23 | /*
|
---|
| 24 | Changes:
|
---|
| 25 | * 1999-03-20 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
---|
| 26 | * Internationalization
|
---|
| 27 | *
|
---|
| 28 | * 2003-03-20 Phillip Kesling <pkesling@sgi.com>
|
---|
| 29 | * Some fixes
|
---|
| 30 | */
|
---|
| 31 |
|
---|
| 32 | static int aix_other_endian;
|
---|
| 33 | static short aix_volumes = 1;
|
---|
| 34 |
|
---|
| 35 | /*
|
---|
| 36 | * only dealing with free blocks here
|
---|
| 37 | */
|
---|
| 38 |
|
---|
| 39 | static void
|
---|
| 40 | aix_info(void)
|
---|
| 41 | {
|
---|
| 42 | puts("\n"
|
---|
| 43 | "There is a valid AIX label on this disk.\n"
|
---|
| 44 | "Unfortunately Linux cannot handle these disks at the moment.\n"
|
---|
| 45 | "Nevertheless some advice:\n"
|
---|
| 46 | "1. fdisk will destroy its contents on write.\n"
|
---|
| 47 | "2. Be sure that this disk is NOT a still vital part of a volume group.\n"
|
---|
| 48 | " (Otherwise you may erase the other disks as well, if unmirrored.)\n"
|
---|
| 49 | "3. Before deleting this physical volume be sure to remove the disk\n"
|
---|
| 50 | " logically from your AIX machine. (Otherwise you become an AIXpert).\n"
|
---|
| 51 | );
|
---|
| 52 | }
|
---|
| 53 |
|
---|
| 54 | static int
|
---|
| 55 | check_aix_label(void)
|
---|
| 56 | {
|
---|
| 57 | if (aixlabel->magic != AIX_LABEL_MAGIC &&
|
---|
| 58 | aixlabel->magic != AIX_LABEL_MAGIC_SWAPPED) {
|
---|
| 59 | current_label_type = 0;
|
---|
| 60 | aix_other_endian = 0;
|
---|
| 61 | return 0;
|
---|
| 62 | }
|
---|
| 63 | aix_other_endian = (aixlabel->magic == AIX_LABEL_MAGIC_SWAPPED);
|
---|
| 64 | update_units();
|
---|
| 65 | current_label_type = label_aix;
|
---|
| 66 | partitions = 1016;
|
---|
| 67 | aix_volumes = 15;
|
---|
| 68 | aix_info();
|
---|
| 69 | /*aix_nolabel();*/ /* %% */
|
---|
| 70 | /*aix_label = 1;*/ /* %% */
|
---|
| 71 | return 1;
|
---|
| 72 | }
|
---|
| 73 | #endif /* AIX_LABEL */
|
---|