Hello.
Accoring to truncate(2) ftruncate should not return
ENOSPC, but if looking at FFS implementation,
it can return ENOSPC if can not allocate space for last byte.
And I can easily reproduce this on my NetBSD 2.x box.
Is this a bug?