[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v7 11/35] util: introduce qemu_file_getlength()
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-block] [PATCH v7 11/35] util: introduce qemu_file_getlength() |
Date: |
Fri, 6 Nov 2015 13:50:17 -0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
As this patch affects raw_getlength(), CCing the raw block driver
maintainer and the qemu-block mailing list.
On Mon, Nov 02, 2015 at 05:13:13PM +0800, Xiao Guangrong wrote:
> It is used to get the size of the specified file, also qemu_fd_getlength()
> is introduced to unify the code with raw_getlength() in block/raw-posix.c
>
> Signed-off-by: Xiao Guangrong <address@hidden>
> ---
> block/raw-posix.c | 7 +------
> include/qemu/osdep.h | 2 ++
> util/osdep.c | 31 +++++++++++++++++++++++++++++++
I know I was the one who suggested osdep.c, but maybe oslib-posix.c is a
more appropriate place for the new function?
> 3 files changed, 34 insertions(+), 6 deletions(-)
>
> diff --git a/block/raw-posix.c b/block/raw-posix.c
> index 918c756..734e6dd 100644
> --- a/block/raw-posix.c
> +++ b/block/raw-posix.c
> @@ -1592,18 +1592,13 @@ static int64_t raw_getlength(BlockDriverState *bs)
> {
> BDRVRawState *s = bs->opaque;
> int ret;
> - int64_t size;
>
> ret = fd_open(bs);
> if (ret < 0) {
> return ret;
> }
>
> - size = lseek(s->fd, 0, SEEK_END);
> - if (size < 0) {
> - return -errno;
> - }
> - return size;
> + return qemu_fd_getlength(s->fd);
> }
> #endif
>
> diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> index dbc17dc..ca4c3fa 100644
> --- a/include/qemu/osdep.h
> +++ b/include/qemu/osdep.h
> @@ -303,4 +303,6 @@ int qemu_read_password(char *buf, int buf_size);
> pid_t qemu_fork(Error **errp);
>
> size_t qemu_file_get_page_size(const char *mem_path, Error **errp);
> +int64_t qemu_fd_getlength(int fd);
> +size_t qemu_file_getlength(const char *file, Error **errp);
> #endif
> diff --git a/util/osdep.c b/util/osdep.c
> index 0092bb6..5a61e19 100644
> --- a/util/osdep.c
> +++ b/util/osdep.c
> @@ -428,3 +428,34 @@ writev(int fd, const struct iovec *iov, int iov_cnt)
> return readv_writev(fd, iov, iov_cnt, true);
> }
> #endif
> +
> +int64_t qemu_fd_getlength(int fd)
> +{
> + int64_t size;
> +
> + size = lseek(fd, 0, SEEK_END);
> + if (size < 0) {
> + return -errno;
> + }
> + return size;
> +}
> +
> +size_t qemu_file_getlength(const char *file, Error **errp)
> +{
> + int64_t size;
> + int fd = qemu_open(file, O_RDONLY);
> +
> + if (fd < 0) {
> + error_setg_file_open(errp, errno, file);
> + return 0;
> + }
> +
> + size = qemu_fd_getlength(fd);
> + if (size < 0) {
> + error_setg_errno(errp, -size, "can't get size of file %s", file);
> + size = 0;
> + }
> +
> + qemu_close(fd);
> + return size;
> +}
> --
> 1.8.3.1
>
--
Eduardo
- Re: [Qemu-block] [PATCH v7 11/35] util: introduce qemu_file_getlength(),
Eduardo Habkost <=