When updating uuid, update the bitmap as well - external bitmaps

Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
Neil Brown 2006-05-16 06:05:27 +00:00
parent 98b24a2afa
commit 8131b493df
4 changed files with 21 additions and 0 deletions

View File

@ -308,6 +308,10 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
devname);
if (dfd >= 0)
close(dfd);
if (strcmp(update, "uuid")==0 &&
ident->bitmap_fd)
bitmap_update_uuid(ident->bitmap_fd, info.uuid);
}
if (verbose > 0)

View File

@ -12,6 +12,8 @@ Changes Prior to this release
mode and auto-flag
- --detail checks if array has been started or not and includes that
in report.
- When using --update=uuid on an array with a bitmap, update the
bitmap's uuid too.
Changes Prior to 2.4.1 release
- Honour --write-mostly when adding to an array without persistent

View File

@ -398,3 +398,17 @@ out:
unlink(filename); /* possibly corrupted, better get rid of it */
return rv;
}
void bitmap_update_uuid(int fd, int *uuid)
{
struct bitmap_super_s bm;
lseek(fd, 0, 0);
if (read(fd, &bm, sizeof(bm)) != sizeof(bm))
return;
if (bm.magic != __cpu_to_le32(BITMAP_MAGIC))
return;
memcpy(bm.uuid, uuid, 16);
lseek(fd, 0, 0);
write(fd, &bm, sizeof(bm));
lseek(fd, 0, 0);
}

View File

@ -361,6 +361,7 @@ extern int CreateBitmap(char *filename, int force, char uuid[16],
unsigned long long array_size,
int major);
extern int ExamineBitmap(char *filename, int brief, struct supertype *st);
extern void bitmap_update_uuid(int fd, int *uuid);
extern int md_get_version(int fd);
extern int get_linux_version(void);