dump-guest-memory: introduce dump_process() helper function.
No functional change. Cleanup only. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-Id: <1455772616-8668-6-git-send-email-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									65d64f3623
								
							
						
					
					
						commit
						ca1fc8c97e
					
				
							
								
								
									
										31
									
								
								dump.c
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								dump.c
									
									
									
									
									
								
							@ -1465,6 +1465,9 @@ static void dump_init(DumpState *s, int fd, bool has_format,
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    s->has_format = has_format;
 | 
			
		||||
    s->format = format;
 | 
			
		||||
 | 
			
		||||
    /* kdump-compressed is conflict with paging and filter */
 | 
			
		||||
    if (has_format && format != DUMP_GUEST_MEMORY_FORMAT_ELF) {
 | 
			
		||||
        assert(!paging && !has_filter);
 | 
			
		||||
@ -1623,6 +1626,23 @@ cleanup:
 | 
			
		||||
    dump_cleanup(s);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* this operation might be time consuming. */
 | 
			
		||||
static void dump_process(DumpState *s, Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    Error *local_err = NULL;
 | 
			
		||||
 | 
			
		||||
    if (s->has_format && s->format != DUMP_GUEST_MEMORY_FORMAT_ELF) {
 | 
			
		||||
        create_kdump_vmcore(s, &local_err);
 | 
			
		||||
    } else {
 | 
			
		||||
        create_vmcore(s, &local_err);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    s->status = (local_err ? DUMP_STATUS_FAILED : DUMP_STATUS_COMPLETED);
 | 
			
		||||
    error_propagate(errp, local_err);
 | 
			
		||||
 | 
			
		||||
    dump_cleanup(s);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qmp_dump_guest_memory(bool paging, const char *file,
 | 
			
		||||
                           bool has_detach, bool detach,
 | 
			
		||||
                           bool has_begin, int64_t begin, bool has_length,
 | 
			
		||||
@ -1708,16 +1728,7 @@ void qmp_dump_guest_memory(bool paging, const char *file,
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (has_format && format != DUMP_GUEST_MEMORY_FORMAT_ELF) {
 | 
			
		||||
        create_kdump_vmcore(s, &local_err);
 | 
			
		||||
    } else {
 | 
			
		||||
        create_vmcore(s, &local_err);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    s->status = (local_err ? DUMP_STATUS_FAILED : DUMP_STATUS_COMPLETED);
 | 
			
		||||
    error_propagate(errp, local_err);
 | 
			
		||||
 | 
			
		||||
    dump_cleanup(s);
 | 
			
		||||
    dump_process(s, errp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error **errp)
 | 
			
		||||
 | 
			
		||||
@ -178,6 +178,9 @@ typedef struct DumpState {
 | 
			
		||||
    size_t num_dumpable;        /* number of page that can be dumped */
 | 
			
		||||
    uint32_t flag_compress;     /* indicate the compression format */
 | 
			
		||||
    DumpStatus status;          /* current dump status */
 | 
			
		||||
 | 
			
		||||
    bool has_format;              /* whether format is provided */
 | 
			
		||||
    DumpGuestMemoryFormat format; /* valid only if has_format == true */
 | 
			
		||||
} DumpState;
 | 
			
		||||
 | 
			
		||||
uint16_t cpu_to_dump16(DumpState *s, uint16_t val);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user