On Fri, Aug 29, 2014 at 09:48:01AM +0100, Richard W.M. Jones wrote: > On Fri, Aug 29, 2014 at 04:33:12PM +0800, Hu Tao wrote: > > + if (prealloc == PREALLOC_MODE_FULL) { > > + /* posix_fallocate() doesn't set errno. */ > > + result = -posix_fallocate(fd, 0, total_size); > > + if (result != 0) { > > Is it better to test: > > result != ENOSYS && result != EOPNOTSUPP > > here?
posix_fallocate() doesn't return ENOSYS or EOPNOTSUPP. All the errors returned by posix_fallocate() apply to writing zeros, too. that is, if posix_fallocate() returns an error, we should not do writing zeros, neither. I'm wondering what is the right way to test if posix_fallocate() is supported, something like AC_CHECK_FUNC? how? Regards, Hu > > I think this is definitely the right approach. > > Rich. > > > -- > Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones > Read my programming and virtualization blog: http://rwmj.wordpress.com > virt-p2v converts physical machines to virtual machines. Boot with a > live CD or over the network (PXE) and turn machines into KVM guests. > http://libguestfs.org/virt-v2v