[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[PATCH] Update mk-s390-cdboot.c to work with large kernel images (#184648)
- From: David Cantrell <dcantrell redhat com>
- To: anaconda-devel-list redhat com
- Cc:
- Subject: [PATCH] Update mk-s390-cdboot.c to work with large kernel images (#184648)
- Date: Mon, 1 Dec 2008 12:03:57 -1000
IBM's update to mk-s390-cdboot.c to support large kernel images and
large initrd images.
---
utils/mk-s390-cdboot.c | 47 ++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/utils/mk-s390-cdboot.c b/utils/mk-s390-cdboot.c
index 99d4fef..4a58258 100644
--- a/utils/mk-s390-cdboot.c
+++ b/utils/mk-s390-cdboot.c
@@ -122,7 +122,8 @@ int main (int argc, char **argv) {
printf("writing kernel...\n");
while (1) {
- rc = fread(buffer, BUFFER_LEN, 1, fd2);
+ rc = fread(buffer, 1, 1, fd2);
+
if (rc == 0) {
break;
}
@@ -132,17 +133,23 @@ int main (int argc, char **argv) {
abort();
}
- wc = fwrite(buffer, BUFFER_LEN, 1, fd1);
+ wc = fwrite(buffer, 1, 1, fd1);
if (feof(fd1) || ferror(fd1)) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+
+ if (wc != rc) {
+ fprintf(stderr, "could only write %i of %i bytes of kernel\n",
+ wc, rc);
+ }
}
printf("writing initrd...\n");
fseek(fd1, initrd_start, SEEK_SET);
while (1) {
- rc = fread(buffer, BUFFER_LEN, 1, fd3);
+ rc = fread(buffer, 1, 1, fd3);
+
if (rc == 0) {
break;
}
@@ -152,11 +159,16 @@ int main (int argc, char **argv) {
abort();
}
- wc = fwrite(buffer, BUFFER_LEN, 1, fd1);
+ wc = fwrite(buffer, 1, 1, fd1);
if (feof(fd1) || ferror(fd1)) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+
+ if (wc != rc) {
+ fprintf(stderr, "could only write %i of %i bytes of initrd\n",
+ wc, rc);
+ }
}
if (fseek(fd3, 0, SEEK_END) == -1) {
@@ -175,12 +187,17 @@ int main (int argc, char **argv) {
abort();
}
- wc = fwrite(&start_psw_address, 4, 1, fd1);
+ wc = fwrite(&start_psw_address, 1, 4, fd1);
if (feof(fd1) || ferror(fd1)) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+ if (wc != 4) {
+ fprintf(stderr, "could only write %i of %i bytes of PSW address\n",
+ wc, 4);
+ }
+
printf("writing initrd address and size...\n");
printf("INITRD start: 0x%016llx\n", initrd_start);
printf("INITRD size : 0x%016llx\n", initrd_size);
@@ -190,23 +207,33 @@ int main (int argc, char **argv) {
abort();
}
- wc = fwrite(&initrd_start, 8, 1, fd1);
+ wc = fwrite(&initrd_start, 1, 8, fd1);
if (feof(fd1) || ferror(fd1)) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+ if (wc != 8) {
+ fprintf(stderr, "could only write %i of %i bytes of INITRD start\n",
+ wc, 8);
+ }
+
if (fseek(fd1, 0x10410, SEEK_SET) == -1) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
- wc = fwrite(&initrd_size, 8, 1, fd1);
+ wc = fwrite(&initrd_size, 1, 8, fd1);
if (feof(fd1) || ferror(fd1)) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+ if (wc != 8) {
+ fprintf(stderr, "could only write %i of %i bytes of INITRD size\n",
+ wc, 8);
+ }
+
printf("writing parmfile...\n");
if (fseek(fd1, 0x10480, SEEK_SET) == -1) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
@@ -215,6 +242,7 @@ int main (int argc, char **argv) {
while (1) {
rc = fread(buffer, 1, 1, fd4);
+
if (rc == 0) {
break;
}
@@ -229,6 +257,11 @@ int main (int argc, char **argv) {
fprintf(stderr, "%s (%d): %s\n", __func__, __LINE__, strerror(errno));
abort();
}
+
+ if (wc != 1) {
+ fprintf(stderr, "could only write %i of %i bytes of parmfile\n",
+ wc, 1);
+ }
}
if (fclose(fd1) == EOF) {
--
1.6.0.3
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]