Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] makedumpfile: fix two bugs with --dry-run
@ 2021-08-12 13:39 Philipp Rudo
  2021-08-12 13:39 ` [PATCH 1/2] makedumpfile: Fix bad file descriptor error when using --dry-run Philipp Rudo
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Philipp Rudo @ 2021-08-12 13:39 UTC (permalink / raw)
  To: kexec; +Cc: k-hagio-ab

Hi,

While playing with the --dry-run option I noticed two bugs. You can find the
fixes below.

Thanks
Philipp

Philipp Rudo (2):
  makedumpfile: Fix bad file descriptor error when using --dry-run
  makedumpfile: Fix --dry-run for incomplete dumps

 makedumpfile.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

-- 
2.31.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] makedumpfile: Fix bad file descriptor error when using --dry-run
  2021-08-12 13:39 [PATCH 0/2] makedumpfile: fix two bugs with --dry-run Philipp Rudo
@ 2021-08-12 13:39 ` Philipp Rudo
  2021-08-12 13:39 ` [PATCH 2/2] makedumpfile: Fix --dry-run for incomplete dumps Philipp Rudo
  2021-08-16  2:54 ` [PATCH 0/2] makedumpfile: fix two bugs with --dry-run HAGIO KAZUHITO(萩尾 一仁)
  2 siblings, 0 replies; 4+ messages in thread
From: Philipp Rudo @ 2021-08-12 13:39 UTC (permalink / raw)
  To: kexec; +Cc: k-hagio-ab

When running makedumpfile with the --dry-run option it fails with

	[...]
	write_and_check_space: Can't seek the dump file(vmcore). Bad file descriptor
	[...]

This is because for --dry-run no dump file is created and a dummy file
descriptor of -1 is used. Thus the lseek in write_and_check_space will
fail. Fix this by treating a dry run as if writing to STDOUT.

Fixes: f0cfa86 ("[PATCH v2 3/3] Add -L option to limit output file size")
Signed-off-by: Philipp Rudo <prudo@redhat.com>
---
 makedumpfile.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index b1b3b42..30f9725 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -4712,7 +4712,7 @@ write_and_check_space(int fd, void *buf, size_t buf_size, const char* desc,
 	int retval = 0;
 	off_t pos;
 
-	if (fd == STDOUT_FILENO) {
+	if (fd == STDOUT_FILENO || info->flag_dry_run) {
 		pos = write_bytes;
 	} else {
 		pos = lseek(fd, 0, SEEK_CUR);
-- 
2.31.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] makedumpfile: Fix --dry-run for incomplete dumps
  2021-08-12 13:39 [PATCH 0/2] makedumpfile: fix two bugs with --dry-run Philipp Rudo
  2021-08-12 13:39 ` [PATCH 1/2] makedumpfile: Fix bad file descriptor error when using --dry-run Philipp Rudo
@ 2021-08-12 13:39 ` Philipp Rudo
  2021-08-16  2:54 ` [PATCH 0/2] makedumpfile: fix two bugs with --dry-run HAGIO KAZUHITO(萩尾 一仁)
  2 siblings, 0 replies; 4+ messages in thread
From: Philipp Rudo @ 2021-08-12 13:39 UTC (permalink / raw)
  To: kexec; +Cc: k-hagio-ab

When running out of space during a dry run, e.g. by limiting the output
size using the -L option, makedumpfile fails with

	[...]
	Can't write the dump file(vmcore). Size limit(104857600) reached.
	get_nr_pages: Can't seek end of the dump file(vmcore).
	__read_disk_dump_header: Can't open a file(vmcore). No such file or directory
	[...]

This is because for --dry-run no dump file is created and a dummy file
descriptor of -1 is used. Thus the file operations in get_nr_pages and
check_and_modify_*_headers fail. Fix the first error by using
write_bytes as file size for the output file and the second one by
always returning TRUE for check_and_modify_headers.

Fixes: 3422e1d ("[PATCH 1/2] Add --dry-run option to prevent writing the dumpfile")
Signed-off-by: Philipp Rudo <prudo@redhat.com>
---
 makedumpfile.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index 30f9725..c063267 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -5113,6 +5113,9 @@ check_and_modify_multiple_kdump_headers() {
 int
 check_and_modify_headers()
 {
+	if (info->flag_dry_run)
+		return TRUE;
+
 	if (info->flag_elf_dumpfile)
 		return check_and_modify_elf_headers(info->name_dumpfile);
 	else
@@ -7996,7 +7999,11 @@ get_nr_pages(void *buf, struct cache_data *cd_page){
 	int size, file_end, nr_pages;
 	page_desc_t *pd = buf;
 
-	file_end = lseek(cd_page->fd, 0, SEEK_END);
+	if (info->flag_dry_run)
+		file_end = write_bytes;
+	else
+		file_end = lseek(cd_page->fd, 0, SEEK_END);
+
 	if (file_end < 0) {
 		ERRMSG("Can't seek end of the dump file(%s).\n", cd_page->file_name);
 		return -1;
-- 
2.31.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: [PATCH 0/2] makedumpfile: fix two bugs with --dry-run
  2021-08-12 13:39 [PATCH 0/2] makedumpfile: fix two bugs with --dry-run Philipp Rudo
  2021-08-12 13:39 ` [PATCH 1/2] makedumpfile: Fix bad file descriptor error when using --dry-run Philipp Rudo
  2021-08-12 13:39 ` [PATCH 2/2] makedumpfile: Fix --dry-run for incomplete dumps Philipp Rudo
@ 2021-08-16  2:54 ` HAGIO KAZUHITO(萩尾 一仁)
  2 siblings, 0 replies; 4+ messages in thread
From: HAGIO KAZUHITO(萩尾 一仁) @ 2021-08-16  2:54 UTC (permalink / raw)
  To: Philipp Rudo, kexec@lists.infradead.org

-----Original Message-----
> Hi,
> 
> While playing with the --dry-run option I noticed two bugs. You can find the
> fixes below.
> 
> Thanks
> Philipp
> 
> Philipp Rudo (2):
>   makedumpfile: Fix bad file descriptor error when using --dry-run
>   makedumpfile: Fix --dry-run for incomplete dumps
> 
>  makedumpfile.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> --
> 2.31.1

Thank you for the fixes, applied.
https://github.com/makedumpfile/makedumpfile/compare/efef023...5684d4c

Kazu


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-16  2:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-12 13:39 [PATCH 0/2] makedumpfile: fix two bugs with --dry-run Philipp Rudo
2021-08-12 13:39 ` [PATCH 1/2] makedumpfile: Fix bad file descriptor error when using --dry-run Philipp Rudo
2021-08-12 13:39 ` [PATCH 2/2] makedumpfile: Fix --dry-run for incomplete dumps Philipp Rudo
2021-08-16  2:54 ` [PATCH 0/2] makedumpfile: fix two bugs with --dry-run HAGIO KAZUHITO(萩尾 一仁)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox