[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.0.3-testing] Revert 11728:30f13007be. Breaks Solaris guests.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxxx # Date 1160514241 -3600 # Node ID f7d65fb7299b95b8b6d3a44134a9f2af211393c6 # Parent f8ddc9abf3ef7b8b8ab3a235f096a0ccb66efcb7 Revert 11728:30f13007be. Breaks Solaris guests. Will need a new method for handling padded gzip files. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- tools/libxc/xc_linux_build.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-) diff -r f8ddc9abf3ef -r f7d65fb7299b tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Tue Oct 10 16:02:30 2006 +0100 +++ b/tools/libxc/xc_linux_build.c Tue Oct 10 22:04:01 2006 +0100 @@ -38,7 +38,7 @@ struct initrd_info { enum { INITRD_none, INITRD_file, INITRD_mem } type; unsigned long len; union { - int fd; + gzFile file_handle; char *mem_addr; } u; }; @@ -152,7 +152,7 @@ int load_initrd(int xc_handle, domid_t d } else { - if ( read(initrd->u.fd, page, PAGE_SIZE) == -1 ) + if ( gzread(initrd->u.file_handle, page, PAGE_SIZE) == -1 ) { PERROR("Error reading initrd image, could not"); return -EINVAL; @@ -1344,16 +1344,20 @@ int xc_linux_build(int xc_handle, if ( (initrd_name != NULL) && (strlen(initrd_name) != 0) ) { + initrd_info.type = INITRD_file; + if ( (fd = open(initrd_name, O_RDONLY)) < 0 ) { PERROR("Could not open the initial ramdisk image"); goto error_out; } - initrd_info.type = INITRD_file; - initrd_info.u.fd = fd; - initrd_info.len = lseek(fd, 0, SEEK_END); - lseek(fd, 0, SEEK_SET); + initrd_info.len = xc_get_filesz(fd); + if ( (initrd_info.u.file_handle = gzdopen(fd, "rb")) == NULL ) + { + PERROR("Could not allocate decompression state for initrd"); + goto error_out; + } } sts = xc_linux_build_internal(xc_handle, domid, image, image_size, @@ -1363,8 +1367,8 @@ int xc_linux_build(int xc_handle, error_out: free(image); - if ( initrd_info.type == INITRD_file ) - close(initrd_info.u.fd); + if ( initrd_info.type == INITRD_file && initrd_info.u.file_handle ) + gzclose(initrd_info.u.file_handle); else if ( fd >= 0 ) close(fd); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |