"Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote: >> > And (4) can be done by libvirtd using ordinary POSIX calls, so no >> > external library support is needed, just some work to remote those >> > operations (which is mostly done). >> >> Isn't doing #4 portably pretty tricky? There's still too much >> variation, because many of the details aren't covered by POSIX. >> At least for GNU df, it was -- it uses the mountlist module from gnulib: > > We don't need to enumerate all the mount points. The admin will simply Lucky you :) > configure particulra directories (eg /var/lib/xen/images) as storage > repositories. So we only need to be able to call statfs/statvfs on > particular paths where we want to create a new image. > >> Of course, if your target is just Linux, then it is easier. > > Minimally we have to target Solaris too, since we know they already use > libvirt. Ok. Then this (also used by df) might help, if you ever need portability to e.g., older Solaris, *BSD, AIX, HP-UX, etc. http://cvs.sv.gnu.org/viewcvs/gnulib/lib/fsusage.c?root=gnulib&view=markup It provides a thin wrapper around statfs/statvfs, which helps handle some of the bogus values (sometimes negative or UINTMAX_MAX) that can arise in statvfs.f_* values. That last bit might even be useful on Linux.