blob: 0a5e818fe65005686c4554c3a3142206060ac5b9 [file] [log] [blame]
Denis Vlasenko6a5dc5d2006-12-30 18:42:29 +00001#if ENABLE_FEATURE_AIX_LABEL
Denis Vlasenko98ae2162006-10-12 19:30:44 +00002/*
3 * Copyright (C) Andreas Neuper, Sep 1998.
Denis Vlasenkodb12d1d2008-12-07 00:52:58 +00004 *
Denys Vlasenko0ef64bd2010-08-16 20:14:46 +02005 * Licensed under GPLv2, see file LICENSE in this source tree.
Denis Vlasenko98ae2162006-10-12 19:30:44 +00006 */
7
8typedef struct {
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +02009 uint32_t magic; /* expect AIX_LABEL_MAGIC */
10 uint32_t fillbytes1[124];
11 uint32_t physical_volume_id;
12 uint32_t fillbytes2[124];
Denis Vlasenko98ae2162006-10-12 19:30:44 +000013} 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
Denis Vlasenko98ae2162006-10-12 19:30:44 +000020/*
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020021 * Changes:
22 * 1999-03-20 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
23 * Internationalization
24 *
25 * 2003-03-20 Phillip Kesling <pkesling@sgi.com>
26 * Some fixes
27 */
Denis Vlasenko98ae2162006-10-12 19:30:44 +000028
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020029// Write-only vars, unfinished code?
30//static smallint aix_other_endian; /* bool */
31//static smallint aix_volumes = 1; /* max 15 */
Denis Vlasenko98ae2162006-10-12 19:30:44 +000032
33/*
34 * only dealing with free blocks here
35 */
36
37static void
38aix_info(void)
39{
Denis Vlasenkobd852072007-03-19 14:43:38 +000040 puts("\n"
41"There is a valid AIX label on this disk.\n"
42"Unfortunately Linux cannot handle these disks at the moment.\n"
43"Nevertheless some advice:\n"
44"1. fdisk will destroy its contents on write.\n"
45"2. Be sure that this disk is NOT a still vital part of a volume group.\n"
46" (Otherwise you may erase the other disks as well, if unmirrored.)\n"
47"3. Before deleting this physical volume be sure to remove the disk\n"
48" logically from your AIX machine. (Otherwise you become an AIXpert).\n"
Denis Vlasenko98ae2162006-10-12 19:30:44 +000049 );
50}
51
52static int
53check_aix_label(void)
54{
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020055 aix_partition *aixlabel = (void*)MBRbuffer;
56
Denys Vlasenkoddf78502009-09-16 03:03:13 +020057 if (aixlabel->magic != AIX_LABEL_MAGIC
58 && aixlabel->magic != AIX_LABEL_MAGIC_SWAPPED
59 ) {
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020060 current_label_type = LABEL_DOS;
61// aix_other_endian = 0;
Denis Vlasenko98ae2162006-10-12 19:30:44 +000062 return 0;
63 }
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020064// aix_other_endian = (aixlabel->magic == AIX_LABEL_MAGIC_SWAPPED);
Denis Vlasenko98ae2162006-10-12 19:30:44 +000065 update_units();
Denis Vlasenko4437d192008-04-17 00:12:10 +000066 current_label_type = LABEL_AIX;
Denis Vlasenkof77f3692007-12-16 17:22:33 +000067 g_partitions = 1016;
Denys Vlasenko27f0e8a2019-10-04 17:16:15 +020068// aix_volumes = 15;
Denis Vlasenko98ae2162006-10-12 19:30:44 +000069 aix_info();
70 /*aix_nolabel();*/ /* %% */
71 /*aix_label = 1;*/ /* %% */
72 return 1;
73}
74#endif /* AIX_LABEL */