Date: Fri, 5 Jul 2019 00:38:06 +0000 From: Rick Macklem <rmacklem@uoguelph.ca> To: "freebsd-current@FreeBSD.org" <freebsd-current@FreeBSD.org> Cc: Alan Somers <asomers@freebsd.org>, "kib@freebsd.org" <kib@FreeBSD.org> Subject: test program for copy_file_range(2) Message-ID: <YTXPR01MB02854ED77B07C7434C2F442EDDF50@YTXPR01MB0285.CANPRD01.PROD.OUTLOOK.COM>
next in thread | raw e-mail | index | archive | help
--_002_YTXPR01MB02854ED77B07C7434C2F442EDDF50YTXPR01MB0285CANP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I have a little program for testing the copy_file_range(2) syscall I've bee= n working on. (The current version is attached, in case anyone is interested.= ) It take a few minutes to run on a slow system and uses about 6Gbytes of dis= k space for the file system the output file is on. (It creates 2 files to use= for testing. The first one is sparse and the second is copied from it, but grows as diff= erent byte ranges get copied, since "punching holes" is done via writes of 0 bytes.) My question is.. What needs to be done to include this in FreeBSD? I see some stuff under head/tests. I could probably figure out what the macros in those files are, but I can only see tests to see if arguments are valid and similar. As such, I'm not sure if this is the corre= ct place for a test like this? Thanks for any help with this, rick --_002_YTXPR01MB02854ED77B07C7434C2F442EDDF50YTXPR01MB0285CANP_ Content-Type: text/plain; name="testcfr.c" Content-Description: testcfr.c Content-Disposition: attachment; filename="testcfr.c"; size=4281; creation-date="Fri, 05 Jul 2019 00:38:02 GMT"; modification-date="Fri, 05 Jul 2019 00:38:02 GMT" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRsaWIu aD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPGVycm5v Lmg+CiNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVk ZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPGVyci5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgpzdGF0 aWMgY2hhciBqdW5rYnVmWzEyOCAqIDEwMjRdOwovKgogKiBXcml0ZSB4ZmVyIGJ5dGVzIGludG8g b3V0ZmQuCiAqLwpzdGF0aWMgdm9pZApqdW5rX3dyaXRlKGludCBvdXRmZCwgb2ZmX3QgeGZlcikK ewoJc2l6ZV90IGxlbjsKCXNzaXplX3Qgb3V0c2l6OwoKCWRvIHsKCQlpZiAoeGZlciA+IHNpemVv ZihqdW5rYnVmKSkKCQkJbGVuID0gc2l6ZW9mKGp1bmtidWYpOwoJCWVsc2UKCQkJbGVuID0geGZl cjsKCQlvdXRzaXogPSB3cml0ZShvdXRmZCwganVua2J1ZiwgbGVuKTsKCQlpZiAob3V0c2l6ICE9 IGxlbikKCQkJZXJyKDEsICJDYW4ndCB3cml0ZSBqdW5rIik7CgkJeGZlciAtPSBvdXRzaXo7Cgl9 IHdoaWxlICh4ZmVyID4gMCk7Cn0KCi8qIENvbXBhcmUgdGhlIHR3byBmaWxlcyBmb3Igc2FtZSBk YXRhLiAqLwpzdGF0aWMgdm9pZApjb21wX2ZpbGVzKGludCBpbmZkLCBpbnQgb3V0ZmQsIG9mZl90 IHNlZWtvZmYsIG9mZl90IHNlZWtvdXQsIG9mZl90IHhmZXIpCnsKCWNoYXIgYnVmWzEyOCAqIDEw MjRdLCBidWYyWzEyOCAqIDEwMjRdOwoJc3NpemVfdCBpbnNpeiwgb3V0c2l6OwoKCWlmIChzZWVr b2ZmID09IHNlZWtvdXQpIHsKCQlsc2VlayhpbmZkLCAwLCBTRUVLX1NFVCk7CgkJbHNlZWsob3V0 ZmQsIDAsIFNFRUtfU0VUKTsKCQl4ZmVyID0gMDsKCX0gZWxzZSB7CgkJbHNlZWsoaW5mZCwgc2Vl a29mZiwgU0VFS19TRVQpOwoJCWxzZWVrKG91dGZkLCBzZWVrb3V0LCBTRUVLX1NFVCk7Cgl9Cglk byB7CgkJaW5zaXogPSByZWFkKGluZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwoJCWlmIChpbnNpeiA8 IDApCgkJCWVycigxLCAiQ2FuJ3QgcmVhZCBpbmZkIik7CgkJb3V0c2l6ID0gcmVhZChvdXRmZCwg YnVmMiwgc2l6ZW9mKGJ1ZjIpKTsKCQlpZiAob3V0c2l6IDwgMCkKCQkJZXJyKDEsICJDYW4ndCBy ZWFkIG91dGZkIik7CgkJaWYgKHhmZXIgPT0gMCkgewoJCQlpZiAoaW5zaXogPCBvdXRzaXopCgkJ CQllcnJ4KDEsICJQcmVtYXR1cmUgRU9GIG9uIGluZmQiKTsKCQkJaWYgKG91dHNpeiA8IGluc2l6 KQoJCQkJZXJyeCgxLCAiUHJlbWF0dXJlIEVPRiBvbiBvdXRmZCIpOwoJCX0gZWxzZSBpZiAoaW5z aXogPiBvdXRzaXopCgkJCWluc2l6ID0gb3V0c2l6OwoJCWlmIChpbnNpeiA+IDAgJiYgbWVtY21w KGJ1ZiwgYnVmMiwgaW5zaXopICE9IDApCgkJCWVycngoMSwgIkZpbGUgZGF0YSBub3Qgc2FtZSIp OwoJCWlmICh4ZmVyID4gMCkgewoJCQl4ZmVyIC09IGluc2l6OwoJCQlpZiAoeGZlciA9PSAwKQoJ CQkJaW5zaXogPSAwOwoJCX0KCX0gd2hpbGUgKGluc2l6ID4gMCk7Cn0KCi8qCiAqIENvcHkgYSBm aWxlIHJhbmdlIGZyb20gaW5mZCB0byBvdXRmZC4KICovCnN0YXRpYyB2b2lkCmNvcHlfcmFuZ2Uo aW50IGluZmQsIGludCBvdXRmZCwgb2ZmX3QgeGZlcikKewoJc2l6ZV90IGxlbjsKCXNzaXplX3Qg cmV0OwoKCXdoaWxlICh4ZmVyID4gMCkgewoJCWlmICh4ZmVyID4gU0laRV9UX01BWCkKCQkJbGVu ID0gU0laRV9UX01BWDsKCQllbHNlCgkJCWxlbiA9IHhmZXI7CgkJcmV0ID0gY29weV9maWxlX3Jh bmdlKGluZmQsIE5VTEwsIG91dGZkLCBOVUxMLCBsZW4sIDApOwoJCWlmIChyZXQgPD0gMCkKCQkJ ZXJyKDEsICJDb3B5IHJhbmdlIGZhaWxlZCEiKTsKCQl4ZmVyIC09IHJldDsKCX0KfQoKaW50Cm1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJaW50IGksIGluZmQsIGosIG91dGZkOwoJc3Ry dWN0IHN0YXQgc3QsIG91dHN0OwoJb2ZmX3Qgc2Vla29mZiwgc2Vla291dCwgeGZlcjsKCWJvb2wg Y2hlY2tfYWxsb2M7CgljaGFyIGNwOwoKCWlmIChhcmdjICE9IDMpCgkJZXJyeCgxLCAiVXNhZ2U6 IHRlc3RjZnIgPGluZmlsZT4gPG91dGZpbGU+Iik7CgkvKiBGaWxsIGluIGp1bmtfYnVmIHdpdGgg dGhlIGFscGhhYmV0IG92ZXIgYW5kIG92ZXIgYW5kIG92ZXIgYWdhaW4uICovCgljcCA9ICdhJzsK CWZvciAoaSA9IDA7IGkgPCBzaXplb2YoanVua2J1Zik7IGkrKykgewoJCWp1bmtidWZbaV0gPSBj cCsrOwoJCWlmIChjcCA+ICd6JykKCQkJY3AgPSAnYSc7Cgl9CglpbmZkID0gb3Blbihhcmd2WzFd LCBPX0NSRUFUIHwgT19SRFdSLCAwNjQ0KTsKCWlmIChpbmZkIDwgMCkKCQllcnIoMSwgImNhbid0 IG9wZW4gJXMiLCBhcmd2WzFdKTsKCW91dGZkID0gb3Blbihhcmd2WzJdLCBPX0NSRUFUIHwgT19S RFdSLCAwNjQ0KTsKCWlmIChvdXRmZCA8IDApCgkJZXJyKDEsICJjYW4ndCBjcmVhdGUgJXMiLCBh cmd2WzJdKTsKCglzZWVrb2ZmID0gMDsKCS8qCgkgKiBDcmVhdGUgdGhlIGlucHV0IGZpbGUgYXMg YSBzcGFyc2UgZmlsZSBhbmQgdGhlbiBjb3B5IGZpbGUgcmFuZ2VzCgkgKiBvZiBpdCB0byB0aGUg b3V0cHV0IGZpbGUgYW5kIGNvbXBhcmUgdGhlIHR3byBmaWxlcy4KCSAqLwoJZm9yIChpID0gMDsg aSA8IDI7IGkrKykgewoJCWlmIChpID4gMCkgewoJCQlzZWVrb2ZmID0gMTAyNCAqIDEwMjQgKiAx MDI0OwoJCQlzZWVrb2ZmICo9IDY7CgkJCWZ0cnVuY2F0ZShpbmZkLCAwKTsKCQkJZnRydW5jYXRl KG91dGZkLCAwKTsKCQl9CgkJbHNlZWsoaW5mZCwgc2Vla29mZiwgU0VFS19TRVQpOwoJCXdyaXRl KGluZmQsICJYWFhYIiwgNCk7CgkJbHNlZWsoaW5mZCwgMjU2ICogMTAyNCwgU0VFS19DVVIpOwoJ CXdyaXRlKGluZmQsICJZWVlZIiwgNCk7CgkJbHNlZWsoaW5mZCwgNTEyICogMTAyNCwgU0VFS19D VVIpOwoJCXdyaXRlKGluZmQsICJaWlpaIiwgNCk7CgoJCWxzZWVrKGluZmQsIDAsIFNFRUtfU0VU KTsKCQlsc2VlayhvdXRmZCwgMCwgU0VFS19TRVQpOwoJCWlmIChmc3RhdChpbmZkLCAmc3QpIDwg MCkKCQkJZXJyKDEsICJjYW4ndCBmc3RhdCAlcyIsIGFyZ3ZbMV0pOwoJCWNoZWNrX2FsbG9jID0g ZmFsc2U7CgkJaWYgKHN0LnN0X3NpemUgPCBTU0laRV9NQVgpCgkJCWNoZWNrX2FsbG9jID0gdHJ1 ZTsKCQlmb3IgKGogPSAwOyBqIDwgMTA7IGorKykgewoJCQlpZiAoaiA9PSAwKSB7CgkJCQlzZWVr b3V0ID0gc2Vla29mZiA9IDA7CgkJCQl4ZmVyID0gc3Quc3Rfc2l6ZTsKCQkJfSBlbHNlIHsKCQkJ CXNlZWtvZmYgPSByYW5kb20oKTsKCQkJCXNlZWtvZmYgKj0gNDsKCQkJCWlmIChzZWVrb2ZmIDw9 IDApCgkJCQkJc2Vla29mZiA9IDEyOCAqIDEwMjQ7CgkJCQlzZWVrb2ZmICU9IHN0LnN0X3NpemUg LyAyOwoJCQkJeGZlciA9IHJhbmRvbSgpOwoJCQkJeGZlciAqPSA0OwoJCQkJaWYgKHhmZXIgPD0g MCB8fCB4ZmVyID4gc3Quc3Rfc2l6ZSAtIHNlZWtvZmYpCgkJCQkJeGZlciA9IHN0LnN0X3NpemUg LSBzZWVrb2ZmOwoKCQkJCXNlZWtvdXQgPSBzZWVrb2ZmOwoJCQkJaWYgKGogPT0gOSkgewoJCQkJ CXNlZWtvdXQgPSBzZWVrb2ZmIC8gMjsKCQkJCQlsc2VlayhvdXRmZCwgc2Vla291dCwgU0VFS19T RVQpOwoJCQkJCWp1bmtfd3JpdGUob3V0ZmQsIHhmZXIpOwoJCQkJfSBlbHNlIGlmICgoaiAlIDIp ID09IDApIHsKCQkJCQlmdHJ1bmNhdGUob3V0ZmQsIHNlZWtvdXQpOwoJCQkJCXhmZXIgPSBzdC5z dF9zaXplIC0gc2Vla29mZjsKCQkJCX0gZWxzZSB7CgkJCQkJbHNlZWsob3V0ZmQsIHNlZWtvdXQs IFNFRUtfU0VUKTsKCQkJCQlqdW5rX3dyaXRlKG91dGZkLCB4ZmVyKTsKCQkJCX0KCQkJfQpwcmlu dGYoInNlZWtvZmY9JXFkIHNlZWtvdXQ9JXFkIHhmZXI9JXFkXG4iLCBzZWVrb2ZmLCBzZWVrb3V0 LCB4ZmVyKTsKCQkJbHNlZWsoaW5mZCwgc2Vla29mZiwgU0VFS19TRVQpOwoJCQlsc2VlayhvdXRm ZCwgc2Vla291dCwgU0VFS19TRVQpOwoJCQljb3B5X3JhbmdlKGluZmQsIG91dGZkLCB4ZmVyKTsK CgkJCS8qIENvbXBhcmUgaW5mZCB3aXRoIG91dGZkLiAqLwoJCQljb21wX2ZpbGVzKGluZmQsIG91 dGZkLCBzZWVrb2ZmLCBzZWVrb3V0LCB4ZmVyKTsKCQkJaWYgKGNoZWNrX2FsbG9jICYmIHNlZWtv ZmYgPT0gMCkgewoJCQkJaWYgKGZzdGF0KG91dGZkLCAmb3V0c3QpIDwgMCkKCQkJCQllcnIoMSwg ImNhbid0IGZzdGF0ICVzIiwgYXJndlsyXSk7CgkJCQlpZiAoc3Quc3RfYmxvY2tzICE9IG91dHN0 LnN0X2Jsb2NrcykKCQkJCQllcnJ4KDEsICJhbGxvY2F0aW9uIG5vdCBzYW1lIik7CgkJCX0KCQl9 Cgl9Cn0K --_002_YTXPR01MB02854ED77B07C7434C2F442EDDF50YTXPR01MB0285CANP_--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YTXPR01MB02854ED77B07C7434C2F442EDDF50>