The code works for me, but we need this in Cygwin, and not an addon. Ced
On Wed, 24 Jun 2026 at 14:27, Roland Mainz via Cygwin <[email protected]> wrote: > > On Sat, Feb 15, 2025 at 4:14 PM Cedric Blancher via Cygwin > <[email protected]> wrote: > > Could Cygwin 3.6 please support fcntl(...,F_FREESP,...) and > > cntl(...,F_FREESP64,...), as specified in > > https://docs.oracle.com/cd/E19253-01/816-5167/fcntl-2/index.html > > > > Lots of older software from Solaris, SUPER/UX, CrayOS use F_FREESP for > > punching a hole into a file, and IMO it'll be nice if this works for > > Cygwin out of the box. > > 1. Ced: Could you please check whether the prototype code works for > you ? If "yes" then I'll make a patch for cygwin.dll based on this... > 2. Takashi: What do you think ? The API comes from Solaris, and is > implememted by at least FreeBSD, Unicos, SUPER/UX, etc. and is usually > used by database and HPC software. > > Prototype patch: > ---- snip ---- > #ifndef F_FREESP > #define F_FREESP 15 > #endif > > #ifndef F_ALLOCSP > #define F_ALLOCSP 16 > #endif > > /* FIXME: This should use a |struct flock| like Solaris/FreeBSD |fnctl()| */ > int fcntl_sparse_space_management_emulate(int fd, int cmd, off_t > offset, off_t len) > { > off_t file_size; > off_t end; > > file_size = lseek(fd, 0, SEEK_END); > if (file_size == (off_t)-1) > return -1; > > if (len == 0) > end = file_size; > else > end = offset + len; > > switch (cmd) { > > case F_FREESP: > if (offset >= file_size) > return 0; > > if (end >= file_size) { > return ftruncate(fd, offset); > } else { > if (fallocate(fd, > FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, > offset, > end - offset) == -1) { > return -1; > } > } > return 0; > > case F_ALLOCSP: > if (len == 0) { > return 0; > } > > if (fallocate(fd, 0, offset, len) == -1) { > return -1; > } > > return 0; > > default: > errno = EINVAL; > return -1; > } > } > ---- snip ---- > > ---- > > Bye, > Roland > -- > __ . . __ > (o.\ \/ /.o) [email protected] > \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer > /O /==\ O\ TEL +49 641 3992797 > (;O/ \/ \O;) > > -- > Problem reports: https://cygwin.com/problems.html > FAQ: https://cygwin.com/faq/ > Documentation: https://cygwin.com/docs.html > Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple -- Cedric Blancher <[email protected]> [https://plus.google.com/u/0/+CedricBlancher/] Institute Pasteur -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple

