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