From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH V3 1/2] ceph: Implement readv/preadv for sync operation. Date: Tue, 10 Sep 2013 10:04:29 +0800 Message-ID: <201309101004260763874@gmail.com> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f44.google.com ([209.85.220.44]:49459 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751122Ab3IJCEq (ORCPT ); Mon, 9 Sep 2013 22:04:46 -0400 Received: by mail-pa0-f44.google.com with SMTP id fz6so7054428pac.3 for ; Mon, 09 Sep 2013 19:04:46 -0700 (PDT) Sender: ceph-devel-owner@vger.kernel.org List-ID: To: sage Cc: =?us-ascii?B?WWFuLCBaaGVuZw==?= , ceph-devel Rm9yIHJlYWR2L3ByZWFkdiBzeW5jLW9wZXJhdG9pbiwgY2VwaCBvbmx5IGRvIHRoZSBmaXJzdCBp b3YuDQpJdCBkb24ndCB0aGluayBvdGhlciBpb3ZzLk5vdyBpbXBsZW1lbnQgdGhpcy4NCg0KVjM6 IA0KICAgbW9kaWZ5IHNvbWUgYnVnLg0KVjI6DQogIC1hZGQgZ2VuZXJpY19zZWdtZW50X2NoZWNr cw0KICAtdXNpbmcgc3RydWN0IGlvdl9pdGVyIHJlcGxhY2UgY2xvbmluZyB0aGUgaW92cy4NCiAg LXJldHVybiBwcmV2aW91cyBzdWNjZXNzZnVsbHkgY29waWVkIGlmIGNlcGhfY29weV9wYWdlX3Zl Y3Rvcl90b191c2VyDQogICBtZXQgZXJyb3IuDQoNCg0KU2lnbmVkLW9mZi1ieTogSmlhbnBlbmcg TWEgPG1hamlhbnBlbmdAZ21haWwuY29tPg0KUmV2aWV3ZWQtYnk6IFlhbiwgWmhlbmcgPHpoZW5n LnoueWFuQGludGVsLmNvbT4NCi0tLQ0KIGZzL2NlcGgvZmlsZS5jIHwgMTU3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBj aGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQg YS9mcy9jZXBoL2ZpbGUuYyBiL2ZzL2NlcGgvZmlsZS5jDQppbmRleCAzZGU4OTgyLi44ZjIwZWI0 IDEwMDY0NA0KLS0tIGEvZnMvY2VwaC9maWxlLmMNCisrKyBiL2ZzL2NlcGgvZmlsZS5jDQpAQCAt NDA4LDUxICs0MDgsOTQgQEAgbW9yZToNCiAgKg0KICAqIElmIHRoZSByZWFkIHNwYW5zIG9iamVj dCBib3VuZGFyeSwganVzdCBkbyBtdWx0aXBsZSByZWFkcy4NCiAgKi8NCi1zdGF0aWMgc3NpemVf dCBjZXBoX3N5bmNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmRhdGEsDQot CQkJICAgICAgdW5zaWduZWQgbGVuLCBsb2ZmX3QgKnBvZmYsIGludCAqY2hlY2tlb2YpDQorc3Rh dGljIHNzaXplX3QgY2VwaF9zeW5jX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92 X2l0ZXIgKmksDQorCQkJCWludCAqY2hlY2tlb2YpDQogew0KKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9 IGlvY2ItPmtpX2ZpbHA7DQogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUp Ow0KIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KLQl1NjQgb2ZmID0gKnBvZmY7DQorCXU2NCBvZmYg PSBpb2NiLT5raV9wb3M7DQogCWludCBudW1fcGFnZXMsIHJldDsNCiANCi0JZG91dCgic3luY19y ZWFkIG9uIGZpbGUgJXAgJWxsdX4ldSAlc1xuIiwgZmlsZSwgb2ZmLCBsZW4sDQorCWRvdXQoInN5 bmNfcmVhZCBvbiBmaWxlICVwICVsbHV+JXUgJXNcbiIsIGZpbGUsIG9mZiwNCisJICAgICAodW5z aWduZWQpaW9jYi0+a2lfbGVmdCwNCiAJICAgICAoZmlsZS0+Zl9mbGFncyAmIE9fRElSRUNUKSA/ ICJPX0RJUkVDVCIgOiAiIik7DQotDQotCWlmIChmaWxlLT5mX2ZsYWdzICYgT19ESVJFQ1QpIHsN Ci0JCW51bV9wYWdlcyA9IGNhbGNfcGFnZXNfZm9yKCh1bnNpZ25lZCBsb25nKWRhdGEsIGxlbik7 DQotCQlwYWdlcyA9IGNlcGhfZ2V0X2RpcmVjdF9wYWdlX3ZlY3RvcihkYXRhLCBudW1fcGFnZXMs IHRydWUpOw0KLQl9IGVsc2Ugew0KLQkJbnVtX3BhZ2VzID0gY2FsY19wYWdlc19mb3Iob2ZmLCBs ZW4pOw0KLQkJcGFnZXMgPSBjZXBoX2FsbG9jX3BhZ2VfdmVjdG9yKG51bV9wYWdlcywgR0ZQX05P RlMpOw0KLQl9DQotCWlmIChJU19FUlIocGFnZXMpKQ0KLQkJcmV0dXJuIFBUUl9FUlIocGFnZXMp Ow0KLQ0KIAkvKg0KIAkgKiBmbHVzaCBhbnkgcGFnZSBjYWNoZSBwYWdlcyBpbiB0aGlzIHJhbmdl LiAgdGhpcw0KIAkgKiB3aWxsIG1ha2UgY29uY3VycmVudCBub3JtYWwgYW5kIHN5bmMgaW8gc2xv dywNCiAJICogYnV0IGl0IHdpbGwgYXQgbGVhc3QgYmVoYXZlIHNlbnNpYmx5IHdoZW4gdGhleSBh cmUNCiAJICogaW4gc2VxdWVuY2UuDQogCSAqLw0KLQlyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93 YWl0KGlub2RlLT5pX21hcHBpbmcpOw0KKwlyZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3Jh bmdlKGlub2RlLT5pX21hcHBpbmcsIG9mZiwNCisJCQkJCQlvZmYgKyBpb2NiLT5raV9sZWZ0KTsN CiAJaWYgKHJldCA8IDApDQotCQlnb3RvIGRvbmU7DQotDQotCXJldCA9IHN0cmlwZWRfcmVhZChp bm9kZSwgb2ZmLCBsZW4sIHBhZ2VzLCBudW1fcGFnZXMsIGNoZWNrZW9mLA0KLQkJCSAgIGZpbGUt PmZfZmxhZ3MgJiBPX0RJUkVDVCwNCi0JCQkgICAodW5zaWduZWQgbG9uZylkYXRhICYgflBBR0Vf TUFTSyk7DQorCQlyZXR1cm4gcmV0Ow0KIA0KLQlpZiAocmV0ID49IDAgJiYgKGZpbGUtPmZfZmxh Z3MgJiBPX0RJUkVDVCkgPT0gMCkNCi0JCXJldCA9IGNlcGhfY29weV9wYWdlX3ZlY3Rvcl90b191 c2VyKHBhZ2VzLCBkYXRhLCBvZmYsIHJldCk7DQotCWlmIChyZXQgPj0gMCkNCi0JCSpwb2ZmID0g b2ZmICsgcmV0Ow0KKwlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fRElSRUNUKSB7DQorCQl3aGlsZSAo aW92X2l0ZXJfY291bnQoaSkpIHsNCisJCQl2b2lkIF9fdXNlciAqZGF0YSA9IGktPmlvdlswXS5p b3ZfYmFzZSArIGktPmlvdl9vZmZzZXQ7DQorCQkJc2l6ZV90IGxlbiA9IGktPmlvdlswXS5pb3Zf bGVuIC0gaS0+aW92X29mZnNldDsNCisNCisJCQludW1fcGFnZXMgPSBjYWxjX3BhZ2VzX2Zvcigo dW5zaWduZWQgbG9uZylkYXRhLCBsZW4pOw0KKwkJCXBhZ2VzID0gY2VwaF9nZXRfZGlyZWN0X3Bh Z2VfdmVjdG9yKGRhdGEsDQorCQkJCQkJCSAgICBudW1fcGFnZXMsIHRydWUpOw0KKwkJCWlmIChJ U19FUlIocGFnZXMpKQ0KKwkJCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7DQorDQorCQkJcmV0ID0g c3RyaXBlZF9yZWFkKGlub2RlLCBvZmYsIGxlbiwNCisJCQkJCSAgIHBhZ2VzLCBudW1fcGFnZXMs IGNoZWNrZW9mLA0KKwkJCQkJICAgMSwgKHVuc2lnbmVkIGxvbmcpZGF0YSAmIH5QQUdFX01BU0sp Ow0KKwkJCWNlcGhfcHV0X3BhZ2VfdmVjdG9yKHBhZ2VzLCBudW1fcGFnZXMsIHRydWUpOw0KKw0K KwkJCWlmIChyZXQgPD0gMCkNCisJCQkJYnJlYWs7DQorCQkJb2ZmICs9IHJldDsNCisJCQlpZiAo cmV0IDwgbGVuKQ0KKwkJCQlicmVhazsNCisJCQlpb3ZfaXRlcl9hZHZhbmNlKGksIHJldCk7DQor CQl9DQorCX0gZWxzZSB7DQorCQlzaXplX3QgbGVuID0gaW9jYi0+a2lfbGVmdDsNCiANCi1kb25l Og0KLQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fRElSRUNUKQ0KLQkJY2VwaF9wdXRfcGFnZV92ZWN0 b3IocGFnZXMsIG51bV9wYWdlcywgdHJ1ZSk7DQotCWVsc2UNCisJCW51bV9wYWdlcyA9IGNhbGNf cGFnZXNfZm9yKG9mZiwgbGVuKTsNCisJCXBhZ2VzID0gY2VwaF9hbGxvY19wYWdlX3ZlY3Rvcihu dW1fcGFnZXMsIEdGUF9OT0ZTKTsNCisJCWlmIChJU19FUlIocGFnZXMpKQ0KKwkJCXJldHVybiBQ VFJfRVJSKHBhZ2VzKTsNCisJCXJldCA9IHN0cmlwZWRfcmVhZChpbm9kZSwgb2ZmLCBsZW4sIHBh Z2VzLA0KKwkJCQkJbnVtX3BhZ2VzLCBjaGVja2VvZiwgMCwgMCk7DQorCQlpZiAocmV0ID4gMCkg ew0KKwkJCWludCBsLCBrID0gMDsNCisJCQlzaXplX3QgbGVmdCA9IGxlbiA9IHJldDsNCisNCisJ CQl3aGlsZSAobGVmdCkgew0KKwkJCQl2b2lkIF9fdXNlciAqZGF0YSA9IGktPmlvdlswXS5pb3Zf YmFzZQ0KKwkJCQkJCQkrIGktPmlvdl9vZmZzZXQ7DQorCQkJCWwgPSBtaW4oaS0+aW92WzBdLmlv dl9sZW4gLSBpLT5pb3Zfb2Zmc2V0LA0KKwkJCQkJbGVmdCk7DQorDQorCQkJCXJldCA9IGNlcGhf Y29weV9wYWdlX3ZlY3Rvcl90b191c2VyKCZwYWdlc1trXSwNCisJCQkJCQkJCSAgICBkYXRhLCBv ZmYsDQorCQkJCQkJCQkgICAgbCk7DQorCQkJCWlmIChyZXQgPiAwKSB7DQorCQkJCQlpb3ZfaXRl cl9hZHZhbmNlKGksIHJldCk7DQorCQkJCQlsZWZ0IC09IHJldDsNCisJCQkJCW9mZiArPSByZXQ7 DQorCQkJCQlrID0gY2FsY19wYWdlc19mb3IoaW9jYi0+a2lfcG9zLA0KKwkJCQkJCQkgICBsZW4g LSBsZWZ0ICsgMSkgLSAxOw0KKwkJCQkJQlVHX09OKGsgPj0gbnVtX3BhZ2VzICYmIGxlZnQpOw0K KwkJCQl9IGVsc2UNCisJCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCiAJCWNlcGhfcmVsZWFzZV9w YWdlX3ZlY3RvcihwYWdlcywgbnVtX3BhZ2VzKTsNCisJfQ0KKw0KKwlpZiAob2ZmID4gaW9jYi0+ a2lfcG9zKSB7DQorCQlyZXQgPSBvZmYgLSBpb2NiLT5raV9wb3M7DQorCQlpb2NiLT5raV9wb3Mg PSBvZmY7DQorCQlpb2NiLT5raV9sZWZ0IC09IHJldDsNCisJfQ0KKw0KIAlkb3V0KCJzeW5jX3Jl YWQgcmVzdWx0ICVkXG4iLCByZXQpOw0KIAlyZXR1cm4gcmV0Ow0KIH0NCkBAIC02NDcsNTUgKzY5 MCw2NyBAQCBzdGF0aWMgc3NpemVfdCBjZXBoX2Fpb19yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwg Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsDQogew0KIAlzdHJ1Y3QgZmlsZSAqZmlscCA9IGlvY2It PmtpX2ZpbHA7DQogCXN0cnVjdCBjZXBoX2ZpbGVfaW5mbyAqZmkgPSBmaWxwLT5wcml2YXRlX2Rh dGE7DQotCWxvZmZfdCAqcHBvcyA9ICZpb2NiLT5raV9wb3M7DQotCXNpemVfdCBsZW4gPSBpb3Yt Pmlvdl9sZW47DQorCXNpemVfdCBsZW4gPSAwOw0KIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZV9pbm9kZShmaWxwKTsNCiAJc3RydWN0IGNlcGhfaW5vZGVfaW5mbyAqY2kgPSBjZXBoX2lub2Rl KGlub2RlKTsNCi0Jdm9pZCBfX3VzZXIgKmJhc2UgPSBpb3YtPmlvdl9iYXNlOw0KIAlzc2l6ZV90 IHJldDsNCiAJaW50IHdhbnQsIGdvdCA9IDA7DQogCWludCBjaGVja2VvZiA9IDAsIHJlYWQgPSAw Ow0KIA0KIAlkb3V0KCJhaW9fcmVhZCAlcCAlbGx4LiVsbHggJWxsdX4ldSB0cnlpbmcgdG8gZ2V0 IGNhcHMgb24gJXBcbiIsDQogCSAgICAgaW5vZGUsIGNlcGhfdmlub3AoaW5vZGUpLCBwb3MsICh1 bnNpZ25lZClsZW4sIGlub2RlKTsNCi1hZ2FpbjoNCisNCisJcmV0ID0gZ2VuZXJpY19zZWdtZW50 X2NoZWNrcyhpb3YsICZucl9zZWdzLCAmbGVuLCBWRVJJRllfV1JJVEUpOw0KKwlpZiAocmV0KQ0K KwkJcmV0dXJuIHJldDsNCisNCiAJaWYgKGZpLT5mbW9kZSAmIENFUEhfRklMRV9NT0RFX0xBWlkp DQogCQl3YW50ID0gQ0VQSF9DQVBfRklMRV9DQUNIRSB8IENFUEhfQ0FQX0ZJTEVfTEFaWUlPOw0K IAllbHNlDQogCQl3YW50ID0gQ0VQSF9DQVBfRklMRV9DQUNIRTsNCiAJcmV0ID0gY2VwaF9nZXRf Y2FwcyhjaSwgQ0VQSF9DQVBfRklMRV9SRCwgd2FudCwgJmdvdCwgLTEpOw0KIAlpZiAocmV0IDwg MCkNCi0JCWdvdG8gb3V0Ow0KKwkJcmV0dXJuIHJldDsNCisNCiAJZG91dCgiYWlvX3JlYWQgJXAg JWxseC4lbGx4ICVsbHV+JXUgZ290IGNhcCByZWZzIG9uICVzXG4iLA0KIAkgICAgIGlub2RlLCBj ZXBoX3Zpbm9wKGlub2RlKSwgcG9zLCAodW5zaWduZWQpbGVuLA0KIAkgICAgIGNlcGhfY2FwX3N0 cmluZyhnb3QpKTsNCiANCiAJaWYgKChnb3QgJiAoQ0VQSF9DQVBfRklMRV9DQUNIRXxDRVBIX0NB UF9GSUxFX0xBWllJTykpID09IDAgfHwNCiAJICAgIChpb2NiLT5raV9maWxwLT5mX2ZsYWdzICYg T19ESVJFQ1QpIHx8DQotCSAgICAoZmktPmZsYWdzICYgQ0VQSF9GX1NZTkMpKQ0KKwkgICAgKGZp LT5mbGFncyAmIENFUEhfRl9TWU5DKSkgew0KKwkJc3RydWN0IGlvdl9pdGVyIGk7DQorDQorCQlp b2NiLT5raV9sZWZ0ID0gbGVuOw0KKwkJaW92X2l0ZXJfaW5pdCgmaSwgaW92LCBucl9zZWdzLCBs ZW4sIDApOw0KK2FnYWluOg0KIAkJLyogaG1tLCB0aGlzIGlzbid0IHJlYWxseSBhc3luYy4uLiAq Lw0KLQkJcmV0ID0gY2VwaF9zeW5jX3JlYWQoZmlscCwgYmFzZSwgbGVuLCBwcG9zLCAmY2hlY2tl b2YpOw0KLQllbHNlDQorCQlyZXQgPSBjZXBoX3N5bmNfcmVhZChpb2NiLCAmaSwgJmNoZWNrZW9m KTsNCisNCisJCWlmIChjaGVja2VvZiAmJiByZXQgPj0gMCkgew0KKwkJCWludCBzdGF0cmV0ID0g Y2VwaF9kb19nZXRhdHRyKGlub2RlLA0KKwkJCQkJCSAgICAgIENFUEhfU1RBVF9DQVBfU0laRSk7 DQorDQorCQkJLyogaGl0IEVPRiBvciBob2xlPyAqLw0KKwkJCWlmIChzdGF0cmV0ID09IDAgJiYg aW9jYi0+a2lfcG9zIDwgaW5vZGUtPmlfc2l6ZSAmJg0KKwkJCQlpb2NiLT5raV9sZWZ0KSB7DQor CQkJCWRvdXQoInN5bmNfcmVhZCBoaXQgaG9sZSwgcHBvcyAlbGxkIDwgc2l6ZSAlbGxkIg0KKwkJ CQkgICAgICIsIHJlYWRpbmcgbW9yZVxuIiwgaW9jYi0+a2lfcG9zLA0KKwkJCQkgICAgIGlub2Rl LT5pX3NpemUpOw0KKw0KKwkJCQlyZWFkICs9IHJldDsNCisJCQkJY2hlY2tlb2YgPSAwOw0KKwkJ CQlnb3RvIGFnYWluOw0KKwkJCX0NCisJCX0NCisNCisJfSBlbHNlDQogCQlyZXQgPSBnZW5lcmlj X2ZpbGVfYWlvX3JlYWQoaW9jYiwgaW92LCBucl9zZWdzLCBwb3MpOw0KIA0KLW91dDoNCiAJZG91 dCgiYWlvX3JlYWQgJXAgJWxseC4lbGx4IGRyb3BwaW5nIGNhcCByZWZzIG9uICVzID0gJWRcbiIs DQogCSAgICAgaW5vZGUsIGNlcGhfdmlub3AoaW5vZGUpLCBjZXBoX2NhcF9zdHJpbmcoZ290KSwg KGludClyZXQpOw0KIAljZXBoX3B1dF9jYXBfcmVmcyhjaSwgZ290KTsNCiANCi0JaWYgKGNoZWNr ZW9mICYmIHJldCA+PSAwKSB7DQotCQlpbnQgc3RhdHJldCA9IGNlcGhfZG9fZ2V0YXR0cihpbm9k ZSwgQ0VQSF9TVEFUX0NBUF9TSVpFKTsNCi0NCi0JCS8qIGhpdCBFT0Ygb3IgaG9sZT8gKi8NCi0J CWlmIChzdGF0cmV0ID09IDAgJiYgKnBwb3MgPCBpbm9kZS0+aV9zaXplKSB7DQotCQkJZG91dCgi YWlvX3JlYWQgc3luY19yZWFkIGhpdCBob2xlLCBwcG9zICVsbGQgPCBzaXplICVsbGQsIHJlYWRp bmcgbW9yZVxuIiwgKnBwb3MsIGlub2RlLT5pX3NpemUpOw0KLQkJCXJlYWQgKz0gcmV0Ow0KLQkJ CWJhc2UgKz0gcmV0Ow0KLQkJCWxlbiAtPSByZXQ7DQotCQkJY2hlY2tlb2YgPSAwOw0KLQkJCWdv dG8gYWdhaW47DQotCQl9DQotCX0NCiAJaWYgKHJldCA+PSAwKQ0KIAkJcmV0ICs9IHJlYWQ7DQog DQotLSANCjEuOC4xLjINCg==