From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrei Vagin Date: Fri, 09 Mar 2018 00:42:59 +0000 Subject: [PATCH] [RFC] target/file: add support of direct and async I/O Message-Id: <20180309004259.16052-1-avagin@openvz.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1258" Content-Transfer-Encoding: base64 To: target-devel@vger.kernel.org RGlyZWN0IEkvTyBhbGxvd3MgdG8gbm90IGFmZmVjdCB0aGUgd3JpdGUtYmFjayBjYWNoZSwgdGhp cyBpcwpleHBlY3RlZCB3aGVuIGEgbm9uLWJ1ZmZlcmVkIG1vZGUgaXMgdXNlZC4KCkFzeW5jIEkv TyBhbGxvd3MgdG8gaGFuZGxlIGEgZmV3IGNvbW1hbmRzIGNvbmN1cnJlbnRseSwgc28gYSB0YXJn ZXQgc2hvd3MgYQpiZXR0ZXIgcGVyZm9tYW5jZToKCk1vZGU6IE9fRFNZTkMgQXN5bmM6IDEKJCAu L2ZpbyAtLWJzPTRLIC0tZGlyZWN0PTEgLS1ydz1yYW5kd3JpdGUgLS1pb2VuZ2luZT1saWJhaW8g LS1pb2RlcHRoZCAtLW5hbWU9L2Rldi9zZGEgLS1ydW50aW1lICAtLW51bWpvYnM9MgogIFdSSVRF OiBid0UuOU1pQi9zICg0OC4xTUIvcyksIDIxLjlNaUIvcy0yMy4wTWlCL3MgKDIyLjBNQi9zLTI1 LjJNQi9zKSwgaW+ROU1pQiAoOTYzTUIpLCBydW4gMDAyLTIwMDIwbXNlYwoKTW9kZTogT19EU1lO QyBBc3luYzogMAokIC4vZmlvIC0tYnM9NEsgLS1kaXJlY3Q9MSAtLXJ3PXJhbmR3cml0ZSAtLWlv ZW5naW5lPWxpYmFpbyAtLWlvZGVwdGhkIC0tbmFtZT0vZGV2L3NkYiAtLXJ1bnRpbWUgIC0tbnVt am9icz0yCiAgV1JJVEU6IGJ3FjA3S2lCL3MgKDE2NDVrQi9zKSwgODAyS2lCL3MtODA1S2lCL3Mg KDgyMWtCL3MtODI0a0IvcyksIGlvMS44TWlCICgzMy40TUIpLCBydW4gMjgwLTIwMjk1bXNlYwoK S25vd24gaXNzdWU6CgpESUYgKFBJKSBlbXVsYXRpb24gZG9lc24ndCB3b3JrIHdoZW4gYSB0YXJn ZXQgdXNlcyBhc3luYyBJL08sIGJlY2F1c2UKRElGIG1ldGFkYXRhIGlzIHNhdmVkIGluIGEgc2Vw YXJhdGUgZmlsZSwgYW5kIGl0IGlzIGFub3RoZXIgbm9uLXRyaXZpYWwKdGFzayBob3cgdG8gc3lu Y2hyb25pemUgd3JpdGluZyBpbiB0d28gZmlsZXMsIHNvIHRoYXQgYSBmb2xsb3dpbmcgcmVhZApv cGVyYXRpb24gYWx3YXlzIHJldHVybnMgYSBjb25zaXN0ZW4gbWV0YWRhdGEgZm9yIGEgc3BlY2lm aWVkIGJsb2NrLgoKQ2M6ICJOaWNob2xhcyBBLiBCZWxsaW5nZXIiIDxuYWJAbGludXgtaXNjc2ku b3JnPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgVmFnaW4gPGF2YWdpbkBvcGVudnoub3JnPgotLS0K IGRyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYyB8IDEyNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5o IHwgICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCmluZGV4IDliMmMwYzc3MzAyMi4uZThjMDdh MGY3MDg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9maWxlLmMKKysr IGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCkBAIC0yNTAsNiArMjUwLDk2IEBA IHN0YXRpYyB2b2lkIGZkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBzZV9kZXZpY2UgKmRldikKIAl9 CiB9CiAKK3N0cnVjdCB0YXJnZXRfY29yZV9maWxlX2NtZCB7CisJYXRvbWljX3QJcmVmOworCXVu c2lnbmVkIGxvbmcJbGVuOworCWxvbmcJCXJldDsKKwlzdHJ1Y3Qgc2VfY21kCSpjbWQ7CisJc3Ry dWN0IGtpb2NiCWlvY2I7CisJc3RydWN0IGJpb192ZWMJYnZlY1swXTsKK307CisKK3N0YXRpYyB2 b2lkIGNtZF9yd19haW9fZG9fY29tcGxldGlvbihzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmlsZV9jbWQg KmNtZCkKK3sKKwlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJmNtZC0+cmVmKSkKKwkJcmV0dXJu OworCisJaWYgKGNtZC0+cmV0ICE9IGNtZC0+bGVuKQorCQl0YXJnZXRfY29tcGxldGVfY21kKGNt ZC0+Y21kLCBTQU1fU1RBVF9DSEVDS19DT05ESVRJT04pOworCWVsc2UKKwkJdGFyZ2V0X2NvbXBs ZXRlX2NtZChjbWQtPmNtZCwgU0FNX1NUQVRfR09PRCk7CisKKwlrZnJlZShjbWQpOworfQorCitz dGF0aWMgdm9pZCBjbWRfcndfYWlvX2NvbXBsZXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgbG9uZyBy ZXQsIGxvbmcgcmV0MikKK3sKKwlzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmlsZV9jbWQgKmNtZDsKKwor CWNtZCA9IGNvbnRhaW5lcl9vZihpb2NiLCBzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmlsZV9jbWQsIGlv Y2IpOworCisJY21kLT5yZXQgPSByZXQ7CisJY21kX3J3X2Fpb19kb19jb21wbGV0aW9uKGNtZCk7 Cit9CisKK3N0YXRpYyBpbnQgZmRfZG9fYWlvX3J3KHN0cnVjdCBzZV9jbWQgKmNtZCwgc3RydWN0 IGZkX2RldiAqZmRfZGV2LAorCQkgICAgdTMyIGJsb2NrX3NpemUsIHN0cnVjdCBzY2F0dGVybGlz dCAqc2dsLAorCQkgICAgdTMyIHNnbF9uZW50cywgdTMyIGRhdGFfbGVuZ3RoLCBpbnQgaXNfd3Jp dGUpCit7CisJc3RydWN0IGZpbGUgKmZpbGUgPSBmZF9kZXYtPmZkX2ZpbGU7CisJc3RydWN0IHRh cmdldF9jb3JlX2ZpbGVfY21kICphaW9fY21kOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJ c3RydWN0IGlvdl9pdGVyIGl0ZXIgPSB7fTsKKwlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYzsKKwlzc2l6 ZV90IGxlbiA9IDA7CisJbG9mZl90IHBvcyA9IChjbWQtPnRfdGFza19sYmEgKiBibG9ja19zaXpl KTsKKwlpbnQgcmV0ID0gMCwgaTsKKworCWFpb19jbWQgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qg dGFyZ2V0X2NvcmVfZmlsZV9jbWQpICsKKwkJCSAgc2dsX25lbnRzICogc2l6ZW9mKHN0cnVjdCBi aW9fdmVjKSwKKwkJCSAgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOworCWlmICghYWlvX2NtZCkK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlidmVjID0gYWlvX2NtZC0+YnZlYzsKKworCWZvcl9lYWNo X3NnKHNnbCwgc2csIHNnbF9uZW50cywgaSkgeworCQlidmVjW2ldLmJ2X3BhZ2UgPSBzZ19wYWdl KHNnKTsKKwkJYnZlY1tpXS5idl9sZW4gPSBzZy0+bGVuZ3RoOworCQlidmVjW2ldLmJ2X29mZnNl dCA9IHNnLT5vZmZzZXQ7CisKKwkJbGVuICs9IHNnLT5sZW5ndGg7CisJfQorCisJaW92X2l0ZXJf YnZlYygmaXRlciwgSVRFUl9CVkVDIHwgaXNfd3JpdGUsIGJ2ZWMsIHNnbF9uZW50cywgbGVuKTsK KworCWF0b21pY19zZXQoJmFpb19jbWQtPnJlZiwgMik7CisKKwlhaW9fY21kLT5jbWQgPSBjbWQ7 CisJYWlvX2NtZC0+bGVuID0gbGVuOworCWFpb19jbWQtPmlvY2Iua2lfcG9zID0gcG9zOworCWFp b19jbWQtPmlvY2Iua2lfZmlscCA9IGZpbGU7CisJYWlvX2NtZC0+aW9jYi5raV9jb21wbGV0ZSA9 IGNtZF9yd19haW9fY29tcGxldGU7CisJYWlvX2NtZC0+aW9jYi5raV9mbGFncyA9IDA7CisKKwlp ZiAoIShmZF9kZXYtPmZiZF9mbGFncyAmIEZEQkRfSEFTX0JVRkZFUkVEX0lPX1dDRSkpCisJCWFp b19jbWQtPmlvY2Iua2lfZmxhZ3MgfD0gSU9DQl9ESVJFQ1Q7CisJaWYgKGlzX3dyaXRlICYmIChj bWQtPnNlX2NtZF9mbGFncyAmIFNDRl9GVUEpKQorCQlhaW9fY21kLT5pb2NiLmtpX2ZsYWdzIHw9 IElPQ0JfRFNZTkM7CisKKwlpZiAoaXNfd3JpdGUpCisJCXJldCA9IGNhbGxfd3JpdGVfaXRlcihm aWxlLCAmYWlvX2NtZC0+aW9jYiwgJml0ZXIpOworCWVsc2UKKwkJcmV0ID0gY2FsbF9yZWFkX2l0 ZXIoZmlsZSwgJmFpb19jbWQtPmlvY2IsICZpdGVyKTsKKworCWNtZF9yd19haW9fZG9fY29tcGxl dGlvbihhaW9fY21kKTsKKworCWlmIChyZXQgIT0gLUVJT0NCUVVFVUVEKQorCQlhaW9fY21kLT5p b2NiLmtpX2NvbXBsZXRlKCZhaW9fY21kLT5pb2NiLCByZXQsIDApOworCisJcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBpbnQgZmRfZG9fcncoc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3QgZmlsZSAq ZmQsCiAJCSAgICB1MzIgYmxvY2tfc2l6ZSwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCiAJCSAg ICB1MzIgc2dsX25lbnRzLCB1MzIgZGF0YV9sZW5ndGgsIGludCBpc193cml0ZSkKQEAgLTUzNiw2 ICs2MjYsNyBAQCBmZF9leGVjdXRlX3J3KHN0cnVjdCBzZV9jbWQgKmNtZCwgc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZ2wsIHUzMiBzZ2xfbmVudHMsCiAJc3RydWN0IGZpbGUgKnBmaWxlID0gZmRfZGV2 LT5mZF9wcm90X2ZpbGU7CiAJc2Vuc2VfcmVhc29uX3QgcmM7CiAJaW50IHJldCA9IDA7CisJaW50 IGFpbyA9IGZkX2Rldi0+ZmJkX2ZsYWdzICYgRkRCRF9IQVNfQVNZTkNfSU87CiAJLyoKIAkgKiBX ZSBhcmUgY3VycmVudGx5IGxpbWl0ZWQgYnkgdGhlIG51bWJlciBvZiBpb3ZlY3MgKDIwNDgpIHBl cgogCSAqIHNpbmdsZSB2ZnNfW3dyaXRldixyZWFkdl0gY2FsbC4KQEAgLTU1MCw3ICs2NDEsMTEg QEAgZmRfZXhlY3V0ZV9ydyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHN0cnVjdCBzY2F0dGVybGlzdCAq c2dsLCB1MzIgc2dsX25lbnRzLAogCSAqIENhbGwgdmVjdG9yaXplZCBmaWxlaW8gZnVuY3Rpb25z IHRvIG1hcCBzdHJ1Y3Qgc2NhdHRlcmxpc3QKIAkgKiBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzc2Vz IHRvIHN0cnVjdCBpb3ZlYyB2aXJ0dWFsIG1lbW9yeS4KIAkgKi8KLQlpZiAoZGF0YV9kaXJlY3Rp b24gPSBETUFfRlJPTV9ERVZJQ0UpIHsKKwlpZiAoYWlvKSB7CisJCXJldCA9IGZkX2RvX2Fpb19y dyhjbWQsIGZkX2RldiwgZGV2LT5kZXZfYXR0cmliLmJsb2NrX3NpemUsCisJCQkgICAgICAgc2ds LCBzZ2xfbmVudHMsIGNtZC0+ZGF0YV9sZW5ndGgsCisJCQkJIShkYXRhX2RpcmVjdGlvbiA9IERN QV9GUk9NX0RFVklDRSkpOworCX0gZWxzZSBpZiAoZGF0YV9kaXJlY3Rpb24gPSBETUFfRlJPTV9E RVZJQ0UpIHsKIAkJaWYgKGNtZC0+cHJvdF90eXBlICYmIGRldi0+ZGV2X2F0dHJpYi5waV9wcm90 X3R5cGUpIHsKIAkJCXJldCA9IGZkX2RvX3J3KGNtZCwgcGZpbGUsIGRldi0+cHJvdF9sZW5ndGgs CiAJCQkJICAgICAgIGNtZC0+dF9wcm90X3NnLCBjbWQtPnRfcHJvdF9uZW50cywKQEAgLTYxNiwx OCArNzExLDIxIEBAIGZkX2V4ZWN1dGVfcncoc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnbCwgdTMyIHNnbF9uZW50cywKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIFRD TV9MT0dJQ0FMX1VOSVRfQ09NTVVOSUNBVElPTl9GQUlMVVJFOwogCi0JdGFyZ2V0X2NvbXBsZXRl X2NtZChjbWQsIFNBTV9TVEFUX0dPT0QpOworCWlmICghYWlvKQorCQl0YXJnZXRfY29tcGxldGVf Y21kKGNtZCwgU0FNX1NUQVRfR09PRCk7CiAJcmV0dXJuIDA7CiB9CiAKIGVudW0gewotCU9wdF9m ZF9kZXZfbmFtZSwgT3B0X2ZkX2Rldl9zaXplLCBPcHRfZmRfYnVmZmVyZWRfaW8sIE9wdF9lcnIK KwlPcHRfZmRfZGV2X25hbWUsIE9wdF9mZF9kZXZfc2l6ZSwgT3B0X2ZkX2J1ZmZlcmVkX2lvLAor CU9wdF9mZF9hc3luY19pbywgT3B0X2VycgogfTsKIAogc3RhdGljIG1hdGNoX3RhYmxlX3QgdG9r ZW5zID0gewogCXtPcHRfZmRfZGV2X25hbWUsICJmZF9kZXZfbmFtZT0lcyJ9LAogCXtPcHRfZmRf ZGV2X3NpemUsICJmZF9kZXZfc2l6ZT0lcyJ9LAogCXtPcHRfZmRfYnVmZmVyZWRfaW8sICJmZF9i dWZmZXJlZF9pbz0lZCJ9LAorCXtPcHRfZmRfYXN5bmNfaW8sICJmZF9hc3luY19pbz0lZCJ9LAog CXtPcHRfZXJyLCBOVUxMfQogfTsKIApAQCAtNjkzLDYgKzc5MSwyMSBAQCBzdGF0aWMgc3NpemVf dCBmZF9zZXRfY29uZmlnZnNfZGV2X3BhcmFtcyhzdHJ1Y3Qgc2VfZGV2aWNlICpkZXYsCiAKIAkJ CWZkX2Rldi0+ZmJkX2ZsYWdzIHw9IEZEQkRfSEFTX0JVRkZFUkVEX0lPX1dDRTsKIAkJCWJyZWFr OworCQljYXNlIE9wdF9mZF9hc3luY19pbzoKKwkJCXJldCA9IG1hdGNoX2ludChhcmdzLCAmYXJn KTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBvdXQ7CisJCQlpZiAoYXJnICE9IDEpIHsKKwkJCQlw cl9lcnIoImJvZ3VzIGZkX2FzeW5jX2lvPSVkIHZhbHVlXG4iLCBhcmcpOworCQkJCXJldCA9IC1F SU5WQUw7CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCXByX2RlYnVnKCJGSUxFSU86IFVzaW5n IGFzeW5jIEkvTyIKKwkJCQkiIG9wZXJhdGlvbnMgZm9yIHN0cnVjdCBmZF9kZXZcbiIpOworCisJ CQlmZF9kZXYtPmZiZF9mbGFncyB8PSBGREJEX0hBU19BU1lOQ19JTzsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJYnJlYWs7CiAJCX0KQEAgLTcwOSwxMCArODIyLDExIEBAIHN0YXRpYyBzc2l6 ZV90IGZkX3Nob3dfY29uZmlnZnNfZGV2X3BhcmFtcyhzdHJ1Y3Qgc2VfZGV2aWNlICpkZXYsIGNo YXIgKmIpCiAJc3NpemVfdCBibCA9IDA7CiAKIAlibCA9IHNwcmludGYoYiArIGJsLCAiVENNIEZJ TEVJTyBJRDogJXUiLCBmZF9kZXYtPmZkX2Rldl9pZCk7Ci0JYmwgKz0gc3ByaW50ZihiICsgYmws ICIgICAgICAgIEZpbGU6ICVzICBTaXplOiAlbGx1ICBNb2RlOiAlc1xuIiwKKwlibCArPSBzcHJp bnRmKGIgKyBibCwgIiAgICAgICAgRmlsZTogJXMgIFNpemU6ICVsbHUgIE1vZGU6ICVzIEFzeW5j OiAlZFxuIiwKIAkJZmRfZGV2LT5mZF9kZXZfbmFtZSwgZmRfZGV2LT5mZF9kZXZfc2l6ZSwKIAkJ KGZkX2Rldi0+ZmJkX2ZsYWdzICYgRkRCRF9IQVNfQlVGRkVSRURfSU9fV0NFKSA/Ci0JCSJCdWZm ZXJlZC1XQ0UiIDogIk9fRFNZTkMiKTsKKwkJIkJ1ZmZlcmVkLVdDRSIgOiAiT19EU1lOQyIsCisJ CSEhKGZkX2Rldi0+ZmJkX2ZsYWdzICYgRkRCRF9IQVNfQVNZTkNfSU8pKTsKIAlyZXR1cm4gYmw7 CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuaCBiL2Ry aXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuaAppbmRleCA1M2JlNWZmZDMyNjEuLjkyOWIx ZWNkNTQ0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5oCisr KyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuaApAQCAtMjIsNiArMjIsNyBAQAog I2RlZmluZSBGQkRGX0hBU19QQVRICQkweDAxCiAjZGVmaW5lIEZCREZfSEFTX1NJWkUJCTB4MDIK ICNkZWZpbmUgRkRCRF9IQVNfQlVGRkVSRURfSU9fV0NFIDB4MDQKKyNkZWZpbmUgRkRCRF9IQVNf QVNZTkNfSU8JIDB4MDgKICNkZWZpbmUgRkRCRF9GT1JNQVRfVU5JVF9TSVpFCTIwNDgKIAogc3Ry dWN0IGZkX2RldiB7Ci0tIAoyLjEzLjYKCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0 OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSB0YXJnZXQtZGV2ZWwiIGluCnRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGlu Zm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbA==