Commit 00af2b26809d9cfb20af348ea7df255780348dd2
1 parent
a735aa31
added cow.h
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@653 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
30 additions
and
20 deletions
block.c
@@ -45,6 +45,8 @@ | @@ -45,6 +45,8 @@ | ||
45 | #define NO_THUNK_TYPE_SIZE | 45 | #define NO_THUNK_TYPE_SIZE |
46 | #include "thunk.h" | 46 | #include "thunk.h" |
47 | 47 | ||
48 | +#include "cow.h" | ||
49 | + | ||
48 | struct BlockDriverState { | 50 | struct BlockDriverState { |
49 | int fd; /* if -1, only COW mappings */ | 51 | int fd; /* if -1, only COW mappings */ |
50 | int64_t total_sectors; | 52 | int64_t total_sectors; |
cow.h
0 → 100644
qemu-mkcow.c
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | #include <sys/stat.h> | 41 | #include <sys/stat.h> |
42 | #include <netinet/in.h> | 42 | #include <netinet/in.h> |
43 | 43 | ||
44 | -#include "vl.h" | 44 | +#include "cow.h" |
45 | 45 | ||
46 | #include "bswap.h" | 46 | #include "bswap.h" |
47 | 47 | ||
@@ -101,13 +101,14 @@ void help(void) | @@ -101,13 +101,14 @@ void help(void) | ||
101 | int main(int argc, char **argv) | 101 | int main(int argc, char **argv) |
102 | { | 102 | { |
103 | const char *image_filename, *cow_filename; | 103 | const char *image_filename, *cow_filename; |
104 | - int cow_fd, c, nb_args; | 104 | + int cow_fd, c, nb_args, simple_image; |
105 | int64_t image_size; | 105 | int64_t image_size; |
106 | 106 | ||
107 | image_filename = NULL; | 107 | image_filename = NULL; |
108 | image_size = 0; | 108 | image_size = 0; |
109 | + simple_image = 0; | ||
109 | for(;;) { | 110 | for(;;) { |
110 | - c = getopt(argc, argv, "hf:"); | 111 | + c = getopt(argc, argv, "hf:s"); |
111 | if (c == -1) | 112 | if (c == -1) |
112 | break; | 113 | break; |
113 | switch(c) { | 114 | switch(c) { |
@@ -117,6 +118,9 @@ int main(int argc, char **argv) | @@ -117,6 +118,9 @@ int main(int argc, char **argv) | ||
117 | case 'f': | 118 | case 'f': |
118 | image_filename = optarg; | 119 | image_filename = optarg; |
119 | break; | 120 | break; |
121 | + case 's': | ||
122 | + simple_image = 1; | ||
123 | + break; | ||
120 | } | 124 | } |
121 | } | 125 | } |
122 | if (!image_filename) | 126 | if (!image_filename) |
@@ -131,12 +135,16 @@ int main(int argc, char **argv) | @@ -131,12 +135,16 @@ int main(int argc, char **argv) | ||
131 | image_size = (int64_t)atoi(argv[optind + 1]) * 2 * 1024; | 135 | image_size = (int64_t)atoi(argv[optind + 1]) * 2 * 1024; |
132 | } | 136 | } |
133 | 137 | ||
134 | - cow_fd = open(cow_filename, O_RDWR | O_CREAT | O_TRUNC, 0644); | 138 | + cow_fd = open(cow_filename, O_RDWR | O_CREAT | O_TRUNC | O_LARGEFILE, 0644); |
135 | if (!cow_fd < 0) | 139 | if (!cow_fd < 0) |
136 | return -1; | 140 | return -1; |
137 | - if (cow_create(cow_fd, image_filename, image_size) < 0) { | ||
138 | - fprintf(stderr, "%s: error while formating\n", cow_filename); | ||
139 | - exit(1); | 141 | + if (simple_image) { |
142 | + ftruncate64(cow_fd, image_size * 512); | ||
143 | + } else { | ||
144 | + if (cow_create(cow_fd, image_filename, image_size) < 0) { | ||
145 | + fprintf(stderr, "%s: error while formating\n", cow_filename); | ||
146 | + exit(1); | ||
147 | + } | ||
140 | } | 148 | } |
141 | close(cow_fd); | 149 | close(cow_fd); |
142 | return 0; | 150 | return 0; |
vl.h
@@ -58,19 +58,6 @@ void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr); | @@ -58,19 +58,6 @@ void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr); | ||
58 | int bdrv_commit(BlockDriverState *bs); | 58 | int bdrv_commit(BlockDriverState *bs); |
59 | void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size); | 59 | void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size); |
60 | 60 | ||
61 | -/* user mode linux compatible COW file */ | ||
62 | -#define COW_MAGIC 0x4f4f4f4d /* MOOO */ | ||
63 | -#define COW_VERSION 2 | ||
64 | - | ||
65 | -struct cow_header_v2 { | ||
66 | - uint32_t magic; | ||
67 | - uint32_t version; | ||
68 | - char backing_file[1024]; | ||
69 | - int32_t mtime; | ||
70 | - uint64_t size; | ||
71 | - uint32_t sectorsize; | ||
72 | -}; | ||
73 | - | ||
74 | /* vga.c */ | 61 | /* vga.c */ |
75 | 62 | ||
76 | #define VGA_RAM_SIZE (4096 * 1024) | 63 | #define VGA_RAM_SIZE (4096 * 1024) |