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
cow.h
0 → 100644
qemu-mkcow.c
... | ... | @@ -41,7 +41,7 @@ |
41 | 41 | #include <sys/stat.h> |
42 | 42 | #include <netinet/in.h> |
43 | 43 | |
44 | -#include "vl.h" | |
44 | +#include "cow.h" | |
45 | 45 | |
46 | 46 | #include "bswap.h" |
47 | 47 | |
... | ... | @@ -101,13 +101,14 @@ void help(void) |
101 | 101 | int main(int argc, char **argv) |
102 | 102 | { |
103 | 103 | const char *image_filename, *cow_filename; |
104 | - int cow_fd, c, nb_args; | |
104 | + int cow_fd, c, nb_args, simple_image; | |
105 | 105 | int64_t image_size; |
106 | 106 | |
107 | 107 | image_filename = NULL; |
108 | 108 | image_size = 0; |
109 | + simple_image = 0; | |
109 | 110 | for(;;) { |
110 | - c = getopt(argc, argv, "hf:"); | |
111 | + c = getopt(argc, argv, "hf:s"); | |
111 | 112 | if (c == -1) |
112 | 113 | break; |
113 | 114 | switch(c) { |
... | ... | @@ -117,6 +118,9 @@ int main(int argc, char **argv) |
117 | 118 | case 'f': |
118 | 119 | image_filename = optarg; |
119 | 120 | break; |
121 | + case 's': | |
122 | + simple_image = 1; | |
123 | + break; | |
120 | 124 | } |
121 | 125 | } |
122 | 126 | if (!image_filename) |
... | ... | @@ -131,12 +135,16 @@ int main(int argc, char **argv) |
131 | 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 | 139 | if (!cow_fd < 0) |
136 | 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 | 149 | close(cow_fd); |
142 | 150 | return 0; | ... | ... |
vl.h
... | ... | @@ -58,19 +58,6 @@ void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr); |
58 | 58 | int bdrv_commit(BlockDriverState *bs); |
59 | 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 | 61 | /* vga.c */ |
75 | 62 | |
76 | 63 | #define VGA_RAM_SIZE (4096 * 1024) | ... | ... |