Re: Cygwin sparse file support: Please support fcntl(..., F_FREESP, ...)

Roland Mainz via Cygwin <[email protected]> Tue, 30 Jun 2026 14:45:37 +0200
Newsgroups gmane.os.cygwin
Message-ID <CAKAoaQ=s+OORcSN3=+bQHQOeMcULxrzahaeKMn4zH0vAGjiU3A@mail.gmail.com>
--000000000000df4ff8065577f5d8
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Jun 27, 2026 at 5:53=E2=80=AFPM Cedric Blancher via Cygwin
<[email protected]> wrote:
[CC:'ing Takashi Yano <[email protected]> to have a look]
> The code works for me, but we need this in Cygwin, and not an addon.

I know, I know...

I've attached a prototype patch as
"cygwin370_fcntl_allocsp_freesp20260630_002.diff.txt" ...
... AFAIK the only issue is whether it is OK to call
|fstat()|/|ftruncate()|/|fallocate()|/|lseek()| from within the
wrapper, or whether there is a better way... help, please...

----

Nye,
Roland
--=20
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /=3D=3D\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)

--000000000000df4ff8065577f5d8
Content-Type: text/plain; charset="US-ASCII"; 
	name="cygwin370_fcntl_allocsp_freesp20260630_002.diff.txt"
Content-Disposition: attachment; 
	filename="cygwin370_fcntl_allocsp_freesp20260630_002.diff.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_mr0n1am70>
X-Attachment-Id: f_mr0n1am70

ZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL19kZWZhdWx0X2ZjbnRsLmggYi9u
ZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9fZGVmYXVsdF9mY250bC5oCmluZGV4IGIzMjIyZDQ1Mi4u
YzhmMGJiMWY3IDEwMDY0NAotLS0gYS9uZXdsaWIvbGliYy9pbmNsdWRlL3N5cy9fZGVmYXVsdF9m
Y250bC5oCisrKyBiL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL19kZWZhdWx0X2ZjbnRsLmgKQEAg
LTE1NSw2ICsxNTUsMTcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lCUZfT0ZEX1NFVExLVwkxNwkv
KiBTZXQgb3IgQ2xlYXIgT0ZEIGxvY2sgKEJsb2NraW5nKSAqLwogI2VuZGlmCiAKKy8qCisgKiB7
IFNvbGFyaXMsIEZyZWVCU0QsIFNVUEVSL1VYLCAuLi4gfS1zdHlsZSBmaWxlIHNwYWNlIGFsbG9j
YXRpb24vZnJlZWluZy4KKyAqCisgKiB8Rl9BTExPQ1NQfC98Rl9GUkVFU1B8IHRha2UgfHN0cnVj
dCBmbG9jayAqfC4KKyAqCisgKiB8bF9sZW58ID09IDAgbWVhbnMgInRvIEVPRiIuICBOZWdhdGl2
ZSB8bF9sZW58IGZvbGxvd3MgdGhlIHVzdWFsIGZsb2NrCisgKiByYW5nZSBjb252ZW50aW9uIGFu
ZCBuYW1lcyBbbF9zdGFydCArIGxfbGVuLCBsX3N0YXJ0XS4KKyAqLworI2RlZmluZQlGX0FMTE9D
U1AJMTgKKyNkZWZpbmUJRl9GUkVFU1AJMTkKKwogLyogZmNudGwoMikgZmxhZ3MgKGxfdHlwZSBm
aWVsZCBvZiBmbG9jayBzdHJ1Y3R1cmUpICovCiAjZGVmaW5lCUZfUkRMQ0sJCTEJLyogcmVhZCBs
b2NrICovCiAjZGVmaW5lCUZfV1JMQ0sJCTIJLyogd3JpdGUgbG9jayAqLwpkaWZmIC0tZ2l0IGEv
d2luc3VwL2N5Z3dpbi9mY250bC5jYyBiL3dpbnN1cC9jeWd3aW4vZmNudGwuY2MKaW5kZXggMmJj
NTJlZGIwLi5iZjZkNDc1NDIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmNudGwuY2MKKysr
IGIvd2luc3VwL2N5Z3dpbi9mY250bC5jYwpAQCAtNyw2ICs3LDggQEAgQ3lnd2luIGxpY2Vuc2Uu
ICBQbGVhc2UgY29uc3VsdCB0aGUgZmlsZSAiQ1lHV0lOX0xJQ0VOU0UiIGZvcgogZGV0YWlscy4g
Ki8KIAogI2luY2x1ZGUgIndpbnN1cC5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUg
PHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSAiY3lnZXJybm8uaCIK
ICNpbmNsdWRlICJzZWN1cml0eS5oIgpAQCAtMTYsNiArMTgsMTk1IEBAIGRldGFpbHMuICovCiAj
aW5jbHVkZSAiY3lnaGVhcC5oIgogI2luY2x1ZGUgImN5Z3Rscy5oIgogCisvKgorICogSW4gdGhl
IEN5Z3dpbiBETEwgYnVpbGQsIHRoZXNlIHByb3RvdHlwZXMgYXJlIG5vdCBhbHdheXMgdmlzaWJs
ZSBmcm9tCisgKiA8dW5pc3RkLmg+IGluIHRoaXMgdHJhbnNsYXRpb24gdW5pdCwgZXZlbiB0aG91
Z2ggdGhlIHN5bWJvbHMgYXJlIHBhcnQgb2YKKyAqIHRoZSBwdWJsaWMgQ3lnd2luIEFQSS4gIERl
Y2xhcmUgdGhlbSBleHBsaWNpdGx5IGZvciB1c2UgYnkgdGhlIGZjbnRsKCkKKyAqIHNwYWNlLW1h
bmFnZW1lbnQgaGVscGVycyBiZWxvdy4KKyAqLworZXh0ZXJuICJDIiBvZmZfdCBsc2VlayAoaW50
LCBvZmZfdCwgaW50KTsKK2V4dGVybiAiQyIgaW50IGZ0cnVuY2F0ZSAoaW50LCBvZmZfdCk7CisK
K3N0cnVjdCBmY250bF9zcGFjZV9yYW5nZQoreworICBvZmZfdCBzdGFydDsKKyAgb2ZmX3QgbGVu
OworICBib29sIHRvX2VvZjsKK307CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorb2ZmX2FkZF9vdmVy
ZmxvdyAob2ZmX3QgYSwgb2ZmX3QgYiwgb2ZmX3QgKnIpCit7CisgIHJldHVybiBfX2J1aWx0aW5f
YWRkX292ZXJmbG93IChhLCBiLCByKTsKK30KKworc3RhdGljIGludAorZmNudGxfc3BhY2VfcmVz
b2x2ZV9yYW5nZSAoaW50IGZkLCBzaG9ydCB3aGVuY2UsIG9mZl90IG9mZnNldCwgb2ZmX3QgZmxl
biwKKyAgICBmY250bF9zcGFjZV9yYW5nZSAqcmFuZ2UpCit7CisgIHN0cnVjdCBzdGF0IHN0Owor
ICBvZmZfdCBiYXNlOworICBvZmZfdCBzdGFydDsKKworICBzd2l0Y2ggKHdoZW5jZSkKKyAgICB7
CisgICAgY2FzZSBTRUVLX1NFVDoKKyAgICAgIGJhc2UgPSAwOworICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTRUVLX0NVUjoKKyAgICAgIGJhc2UgPSBsc2VlayAoZmQsIDAsIFNFRUtfQ1VSKTsKKyAg
ICAgIGlmIChiYXNlID09IChvZmZfdCkgLTEpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTRUVLX0VORDoKKyAgICAgIGlmIChmc3RhdCAoZmQsICZzdCkgPCAwKQorCXJldHVy
biAtMTsKKyAgICAgIGJhc2UgPSBzdC5zdF9zaXplOworICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgIHNldF9lcnJubyAoRUlOVkFMKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisK
KyAgaWYgKG9mZl9hZGRfb3ZlcmZsb3cgKGJhc2UsIG9mZnNldCwgJnN0YXJ0KSkKKyAgICB7Cisg
ICAgICBzZXRfZXJybm8gKEVPVkVSRkxPVyk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisg
IC8qCisgICAgIEZvbGxvdyBub3JtYWwgc3RydWN0IGZsb2NrIGJ5dGUtcmFuZ2UgY29udmVudGlv
bnM6CisKKyAgICAgICBsX2xlbiA+IDA6ICBbc3RhcnQsIHN0YXJ0ICsgbF9sZW4pCisgICAgICAg
bF9sZW4gPT0gMDogW3N0YXJ0LCBFT0YpCisgICAgICAgbF9sZW4gPCAwOiAgW3N0YXJ0ICsgbF9s
ZW4sIHN0YXJ0KQorICAqLworICBpZiAoZmxlbiA8IDApCisgICAgeworICAgICAgaWYgKGZsZW4g
PT0gKG9mZl90KSBMT05HX01JTikKKwl7CisJICBzZXRfZXJybm8gKEVPVkVSRkxPVyk7CisJICBy
ZXR1cm4gLTE7CisJfQorCisgICAgICBpZiAob2ZmX2FkZF9vdmVyZmxvdyAoc3RhcnQsIGZsZW4s
ICZzdGFydCkpCisJeworCSAgc2V0X2Vycm5vIChFT1ZFUkZMT1cpOworCSAgcmV0dXJuIC0xOwor
CX0KKworICAgICAgZmxlbiA9IC1mbGVuOworICAgICAgcmFuZ2UtPnRvX2VvZiA9IGZhbHNlOwor
ICAgIH0KKyAgZWxzZSBpZiAoZmxlbiA9PSAwKQorICAgIHsKKyAgICAgIHJhbmdlLT50b19lb2Yg
PSB0cnVlOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHJhbmdlLT50b19lb2YgPSBmYWxz
ZTsKKyAgICB9CisKKyAgaWYgKHN0YXJ0IDwgMCkKKyAgICB7CisgICAgICBzZXRfZXJybm8gKEVJ
TlZBTCk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgIHJhbmdlLT5zdGFydCA9IHN0YXJ0
OworICByYW5nZS0+bGVuID0gZmxlbjsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Zj
bnRsX2FsbG9jc3BfcmFuZ2UgKGludCBmZCwgY29uc3QgZmNudGxfc3BhY2VfcmFuZ2UgKnJhbmdl
KQoreworICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgb2ZmX3QgbGVuID0gcmFuZ2UtPmxlbjsKKworICAv
KgorICAgICBGb3IgfEZfQUxMT0NTUHwgd2l0aCB8bF9sZW4gPT0gMHwsIGFsbG9jYXRlIGZyb20g
c3RhcnQgdG8gY3VycmVudCBFT0YuCisgICAgIElmIHN0YXJ0IGlzIGF0IG9yIGJleW9uZCBFT0Ys
IHRoZSByYW5nZSBpcyBlbXB0eSBhbmQgdGhpcyBpcyBhIG5vLW9wLgorICAqLworICBpZiAocmFu
Z2UtPnRvX2VvZikKKyAgICB7CisgICAgICBpZiAoZnN0YXQgKGZkLCAmc3QpIDwgMCkKKwlyZXR1
cm4gLTE7CisKKyAgICAgIGlmIChyYW5nZS0+c3RhcnQgPj0gc3Quc3Rfc2l6ZSkKKwlyZXR1cm4g
MDsKKworICAgICAgbGVuID0gc3Quc3Rfc2l6ZSAtIHJhbmdlLT5zdGFydDsKKyAgICB9CisKKyAg
aWYgKGxlbiA9PSAwKQorICAgIHJldHVybiAwOworCisgIHJldHVybiBmYWxsb2NhdGUgKGZkLCAw
LCByYW5nZS0+c3RhcnQsIGxlbik7Cit9CisKK3N0YXRpYyBpbnQKK2ZjbnRsX2ZyZWVzcF9yYW5n
ZSAoaW50IGZkLCBjb25zdCBmY250bF9zcGFjZV9yYW5nZSAqcmFuZ2UpCit7CisgIHN0cnVjdCBz
dGF0IHN0OworICBvZmZfdCBlbmQ7CisKKyAgaWYgKGZzdGF0IChmZCwgJnN0KSA8IDApCisgICAg
cmV0dXJuIC0xOworCisgIGlmIChyYW5nZS0+c3RhcnQgPj0gc3Quc3Rfc2l6ZSkKKyAgICByZXR1
cm4gMDsKKworICAvKgorICAgICB8Rl9GUkVFU1B8IHRvIEVPRiBzaHJpbmtzIHRoZSBmaWxlLiBI
b2xlIHB1bmNoaW5nIGtlZXBzIHRoZQorICAgICBsb2dpY2FsIGZpbGUgc2l6ZSB1bmNoYW5nZWQs
IHNvIHVzZSBmdHJ1bmNhdGUgZm9yIHRhaWwgcmFuZ2VzLgorICAqLworICBpZiAocmFuZ2UtPnRv
X2VvZikKKyAgICByZXR1cm4gZnRydW5jYXRlIChmZCwgcmFuZ2UtPnN0YXJ0KTsKKworICBpZiAo
cmFuZ2UtPmxlbiA9PSAwKQorICAgIHJldHVybiAwOworCisgIGlmIChvZmZfYWRkX292ZXJmbG93
IChyYW5nZS0+c3RhcnQsIHJhbmdlLT5sZW4sICZlbmQpKQorICAgIHsKKyAgICAgIHNldF9lcnJu
byAoRU9WRVJGTE9XKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgaWYgKGVuZCA+PSBz
dC5zdF9zaXplKQorICAgIHJldHVybiBmdHJ1bmNhdGUgKGZkLCByYW5nZS0+c3RhcnQpOworCisg
IHJldHVybiBmYWxsb2NhdGUgKGZkLCBGQUxMT0NfRkxfUFVOQ0hfSE9MRSB8IEZBTExPQ19GTF9L
RUVQX1NJWkUsCisJCSAgICByYW5nZS0+c3RhcnQsIHJhbmdlLT5sZW4pOworfQorCitzdGF0aWMg
aW50CitmY250bF9zcGFjZV9jb21tb24gKGludCBmZCwgaW50IGNtZCwgc2hvcnQgd2hlbmNlLCBv
ZmZfdCBzdGFydCwgb2ZmX3QgbGVuKQoreworICBmY250bF9zcGFjZV9yYW5nZSByYW5nZTsKKwor
ICBpZiAoZmNudGxfc3BhY2VfcmVzb2x2ZV9yYW5nZSAoZmQsIHdoZW5jZSwgc3RhcnQsIGxlbiwg
JnJhbmdlKSA8IDApCisgICAgcmV0dXJuIC0xOworCisgIHN3aXRjaCAoY21kKQorICAgIHsKKyAg
ICBjYXNlIEZfQUxMT0NTUDoKKyAgICAgIHJldHVybiBmY250bF9hbGxvY3NwX3JhbmdlIChmZCwg
JnJhbmdlKTsKKyAgICBjYXNlIEZfRlJFRVNQOgorICAgICAgcmV0dXJuIGZjbnRsX2ZyZWVzcF9y
YW5nZSAoZmQsICZyYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgIHNldF9lcnJubyAoRUlOVkFM
KTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2ZjbnRsX3NwYWNl
X2Zsb2NrIChpbnQgZmQsIGludCBjbWQsIGNvbnN0IHN0cnVjdCBmbG9jayAqZmwpCit7CisgIHJl
dHVybiBmY250bF9zcGFjZV9jb21tb24gKGZkLCBjbWQsIGZsLT5sX3doZW5jZSwKKyAgICBmbC0+
bF9zdGFydCwgZmwtPmxfbGVuKTsKK30KKwogZXh0ZXJuICJDIiBpbnQKIGZjbnRsIChpbnQgZmQs
IGludCBjbWQsIC4uLikKIHsKQEAgLTY4LDYgKzI1OSwxMCBAQCBmY250bCAoaW50IGZkLCBpbnQg
Y21kLCAuLi4pCiAJICAgICAgcmVzID0gLTE7CiAJICAgIH0KIAkgIGJyZWFrOworCWNhc2UgRl9B
TExPQ1NQOgorCWNhc2UgRl9GUkVFU1A6CisJICByZXMgPSBmY250bF9zcGFjZV9mbG9jayAoZmQs
IGNtZCwgKGNvbnN0IHN0cnVjdCBmbG9jayAqKSBhcmcpOworCSAgYnJlYWs7CiAJZGVmYXVsdDoK
IAkgIHJlcyA9IGNmZC0+ZmNudGwgKGNtZCwgYXJnKTsKIAkgIGJyZWFrOwo=
--000000000000df4ff8065577f5d8
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


-- 
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

--000000000000df4ff8065577f5d8--