[libvirt] [PATCH 8/9] Simplified version of volume zeroing based on feedback from the list.
Jim Meyering
jim at meyering.net
Thu Mar 4 10:39:53 UTC 2010
David Allan wrote:
> diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
...
Hi Dave,
> +static int
> +storageVolumeZeroSparseFile(virStorageVolDefPtr vol,
> + struct stat *st,
> + int fd)
Since the only use of "st" is for st->st_size,
please consider using a simpler "size_t size" parameter.
If you opt to keep the "struct stat *" pointer parameter,
it should be "const".
> +{
> + int ret = -1;
> + char errbuf[64];
> +
> + ret = ftruncate(fd, 0);
> + if (ret == -1) {
> + virReportSystemError(ret,
> + _("Failed to truncate volume with "
> + "path '%s' to 0 bytes: '%s'"),
> + vol->target.path,
> + virStrerror(errno, errbuf, sizeof(errbuf)));
> + goto out;
> + }
> +
> + ret = ftruncate(fd, st->st_size);
...
> +static int
> +storageZeroExtent(virStorageVolDefPtr vol,
> + struct stat *st,
> + int fd,
> + size_t extent_start,
> + size_t extent_length,
> + char *writebuf,
> + size_t *bytes_zeroed)
> +{
Since the only use of "st" is for st->st_blksize,
please consider using a simpler "size_t blksize" parameter.
> + int ret = -1, written;
> + size_t remaining, write_size;
> + char errbuf[64];
> +
> + VIR_DEBUG("extent logical start: %zu len: %zu ",
> + extent_start, extent_length);
> +
> + if ((ret = lseek(fd, extent_start, SEEK_SET)) < 0) {
> + virReportSystemError(ret, "Failed to seek to position %zu in volume "
> + "with path '%s': '%s'",
> + extent_start, vol->target.path,
> + virStrerror(errno, errbuf, sizeof(errbuf)));
> + goto out;
> + }
> +
> + remaining = extent_length;
> + while (remaining > 0) {
> +
> + write_size = (st->st_blksize < remaining) ? st->st_blksize : remaining;
...
More information about the libvir-list
mailing list