[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Build issue with qemu-2.7.0
From: |
Colum Paget |
Subject: |
[Qemu-devel] Build issue with qemu-2.7.0 |
Date: |
Sun, 6 Nov 2016 12:34:32 +0000 |
Hi all,
Firstly appologies for not using the launchpad bug tracker, it won't
let me register an account, keeps telling me my 'page is stale'.
I'm sending this to you as a build issue, but it could be that it's a
block-io issue. I'm calling it a build issue because I fixed it by
changing the configure/build process.
I'm building on a linux-from-scratch system.
at line 1042 of block/raw-posix.c there's a function called
handle_aiocb_write_zeroes
This function declares a variable 's' only if certain defines are true
#if defined(CONFIG_FALLOCATE) || defined(CONFIG_XFS)
BDRVRawState *s = aiocb->bs->opaque;
#endif
but it uses variable 's' if *other* defines are true
#ifdef CONFIG_FALLOCATE_ZERO_RANGE
if (s->has_write_zeroes) {
int ret = do_fallocate(s->fd, FALLOC_FL_ZERO_RANGE,
aiocb->aio_offset, aiocb->aio_nbytes);
if (ret == 0 || ret != -ENOTSUP) {
return ret;
}
s->has_write_zeroes = false;
}
#endif
so, if CONFIG_FALLOCATE_ZERO_RANGE is defined, but CONFIG_FALLOCATE
isn't, then the build will fail.
I *think* that CONFIG_FALLOCATE_ZERO_RANGE shouldn't be set if
CONFIG_FALLOCATE isn't set (Quite how this situation has come about
I'm not sure, probably my system is strange in some way). Looking in
'configure' I see (at line 5108):
if test "$fallocate" = "yes" ; then
echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
if test "$fallocate_punch_hole" = "yes" ; then
echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
fi
if test "$fallocate_zero_range" = "yes" ; then
echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
fi
if test "$posix_fallocate" = "yes" ; then
echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
fi
if test "$sync_file_range" = "yes" ; then
echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
If I change the CONFIG_FALLOCATE 'if' block to wrap all the FALLOCATE
options, like so:
if test "$fallocate" = "yes" ; then
echo "CONFIG_FALLOCATE=y" >> $config_host_mak
if test "$fallocate_punch_hole" = "yes" ; then
echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
fi
if test "$fallocate_zero_range" = "yes" ; then
echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
fi
if test "$posix_fallocate" = "yes" ; then
echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
fi
fi
then qemu builds successfully on my system.
Hope this is some use!
regards
Colum
- [Qemu-devel] Build issue with qemu-2.7.0,
Colum Paget <=