1 | #if ENABLE_FEATURE_AIX_LABEL
|
---|
2 | /*
|
---|
3 | * Copyright (C) Andreas Neuper, Sep 1998.
|
---|
4 | *
|
---|
5 | * Licensed under GPLv2, see file LICENSE in this source tree.
|
---|
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 smallint aix_other_endian; /* bool */
|
---|
33 | static smallint aix_volumes = 1; /* max 15 */
|
---|
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 | ) {
|
---|
60 | current_label_type = 0;
|
---|
61 | aix_other_endian = 0;
|
---|
62 | return 0;
|
---|
63 | }
|
---|
64 | aix_other_endian = (aixlabel->magic == AIX_LABEL_MAGIC_SWAPPED);
|
---|
65 | update_units();
|
---|
66 | current_label_type = LABEL_AIX;
|
---|
67 | g_partitions = 1016;
|
---|
68 | aix_volumes = 15;
|
---|
69 | aix_info();
|
---|
70 | /*aix_nolabel();*/ /* %% */
|
---|
71 | /*aix_label = 1;*/ /* %% */
|
---|
72 | return 1;
|
---|
73 | }
|
---|
74 | #endif /* AIX_LABEL */
|
---|