diff options
author | Neil Brown <neilb@suse.de> | 2006-01-27 01:44:47 +0000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-01-27 01:44:47 +0000 |
commit | 838acbc2724c57f9dc1facec201d20f09a81d375 (patch) | |
tree | 1a677a68c68492d43e7c870cd3193bd79fa35642 | |
parent | d2cd3ffc026ae8dbc09d5243ec60694afe26e81b (diff) | |
download | mdadm-838acbc2724c57f9dc1facec201d20f09a81d375.tar.gz mdadm-838acbc2724c57f9dc1facec201d20f09a81d375.tar.xz mdadm-838acbc2724c57f9dc1facec201d20f09a81d375.zip |
Assorted fixes...
Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r-- | Assemble.c | 4 | ||||
-rw-r--r-- | Create.c | 2 | ||||
-rw-r--r-- | TODO | 19 | ||||
-rw-r--r-- | bitmap.c | 5 | ||||
-rw-r--r-- | mdadm.h | 4 | ||||
-rw-r--r-- | super1.c | 2 |
6 files changed, 33 insertions, 3 deletions
@@ -219,7 +219,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, } if (dfd >= 0) close(dfd); - if (ident->uuid_set && (!update && strcmp(update, "uuid")!= 0) && + if (ident->uuid_set && (!update || strcmp(update, "uuid")!= 0) && (!super || same_uuid(info.uuid, ident->uuid, tst->ss->swapuuid)==0)) { if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s has wrong uuid.\n", @@ -266,6 +266,8 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, free(first_super); return 1; } + + st = tst; /* commit to this format, if haven't already */ if (st->ss->compare_super(&first_super, super)) { fprintf(stderr, Name ": superblock on %s doesn't match others - assembly aborted\n", @@ -364,7 +364,7 @@ int Create(struct supertype *st, char *mddev, int mdfd, array.nr_disks = array.working_disks + array.failed_disks; array.layout = layout; array.chunk_size = chunk*1024; - + array.major_version = st->ss->major; if (!st->ss->init_super(st, &super, &array, name)) return 1; @@ -1,3 +1,22 @@ +2005-dec-20 + Want an incremental assembly mode to work nicely with udev. + Core usage would be something like + mdadm --incr-assemble /dev/newdevice + This would + - examine the device to determine uuid etc. + - look for a match in /etc/mdadm.conf, abort if not found + - find that device and collect current contents + - perform an 'assemble' analysis to make sure we have the best set of devices. + - remove or add devices as appropriate + - possibly start the array if it was complete + + Other usages could involve + - specify which array to auto-add to. + This requires an existing array for uuid matching... is there any point? + + - + + 2004-june-02 * Don't print 'errors' flag, it is meaningless. DONE * Handle new superblock format @@ -126,8 +126,13 @@ bitmap_info_t *bitmap_fd_read(int fd, int brief) info = malloc(sizeof(*info)); if (info == NULL) { +#if __GNUC__ < 3 + fprintf(stderr, Name ": failed to allocate %d bytes\n", + (int)sizeof(*info)); +#else fprintf(stderr, Name ": failed to allocate %zd bytes\n", sizeof(*info)); +#endif return NULL; } @@ -211,6 +211,10 @@ struct supertype { extern struct supertype *super_by_version(int vers, int minor); extern struct supertype *guess_super(int fd); +#if __GNUC__ < 3 +struct stat64; +#endif + #ifdef UCLIBC struct FTW {}; # define FTW_PHYS 1 @@ -396,7 +396,7 @@ static int update_super1(struct mdinfo *info, void *sbv, char *update, char *dev sb->resync_offset = ~0ULL; } if (strcmp(update, "uuid") == 0) - memcmp(sb->set_uuid, info->uuid, 16); + memcpy(sb->set_uuid, info->uuid, 16); sb->sb_csum = calc_sb_1_csum(sb); return rv; |