''pacman --debug --root dir -S util-linux'' fails on a 2 GB NFS (1,9 GB free): "Partition /root/dir too full: 12385 blocks needed, 3802 blocks free"
statvfs() reports f_bsize = 524288, f_bfree = 3855, so the "blocks free" estimate is correct, taking the cushion into account.
A little debugging shows that the "blocks needed" overestimate comes from calculate_installed_size @ lib/libalpm/diskspace.c which, basically, rounds every file's size up to a multiple of the block size. In my case, having a huge block size, it is indeed summing 1 block per file.
Is it possible to work around this problem, and how?