check return status of all write/fwrite functions as required by glibc 2.4
From: Luca Berra <bluca@vodka.it> glibc 2.4 is pedantic on ignoring return values from fprintf, fwrite and write, so now we check the rval and actually do something with it. in the Grow.c case i only print a warning, since i don't think we can do anything in case we fail invalidating those superblocks (is should never happen, but then...) Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
280a927d3d
commit
9fca7d6236
|
@ -451,7 +451,9 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
|
||||||
|
|
||||||
if (strcmp(update, "uuid")==0 &&
|
if (strcmp(update, "uuid")==0 &&
|
||||||
ident->bitmap_fd)
|
ident->bitmap_fd)
|
||||||
bitmap_update_uuid(ident->bitmap_fd, info.uuid);
|
if (bitmap_update_uuid(ident->bitmap_fd, info.uuid) != 0)
|
||||||
|
fprintf(stderr, Name ": Could not update uuid on %s.\n",
|
||||||
|
devname);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|
5
Grow.c
5
Grow.c
|
@ -801,7 +801,10 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
|
||||||
memset(&bsb, 0, sizeof(bsb));
|
memset(&bsb, 0, sizeof(bsb));
|
||||||
for (i=odisks; i<d ; i++) {
|
for (i=odisks; i<d ; i++) {
|
||||||
lseek64(fdlist[i], (offsets[i]+last_block)<<9, 0);
|
lseek64(fdlist[i], (offsets[i]+last_block)<<9, 0);
|
||||||
write(fdlist[i], &bsb, sizeof(bsb));
|
if (write(fdlist[i], &bsb, sizeof(bsb)) < 0) {
|
||||||
|
fprintf(stderr, Name ": %s: failed to invalidate metadata for raid disk %d\n",
|
||||||
|
devname, i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* unsuspend. */
|
/* unsuspend. */
|
||||||
|
|
|
@ -521,7 +521,7 @@ static void alert(char *event, char *dev, char *disc, char *mailaddr, char *mail
|
||||||
int n;
|
int n;
|
||||||
fprintf(mp, "\nP.S. The /proc/mdstat file current contains the following:\n\n");
|
fprintf(mp, "\nP.S. The /proc/mdstat file current contains the following:\n\n");
|
||||||
while ( (n=fread(buf, 1, sizeof(buf), mdstat)) > 0)
|
while ( (n=fread(buf, 1, sizeof(buf), mdstat)) > 0)
|
||||||
fwrite(buf, 1, n, mp);
|
n=fwrite(buf, 1, n, mp); /* yes, i don't care about the result */
|
||||||
fclose(mdstat);
|
fclose(mdstat);
|
||||||
}
|
}
|
||||||
fclose(mp);
|
fclose(mp);
|
||||||
|
|
18
bitmap.c
18
bitmap.c
|
@ -399,16 +399,22 @@ out:
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bitmap_update_uuid(int fd, int *uuid)
|
int bitmap_update_uuid(int fd, int *uuid)
|
||||||
{
|
{
|
||||||
struct bitmap_super_s bm;
|
struct bitmap_super_s bm;
|
||||||
lseek(fd, 0, 0);
|
if (lseek(fd, 0, 0) != 0)
|
||||||
|
return 1;
|
||||||
if (read(fd, &bm, sizeof(bm)) != sizeof(bm))
|
if (read(fd, &bm, sizeof(bm)) != sizeof(bm))
|
||||||
return;
|
return 1;
|
||||||
if (bm.magic != __cpu_to_le32(BITMAP_MAGIC))
|
if (bm.magic != __cpu_to_le32(BITMAP_MAGIC))
|
||||||
return;
|
return 1;
|
||||||
memcpy(bm.uuid, uuid, 16);
|
memcpy(bm.uuid, uuid, 16);
|
||||||
|
if (lseek(fd, 0, 0) != 0)
|
||||||
|
return 2;
|
||||||
|
if (write(fd, &bm, sizeof(bm)) != sizeof(bm)) {
|
||||||
|
lseek(fd, 0, 0);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
lseek(fd, 0, 0);
|
lseek(fd, 0, 0);
|
||||||
write(fd, &bm, sizeof(bm));
|
return 0;
|
||||||
lseek(fd, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
2
mdadm.h
2
mdadm.h
|
@ -381,7 +381,7 @@ extern int CreateBitmap(char *filename, int force, char uuid[16],
|
||||||
unsigned long long array_size,
|
unsigned long long array_size,
|
||||||
int major);
|
int major);
|
||||||
extern int ExamineBitmap(char *filename, int brief, struct supertype *st);
|
extern int ExamineBitmap(char *filename, int brief, struct supertype *st);
|
||||||
extern void bitmap_update_uuid(int fd, int *uuid);
|
extern int bitmap_update_uuid(int fd, int *uuid);
|
||||||
|
|
||||||
extern int md_get_version(int fd);
|
extern int md_get_version(int fd);
|
||||||
extern int get_linux_version(void);
|
extern int get_linux_version(void);
|
||||||
|
|
3
super0.c
3
super0.c
|
@ -625,7 +625,8 @@ static int store_super0(struct supertype *st, int fd, void *sbv)
|
||||||
if (super->state & (1<<MD_SB_BITMAP_PRESENT)) {
|
if (super->state & (1<<MD_SB_BITMAP_PRESENT)) {
|
||||||
struct bitmap_super_s * bm = (struct bitmap_super_s*)(super+1);
|
struct bitmap_super_s * bm = (struct bitmap_super_s*)(super+1);
|
||||||
if (__le32_to_cpu(bm->magic) == BITMAP_MAGIC)
|
if (__le32_to_cpu(bm->magic) == BITMAP_MAGIC)
|
||||||
write(fd, bm, sizeof(*bm));
|
if (write(fd, bm, sizeof(*bm)) != sizeof(*bm))
|
||||||
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
fsync(fd);
|
fsync(fd);
|
||||||
|
|
3
super1.c
3
super1.c
|
@ -715,7 +715,8 @@ static int store_super1(struct supertype *st, int fd, void *sbv)
|
||||||
(((char*)sb)+1024);
|
(((char*)sb)+1024);
|
||||||
if (__le32_to_cpu(bm->magic) == BITMAP_MAGIC) {
|
if (__le32_to_cpu(bm->magic) == BITMAP_MAGIC) {
|
||||||
locate_bitmap1(st, fd, sbv);
|
locate_bitmap1(st, fd, sbv);
|
||||||
write(fd, bm, sizeof(*bm));
|
if (write(fd, bm, sizeof(*bm)) != sizeof(*bm))
|
||||||
|
return 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fsync(fd);
|
fsync(fd);
|
||||||
|
|
Loading…
Reference in New Issue