Commit d5249393efe472d50eb027e286566a57ba868bf2

Authored by bellard
1 parent 11c0315f

64 bit file I/O by default


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1040 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile
1 1 include config-host.mak
2 2  
3   -CFLAGS=-Wall -O2 -g -fno-strict-aliasing
  3 +CFLAGS=-Wall -O2 -g -fno-strict-aliasing
4 4 ifdef CONFIG_DARWIN
5 5 CFLAGS+= -mdynamic-no-pic
6 6 endif
... ... @@ -9,7 +9,7 @@ CFLAGS+=-fpack-struct
9 9 endif
10 10 LDFLAGS=-g
11 11 LIBS=
12   -DEFINES+=-D_GNU_SOURCE
  12 +DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
13 13 TOOLS=qemu-img
14 14 ifdef CONFIG_STATIC
15 15 LDFLAGS+=-static
... ...
Makefile.target
... ... @@ -159,7 +159,7 @@ endif
159 159  
160 160 #########################################################
161 161  
162   -DEFINES+=-D_GNU_SOURCE
  162 +DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
163 163 LIBS+=-lm
164 164 ifndef CONFIG_USER_ONLY
165 165 LIBS+=-lz
... ...
block-cow.c
... ... @@ -173,7 +173,7 @@ static int cow_read(BlockDriverState *bs, int64_t sector_num,
173 173  
174 174 while (nb_sectors > 0) {
175 175 if (is_changed(s->cow_bitmap, sector_num, nb_sectors, &n)) {
176   - lseek64(s->fd, s->cow_sectors_offset + sector_num * 512, SEEK_SET);
  176 + lseek(s->fd, s->cow_sectors_offset + sector_num * 512, SEEK_SET);
177 177 ret = read(s->fd, buf, n * 512);
178 178 if (ret != n * 512)
179 179 return -1;
... ... @@ -193,7 +193,7 @@ static int cow_write(BlockDriverState *bs, int64_t sector_num,
193 193 BDRVCowState *s = bs->opaque;
194 194 int ret, i;
195 195  
196   - lseek64(s->fd, s->cow_sectors_offset + sector_num * 512, SEEK_SET);
  196 + lseek(s->fd, s->cow_sectors_offset + sector_num * 512, SEEK_SET);
197 197 ret = write(s->fd, buf, nb_sectors * 512);
198 198 if (ret != nb_sectors * 512)
199 199 return -1;
... ...
block-qcow.c
... ... @@ -137,7 +137,7 @@ static int qcow_open(BlockDriverState *bs, const char *filename)
137 137 s->l1_table = qemu_malloc(s->l1_size * sizeof(uint64_t));
138 138 if (!s->l1_table)
139 139 goto fail;
140   - lseek64(fd, s->l1_table_offset, SEEK_SET);
  140 + lseek(fd, s->l1_table_offset, SEEK_SET);
141 141 if (read(fd, s->l1_table, s->l1_size * sizeof(uint64_t)) !=
142 142 s->l1_size * sizeof(uint64_t))
143 143 goto fail;
... ... @@ -161,7 +161,7 @@ static int qcow_open(BlockDriverState *bs, const char *filename)
161 161 len = header.backing_file_size;
162 162 if (len > 1023)
163 163 len = 1023;
164   - lseek64(fd, header.backing_file_offset, SEEK_SET);
  164 + lseek(fd, header.backing_file_offset, SEEK_SET);
165 165 if (read(fd, bs->backing_file, len) != len)
166 166 goto fail;
167 167 bs->backing_file[len] = '\0';
... ... @@ -275,13 +275,13 @@ static uint64_t get_cluster_offset(BlockDriverState *bs,
275 275 if (!allocate)
276 276 return 0;
277 277 /* allocate a new l2 entry */
278   - l2_offset = lseek64(s->fd, 0, SEEK_END);
  278 + l2_offset = lseek(s->fd, 0, SEEK_END);
279 279 /* round to cluster size */
280 280 l2_offset = (l2_offset + s->cluster_size - 1) & ~(s->cluster_size - 1);
281 281 /* update the L1 entry */
282 282 s->l1_table[l1_index] = l2_offset;
283 283 tmp = cpu_to_be64(l2_offset);
284   - lseek64(s->fd, s->l1_table_offset + l1_index * sizeof(tmp), SEEK_SET);
  284 + lseek(s->fd, s->l1_table_offset + l1_index * sizeof(tmp), SEEK_SET);
285 285 if (write(s->fd, &tmp, sizeof(tmp)) != sizeof(tmp))
286 286 return 0;
287 287 new_l2_table = 1;
... ... @@ -336,16 +336,16 @@ static uint64_t get_cluster_offset(BlockDriverState *bs,
336 336 overwritten */
337 337 if (decompress_cluster(s, cluster_offset) < 0)
338 338 return 0;
339   - cluster_offset = lseek64(s->fd, 0, SEEK_END);
  339 + cluster_offset = lseek(s->fd, 0, SEEK_END);
340 340 cluster_offset = (cluster_offset + s->cluster_size - 1) &
341 341 ~(s->cluster_size - 1);
342 342 /* write the cluster content */
343   - lseek64(s->fd, cluster_offset, SEEK_SET);
  343 + lseek(s->fd, cluster_offset, SEEK_SET);
344 344 if (write(s->fd, s->cluster_cache, s->cluster_size) !=
345 345 s->cluster_size)
346 346 return -1;
347 347 } else {
348   - cluster_offset = lseek64(s->fd, 0, SEEK_END);
  348 + cluster_offset = lseek(s->fd, 0, SEEK_END);
349 349 if (allocate == 1) {
350 350 /* round to cluster size */
351 351 cluster_offset = (cluster_offset + s->cluster_size - 1) &
... ... @@ -364,7 +364,7 @@ static uint64_t get_cluster_offset(BlockDriverState *bs,
364 364 s->cluster_data,
365 365 s->cluster_data + 512, 1, 1,
366 366 &s->aes_encrypt_key);
367   - lseek64(s->fd, cluster_offset + i * 512, SEEK_SET);
  367 + lseek(s->fd, cluster_offset + i * 512, SEEK_SET);
368 368 if (write(s->fd, s->cluster_data, 512) != 512)
369 369 return -1;
370 370 }
... ... @@ -378,7 +378,7 @@ static uint64_t get_cluster_offset(BlockDriverState *bs,
378 378 /* update L2 table */
379 379 tmp = cpu_to_be64(cluster_offset);
380 380 l2_table[l2_index] = tmp;
381   - lseek64(s->fd, l2_offset + l2_index * sizeof(tmp), SEEK_SET);
  381 + lseek(s->fd, l2_offset + l2_index * sizeof(tmp), SEEK_SET);
382 382 if (write(s->fd, &tmp, sizeof(tmp)) != sizeof(tmp))
383 383 return 0;
384 384 }
... ... @@ -437,7 +437,7 @@ static int decompress_cluster(BDRVQcowState *s, uint64_t cluster_offset)
437 437 if (s->cluster_cache_offset != coffset) {
438 438 csize = cluster_offset >> (63 - s->cluster_bits);
439 439 csize &= (s->cluster_size - 1);
440   - lseek64(s->fd, coffset, SEEK_SET);
  440 + lseek(s->fd, coffset, SEEK_SET);
441 441 ret = read(s->fd, s->cluster_data, csize);
442 442 if (ret != csize)
443 443 return -1;
... ... @@ -470,7 +470,7 @@ static int qcow_read(BlockDriverState *bs, int64_t sector_num,
470 470 return -1;
471 471 memcpy(buf, s->cluster_cache + index_in_cluster * 512, 512 * n);
472 472 } else {
473   - lseek64(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
  473 + lseek(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
474 474 ret = read(s->fd, buf, n * 512);
475 475 if (ret != n * 512)
476 476 return -1;
... ... @@ -503,7 +503,7 @@ static int qcow_write(BlockDriverState *bs, int64_t sector_num,
503 503 index_in_cluster + n);
504 504 if (!cluster_offset)
505 505 return -1;
506   - lseek64(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
  506 + lseek(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
507 507 if (s->crypt_method) {
508 508 encrypt_sectors(s, sector_num, s->cluster_data, buf, n, 1,
509 509 &s->aes_encrypt_key);
... ... @@ -650,7 +650,7 @@ int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num,
650 650 cluster_offset = get_cluster_offset(bs, sector_num << 9, 2,
651 651 out_len, 0, 0);
652 652 cluster_offset &= s->cluster_offset_mask;
653   - lseek64(s->fd, cluster_offset, SEEK_SET);
  653 + lseek(s->fd, cluster_offset, SEEK_SET);
654 654 if (write(s->fd, out_buf, out_len) != out_len) {
655 655 qemu_free(out_buf);
656 656 return -1;
... ...
block-vmdk.c
... ... @@ -239,7 +239,7 @@ static int vmdk_read(BlockDriverState *bs, int64_t sector_num,
239 239 if (!cluster_offset) {
240 240 memset(buf, 0, 512 * n);
241 241 } else {
242   - lseek64(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
  242 + lseek(s->fd, cluster_offset + index_in_cluster * 512, SEEK_SET);
243 243 ret = read(s->fd, buf, n * 512);
244 244 if (ret != n * 512)
245 245 return -1;
... ...
... ... @@ -71,14 +71,22 @@ int bdrv_create(BlockDriver *drv,
71 71 return drv->bdrv_create(filename, size_in_sectors, backing_file, flags);
72 72 }
73 73  
74   -/* XXX: race condition possible */
  74 +#ifdef _WIN32
  75 +static void get_tmp_filename(char *filename, int size)
  76 +{
  77 + /* XXX: find a better function */
  78 + tmpnam(filename);
  79 +}
  80 +#else
75 81 static void get_tmp_filename(char *filename, int size)
76 82 {
77 83 int fd;
  84 + /* XXX: race condition possible */
78 85 pstrcpy(filename, size, "/tmp/vl.XXXXXX");
79 86 fd = mkstemp(filename);
80 87 close(fd);
81 88 }
  89 +#endif
82 90  
83 91 static BlockDriver *find_image_format(const char *filename)
84 92 {
... ... @@ -514,7 +522,7 @@ static int raw_open(BlockDriverState *bs, const char *filename)
514 522 return -1;
515 523 bs->read_only = 1;
516 524 }
517   - size = lseek64(fd, 0, SEEK_END);
  525 + size = lseek(fd, 0, SEEK_END);
518 526 bs->total_sectors = size / 512;
519 527 s->fd = fd;
520 528 return 0;
... ... @@ -526,7 +534,7 @@ static int raw_read(BlockDriverState *bs, int64_t sector_num,
526 534 BDRVRawState *s = bs->opaque;
527 535 int ret;
528 536  
529   - lseek64(s->fd, sector_num * 512, SEEK_SET);
  537 + lseek(s->fd, sector_num * 512, SEEK_SET);
530 538 ret = read(s->fd, buf, nb_sectors * 512);
531 539 if (ret != nb_sectors * 512)
532 540 return -1;
... ... @@ -539,7 +547,7 @@ static int raw_write(BlockDriverState *bs, int64_t sector_num,
539 547 BDRVRawState *s = bs->opaque;
540 548 int ret;
541 549  
542   - lseek64(s->fd, sector_num * 512, SEEK_SET);
  550 + lseek(s->fd, sector_num * 512, SEEK_SET);
543 551 ret = write(s->fd, buf, nb_sectors * 512);
544 552 if (ret != nb_sectors * 512)
545 553 return -1;
... ... @@ -564,7 +572,7 @@ static int raw_create(const char *filename, int64_t total_size,
564 572 0644);
565 573 if (fd < 0)
566 574 return -EIO;
567   - ftruncate64(fd, total_size * 512);
  575 + ftruncate(fd, total_size * 512);
568 576 close(fd);
569 577 return 0;
570 578 }
... ...
configure
... ... @@ -429,10 +429,6 @@ echo &quot;TARGET_DIRS=$target_list&quot; &gt;&gt; $config_mak
429 429 # XXX: suppress that
430 430 if [ "$bsd" = "yes" ] ; then
431 431 echo "#define O_LARGEFILE 0" >> $config_h
432   - echo "#define lseek64 lseek" >> $config_h
433   - echo "#define mkstemp64 mkstemp" >> $config_h
434   - echo "#define ftruncate64 ftruncate" >> $config_h
435   - echo "#define off64_t off_t" >> $config_h
436 432 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
437 433 echo "#define _BSD 1" >> $config_h
438 434 fi
... ...