From 9a9dab3670110c2db7fe6f716977b72adedbf855 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Fri, 8 Mar 2002 00:03:52 +0000 Subject: mdadm-0.7 --- mdadm.h | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 mdadm.h (limited to 'mdadm.h') diff --git a/mdadm.h b/mdadm.h new file mode 100644 index 0000000..6959cfe --- /dev/null +++ b/mdadm.h @@ -0,0 +1,152 @@ +/* + * mdadm - manage Linux "md" devices aka RAID arrays. + * + * Copyright (C) 2001-2002 Neil Brown + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Neil Brown + * Email: + * Paper: Neil Brown + * School of Computer Science and Engineering + * The University of New South Wales + * Sydney, 2052 + * Australia + */ + +#define __USE_LARGEFILE64 +#include +extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#define MD_MAJOR 9 + + +#include "md_u.h" + +#define Name "mdadm" + +extern char short_options[]; +extern struct option long_options[]; +extern char Version[], Usage[], Help[], Help_create[], Help_build[], Help_assemble[]; + +/* structures read from config file */ +/* List of mddevice names and identifiers + * Identifiers can be: + * uuid=128-hex-uuid + * super-minor=decimal-minor-number-from-superblock + * devices=comma,separated,list,of,device,names,with,wildcards + * + * If multiple fields are present, the intersection of all matching + * devices is considered + */ +typedef struct mddev_ident_s { + char *devname; + + int uuid_set; + __u32 uuid[4]; + + int super_minor; /* -1 if not set */ + + char *devices; /* comma separated list of device + * names with wild cards + */ + int level; /* -10 if not set */ + int raid_disks; /* -1 if not set */ + char *spare_group; + struct mddev_ident_s *next; +} *mddev_ident_t; + +/* List of device names - wildcards expanded */ +typedef struct mddev_dev_s { + char *devname; + char disposition; /* 'a' for add, 'r' for remove, 'f' for fail. + * Not set for names read from .config + */ + struct mddev_dev_s *next; +} *mddev_dev_t; + +typedef struct mapping { + char *name; + int num; +} mapping_t; + +#ifndef Sendmail +#define Sendmail "/usr/lib/sendmail -t" +#endif + +extern char *map_num(mapping_t *map, int num); +extern int map_name(mapping_t *map, char *name); +extern mapping_t r5layout[], pers[]; + +extern char *map_dev(int major, int minor); + + +extern int Manage_ro(char *devname, int fd, int readonly); +extern int Manage_runstop(char *devname, int fd, int runstop); +extern int Manage_subdevs(char *devname, int fd, + mddev_dev_t devlist); + + +extern int Assemble(char *mddev, int mdfd, + mddev_ident_t ident, + char *conffile, + mddev_dev_t devlist, + int readonly, int runstop, + int verbose, int force); + +extern int Build(char *mddev, int mdfd, int chunk, int level, + int raiddisks, + mddev_dev_t devlist); + + +extern int Create(char *mddev, int mdfd, + int chunk, int level, int layout, int size, int raiddisks, int sparedisks, + int subdevs, mddev_dev_t devlist, + int runstop, int verbose, int force); + +extern int Detail(char *dev, int brief); +extern int Examine(mddev_dev_t devlist, int brief, char *conffile); +extern int Monitor(mddev_dev_t devlist, + char *mailaddr, char *alert_cmd, + int period, + char *config); + +extern int Kill(char *dev, int force); + +extern int md_get_version(int fd); +extern int get_linux_version(); +extern int parse_uuid(char *str, int uuid[4]); +extern int check_ext2(int fd, char *name); +extern int check_reiser(int fd, char *name); +extern int check_raid(int fd, char *name); + +extern mddev_ident_t conf_get_ident(char *, char*); +extern mddev_dev_t conf_get_devs(char *); + +extern char *human_size(long kbytes); -- cgit