77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifdef CONFIG_FEATURE_AIX_LABEL
 | 
						|
/*
 | 
						|
 * Copyright (C) Andreas Neuper, Sep 1998.
 | 
						|
 *      This file may be redistributed under
 | 
						|
 *      the terms of the GNU Public License.
 | 
						|
 */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	unsigned int   magic;        /* expect AIX_LABEL_MAGIC */
 | 
						|
	unsigned int   fillbytes1[124];
 | 
						|
	unsigned int   physical_volume_id;
 | 
						|
	unsigned int   fillbytes2[124];
 | 
						|
} aix_partition;
 | 
						|
 | 
						|
#define AIX_LABEL_MAGIC         0xc9c2d4c1
 | 
						|
#define AIX_LABEL_MAGIC_SWAPPED 0xc1d4c2c9
 | 
						|
#define AIX_INFO_MAGIC          0x00072959
 | 
						|
#define AIX_INFO_MAGIC_SWAPPED  0x59290700
 | 
						|
 | 
						|
#define aixlabel ((aix_partition *)MBRbuffer)
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
  Changes:
 | 
						|
  * 1999-03-20 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
 | 
						|
  *     Internationalization
 | 
						|
  *
 | 
						|
  * 2003-03-20 Phillip Kesling <pkesling@sgi.com>
 | 
						|
  *      Some fixes
 | 
						|
*/
 | 
						|
 | 
						|
static int aix_other_endian;
 | 
						|
static short aix_volumes = 1;
 | 
						|
 | 
						|
/*
 | 
						|
 * only dealing with free blocks here
 | 
						|
 */
 | 
						|
 | 
						|
static void
 | 
						|
aix_info(void)
 | 
						|
{
 | 
						|
	puts(
 | 
						|
		_("\n\tThere is a valid AIX label on this disk.\n"
 | 
						|
		"\tUnfortunately Linux cannot handle these\n"
 | 
						|
		"\tdisks at the moment.  Nevertheless some\n"
 | 
						|
		"\tadvice:\n"
 | 
						|
		"\t1. fdisk will destroy its contents on write.\n"
 | 
						|
		"\t2. Be sure that this disk is NOT a still vital\n"
 | 
						|
		"\t   part of a volume group. (Otherwise you may\n"
 | 
						|
		"\t   erase the other disks as well, if unmirrored.)\n"
 | 
						|
		"\t3. Before deleting this physical volume be sure\n"
 | 
						|
		"\t   to remove the disk logically from your AIX\n"
 | 
						|
		"\t   machine.  (Otherwise you become an AIXpert).")
 | 
						|
	);
 | 
						|
}
 | 
						|
 | 
						|
static int
 | 
						|
check_aix_label(void)
 | 
						|
{
 | 
						|
	if (aixlabel->magic != AIX_LABEL_MAGIC &&
 | 
						|
		aixlabel->magic != AIX_LABEL_MAGIC_SWAPPED) {
 | 
						|
		current_label_type = 0;
 | 
						|
		aix_other_endian = 0;
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
	aix_other_endian = (aixlabel->magic == AIX_LABEL_MAGIC_SWAPPED);
 | 
						|
	update_units();
 | 
						|
	current_label_type = label_aix;
 | 
						|
	partitions = 1016;
 | 
						|
	aix_volumes = 15;
 | 
						|
	aix_info();
 | 
						|
	/*aix_nolabel();*/              /* %% */
 | 
						|
	/*aix_label = 1;*/              /* %% */
 | 
						|
	return 1;
 | 
						|
}
 | 
						|
#endif  /* AIX_LABEL */
 |