int uuid[4];
char name[33];
unsigned long long data_offset;
- unsigned long long component_size;
+ unsigned long long component_size; /* same as array.size, except in
+ * sectors and up to 64bits.
+ */
int reshape_active;
unsigned long long reshape_progress;
int new_level, delta_disks, new_layout, new_chunk;
char *name, unsigned long long val);
extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev,
char *name, unsigned long long *val);
+extern int sysfs_set_array(struct mdinfo *sra,
+ struct mdinfo *info);
+extern int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd);
+
+
extern int save_stripes(int *source, unsigned long long *offsets,
void (*export_detail_super)(struct supertype *st);
void (*uuid_from_super)(struct supertype *st, int uuid[4]);
void (*getinfo_super)(struct supertype *st, struct mdinfo *info);
+ void (*getinfo_super_n)(struct supertype *st, struct mdinfo *info);
int (*match_home)(struct supertype *st, char *homehost);
int (*update_super)(struct supertype *st, struct mdinfo *info,
char *update,
int raiddisks,
int chunk, unsigned long long size,
char *subdev, unsigned long long *freesize);
+
+ struct mdinfo *(*container_content)(struct supertype *st);
+
int major;
char *text_version;
int swapuuid; /* true if uuid is bigending rather than hostendian */
int external;
-} super0, super1, *superlist[];
+} super0, super1, super_ddf, super_ddf_bvd, super_ddf_svd, *superlist[];
struct supertype {
struct superswitch *ss;
int minor_version;
int max_devs;
+ int container_dev; /* devnum of container */
+ int container_member; /* numerical position in container */
void *sb;
void *info;
};
extern int Incremental(char *devname, int verbose, int runstop,
struct supertype *st, char *homehost, int autof);
+extern int Incremental_container(struct supertype *st, char *devname,
+ int verbose, int runstop, int autof);
extern void RebuildMap(void);
extern int IncrementalScan(int verbose);
extern int ask(char *mesg);
extern unsigned long long get_component_size(int fd);
extern void remove_partitions(int fd);
+extern unsigned long long calc_array_size(int level, int raid_disks, int layout,
+ int chunksize, unsigned long long devsize);
extern char *human_size(long long bytes);
extern int open_mddev(char *dev, int autof);
extern int open_mddev_devnum(char *devname, int devnum, char *name,
char *chosen_name, int parts);
+extern int open_container(int fd);
+extern char *devnum2devname(int num);
+extern int fd2devnum(int fd);
#define LEVEL_MULTIPATH (-4)
#define LEVEL_LINEAR (-1)
/* kernel module doesn't know about these */
#define LEVEL_CONTAINER (-100)
+#define LEVEL_UNSUPPORTED (-200)
/* faulty stuff */