Skip site navigation (1)Skip section navigation (2)
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>