From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH V4 1/2] ceph: Implement readv/preadv for sync operation. Date: Thu, 12 Sep 2013 13:25:16 +0800 Message-ID: <201309121325129235088@gmail.com> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pb0-f51.google.com ([209.85.160.51]:40553 "EHLO mail-pb0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753027Ab3ILFZb (ORCPT ); Thu, 12 Sep 2013 01:25:31 -0400 Received: by mail-pb0-f51.google.com with SMTP id jt11so10076515pbb.24 for ; Wed, 11 Sep 2013 22:25:31 -0700 (PDT) Sender: ceph-devel-owner@vger.kernel.org List-ID: To: sage , =?utf-8?B?WWFuLCBaaGVuZw==?= Cc: ceph-devel Rm9yIHJlYWR2L3ByZWFkdiBzeW5jLW9wZXJhdG9pbiwgY2VwaCBvbmx5IGRvIHRoZSBmaXJzdCBp b3YuDQpJdCBkb24ndCB0aGluayBvdGhlciBpb3ZzLk5vdyBpbXBsZW1lbnQgdGhpcy4NCg0KVjQ6 DQoJbW9kaWZ5IG9uZSBidWcuDQpWMzogDQogICBtb2RpZnkgc29tZSBidWcuDQpWMjoNCiAgLWFk ZCBnZW5lcmljX3NlZ21lbnRfY2hlY2tzDQogIC11c2luZyBzdHJ1Y3QgaW92X2l0ZXIgcmVwbGFj ZSBjbG9uaW5nIHRoZSBpb3ZzLg0KICAtcmV0dXJuIHByZXZpb3VzIHN1Y2Nlc3NmdWxseSBjb3Bp ZWQgaWYgY2VwaF9jb3B5X3BhZ2VfdmVjdG9yX3RvX3VzZXINCiAgIG1ldCBlcnJvci4NCg0KDQpT aWduZWQtb2ZmLWJ5OiBKaWFucGVuZyBNYSA8bWFqaWFucGVuZ0BnbWFpbC5jb20+DQpSZXZpZXdl ZC1ieTogWWFuLCBaaGVuZyA8emhlbmcuei55YW5AaW50ZWwuY29tPg0KLS0tDQogIGZzL2NlcGgv ZmlsZS5jIHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgNTEgZGVs ZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9mcy9jZXBoL2ZpbGUuYyBiL2ZzL2NlcGgvZmlsZS5j DQppbmRleCAzZGU4OTgyLi5iYzdmYTUyIDEwMDY0NA0KLS0tIGEvZnMvY2VwaC9maWxlLmMNCisr KyBiL2ZzL2NlcGgvZmlsZS5jDQpAQCAtNDA4LDUxICs0MDgsOTQgQEAgbW9yZToNCiAgKg0KICAq IElmIHRoZSByZWFkIHNwYW5zIG9iamVjdCBib3VuZGFyeSwganVzdCBkbyBtdWx0aXBsZSByZWFk cy4NCiAgKi8NCi1zdGF0aWMgc3NpemVfdCBjZXBoX3N5bmNfcmVhZChzdHJ1Y3QgZmlsZSAqZmls ZSwgY2hhciBfX3VzZXIgKmRhdGEsDQotCQkJICAgICAgdW5zaWduZWQgbGVuLCBsb2ZmX3QgKnBv ZmYsIGludCAqY2hlY2tlb2YpDQorc3RhdGljIHNzaXplX3QgY2VwaF9zeW5jX3JlYWQoc3RydWN0 IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmksDQorCQkJCWludCAqY2hlY2tlb2YpDQog ew0KKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7DQogCXN0cnVjdCBpbm9kZSAq aW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpOw0KIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KLQl1NjQg b2ZmID0gKnBvZmY7DQorCXU2NCBvZmYgPSBpb2NiLT5raV9wb3M7DQogCWludCBudW1fcGFnZXMs IHJldDsNCiANCi0JZG91dCgic3luY19yZWFkIG9uIGZpbGUgJXAgJWxsdX4ldSAlc1xuIiwgZmls ZSwgb2ZmLCBsZW4sDQorCWRvdXQoInN5bmNfcmVhZCBvbiBmaWxlICVwICVsbHV+JXUgJXNcbiIs IGZpbGUsIG9mZiwNCisJICAgICAodW5zaWduZWQpaW9jYi0+a2lfbGVmdCwNCiAJICAgICAoZmls ZS0+Zl9mbGFncyAmIE9fRElSRUNUKSA/ICJPX0RJUkVDVCIgOiAiIik7DQotDQotCWlmIChmaWxl LT5mX2ZsYWdzICYgT19ESVJFQ1QpIHsNCi0JCW51bV9wYWdlcyA9IGNhbGNfcGFnZXNfZm9yKCh1 bnNpZ25lZCBsb25nKWRhdGEsIGxlbik7DQotCQlwYWdlcyA9IGNlcGhfZ2V0X2RpcmVjdF9wYWdl X3ZlY3RvcihkYXRhLCBudW1fcGFnZXMsIHRydWUpOw0KLQl9IGVsc2Ugew0KLQkJbnVtX3BhZ2Vz ID0gY2FsY19wYWdlc19mb3Iob2ZmLCBsZW4pOw0KLQkJcGFnZXMgPSBjZXBoX2FsbG9jX3BhZ2Vf dmVjdG9yKG51bV9wYWdlcywgR0ZQX05PRlMpOw0KLQl9DQotCWlmIChJU19FUlIocGFnZXMpKQ0K LQkJcmV0dXJuIFBUUl9FUlIocGFnZXMpOw0KLQ0KIAkvKg0KIAkgKiBmbHVzaCBhbnkgcGFnZSBj YWNoZSBwYWdlcyBpbiB0aGlzIHJhbmdlLiAgdGhpcw0KIAkgKiB3aWxsIG1ha2UgY29uY3VycmVu dCBub3JtYWwgYW5kIHN5bmMgaW8gc2xvdywNCiAJICogYnV0IGl0IHdpbGwgYXQgbGVhc3QgYmVo YXZlIHNlbnNpYmx5IHdoZW4gdGhleSBhcmUNCiAJICogaW4gc2VxdWVuY2UuDQogCSAqLw0KLQly ZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0KGlub2RlLT5pX21hcHBpbmcpOw0KKwlyZXQgPSBm aWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKGlub2RlLT5pX21hcHBpbmcsIG9mZiwNCisJCQkJ CQlvZmYgKyBpb2NiLT5raV9sZWZ0KTsNCiAJaWYgKHJldCA8IDApDQotCQlnb3RvIGRvbmU7DQot DQotCXJldCA9IHN0cmlwZWRfcmVhZChpbm9kZSwgb2ZmLCBsZW4sIHBhZ2VzLCBudW1fcGFnZXMs IGNoZWNrZW9mLA0KLQkJCSAgIGZpbGUtPmZfZmxhZ3MgJiBPX0RJUkVDVCwNCi0JCQkgICAodW5z aWduZWQgbG9uZylkYXRhICYgflBBR0VfTUFTSyk7DQorCQlyZXR1cm4gcmV0Ow0KIA0KLQlpZiAo cmV0ID49IDAgJiYgKGZpbGUtPmZfZmxhZ3MgJiBPX0RJUkVDVCkgPT0gMCkNCi0JCXJldCA9IGNl cGhfY29weV9wYWdlX3ZlY3Rvcl90b191c2VyKHBhZ2VzLCBkYXRhLCBvZmYsIHJldCk7DQotCWlm IChyZXQgPj0gMCkNCi0JCSpwb2ZmID0gb2ZmICsgcmV0Ow0KKwlpZiAoZmlsZS0+Zl9mbGFncyAm IE9fRElSRUNUKSB7DQorCQl3aGlsZSAoaW92X2l0ZXJfY291bnQoaSkpIHsNCisJCQl2b2lkIF9f dXNlciAqZGF0YSA9IGktPmlvdlswXS5pb3ZfYmFzZSArIGktPmlvdl9vZmZzZXQ7DQorCQkJc2l6 ZV90IGxlbiA9IGktPmlvdlswXS5pb3ZfbGVuIC0gaS0+aW92X29mZnNldDsNCisNCisJCQludW1f cGFnZXMgPSBjYWxjX3BhZ2VzX2ZvcigodW5zaWduZWQgbG9uZylkYXRhLCBsZW4pOw0KKwkJCXBh Z2VzID0gY2VwaF9nZXRfZGlyZWN0X3BhZ2VfdmVjdG9yKGRhdGEsDQorCQkJCQkJCSAgICBudW1f cGFnZXMsIHRydWUpOw0KKwkJCWlmIChJU19FUlIocGFnZXMpKQ0KKwkJCQlyZXR1cm4gUFRSX0VS UihwYWdlcyk7DQorDQorCQkJcmV0ID0gc3RyaXBlZF9yZWFkKGlub2RlLCBvZmYsIGxlbiwNCisJ CQkJCSAgIHBhZ2VzLCBudW1fcGFnZXMsIGNoZWNrZW9mLA0KKwkJCQkJICAgMSwgKHVuc2lnbmVk IGxvbmcpZGF0YSAmIH5QQUdFX01BU0spOw0KKwkJCWNlcGhfcHV0X3BhZ2VfdmVjdG9yKHBhZ2Vz LCBudW1fcGFnZXMsIHRydWUpOw0KKw0KKwkJCWlmIChyZXQgPD0gMCkNCisJCQkJYnJlYWs7DQor CQkJb2ZmICs9IHJldDsNCisJCQlpb3ZfaXRlcl9hZHZhbmNlKGksIHJldCk7DQorCQkJaWYgKHJl dCA8IGxlbikNCisJCQkJYnJlYWs7DQorCQl9DQorCX0gZWxzZSB7DQorCQlzaXplX3QgbGVuID0g aW9jYi0+a2lfbGVmdDsNCiANCi1kb25lOg0KLQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9fRElSRUNU KQ0KLQkJY2VwaF9wdXRfcGFnZV92ZWN0b3IocGFnZXMsIG51bV9wYWdlcywgdHJ1ZSk7DQotCWVs c2UNCisJCW51bV9wYWdlcyA9IGNhbGNfcGFnZXNfZm9yKG9mZiwgbGVuKTsNCisJCXBhZ2VzID0g Y2VwaF9hbGxvY19wYWdlX3ZlY3RvcihudW1fcGFnZXMsIEdGUF9OT0ZTKTsNCisJCWlmIChJU19F UlIocGFnZXMpKQ0KKwkJCXJldHVybiBQVFJfRVJSKHBhZ2VzKTsNCisJCXJldCA9IHN0cmlwZWRf cmVhZChpbm9kZSwgb2ZmLCBsZW4sIHBhZ2VzLA0KKwkJCQkJbnVtX3BhZ2VzLCBjaGVja2VvZiwg MCwgMCk7DQorCQlpZiAocmV0ID4gMCkgew0KKwkJCWludCBsLCBrID0gMDsNCisJCQlzaXplX3Qg bGVmdCA9IGxlbiA9IHJldDsNCisNCisJCQl3aGlsZSAobGVmdCkgew0KKwkJCQl2b2lkIF9fdXNl ciAqZGF0YSA9IGktPmlvdlswXS5pb3ZfYmFzZQ0KKwkJCQkJCQkrIGktPmlvdl9vZmZzZXQ7DQor CQkJCWwgPSBtaW4oaS0+aW92WzBdLmlvdl9sZW4gLSBpLT5pb3Zfb2Zmc2V0LA0KKwkJCQkJbGVm dCk7DQorDQorCQkJCXJldCA9IGNlcGhfY29weV9wYWdlX3ZlY3Rvcl90b191c2VyKCZwYWdlc1tr XSwNCisJCQkJCQkJCSAgICBkYXRhLCBvZmYsDQorCQkJCQkJCQkgICAgbCk7DQorCQkJCWlmIChy ZXQgPiAwKSB7DQorCQkJCQlpb3ZfaXRlcl9hZHZhbmNlKGksIHJldCk7DQorCQkJCQlsZWZ0IC09 IHJldDsNCisJCQkJCW9mZiArPSByZXQ7DQorCQkJCQlrID0gY2FsY19wYWdlc19mb3IoaW9jYi0+ a2lfcG9zLA0KKwkJCQkJCQkgICBsZW4gLSBsZWZ0ICsgMSkgLSAxOw0KKwkJCQkJQlVHX09OKGsg Pj0gbnVtX3BhZ2VzICYmIGxlZnQpOw0KKwkJCQl9IGVsc2UNCisJCQkJCWJyZWFrOw0KKwkJCX0N CisJCX0NCiAJCWNlcGhfcmVsZWFzZV9wYWdlX3ZlY3RvcihwYWdlcywgbnVtX3BhZ2VzKTsNCisJ fQ0KKw0KKwlpZiAob2ZmID4gaW9jYi0+a2lfcG9zKSB7DQorCQlyZXQgPSBvZmYgLSBpb2NiLT5r aV9wb3M7DQorCQlpb2NiLT5raV9wb3MgPSBvZmY7DQorCQlpb2NiLT5raV9sZWZ0IC09IHJldDsN CisJfQ0KKw0KIAlkb3V0KCJzeW5jX3JlYWQgcmVzdWx0ICVkXG4iLCByZXQpOw0KIAlyZXR1cm4g cmV0Ow0KIH0NCkBAIC02NDcsNTUgKzY5MCw2NyBAQCBzdGF0aWMgc3NpemVfdCBjZXBoX2Fpb19y ZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsDQogew0KIAlz dHJ1Y3QgZmlsZSAqZmlscCA9IGlvY2ItPmtpX2ZpbHA7DQogCXN0cnVjdCBjZXBoX2ZpbGVfaW5m byAqZmkgPSBmaWxwLT5wcml2YXRlX2RhdGE7DQotCWxvZmZfdCAqcHBvcyA9ICZpb2NiLT5raV9w b3M7DQotCXNpemVfdCBsZW4gPSBpb3YtPmlvdl9sZW47DQorCXNpemVfdCBsZW4gPSAwOw0KIAlz dHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsNCiAJc3RydWN0IGNlcGhfaW5v ZGVfaW5mbyAqY2kgPSBjZXBoX2lub2RlKGlub2RlKTsNCi0Jdm9pZCBfX3VzZXIgKmJhc2UgPSBp b3YtPmlvdl9iYXNlOw0KIAlzc2l6ZV90IHJldDsNCiAJaW50IHdhbnQsIGdvdCA9IDA7DQogCWlu dCBjaGVja2VvZiA9IDAsIHJlYWQgPSAwOw0KIA0KIAlkb3V0KCJhaW9fcmVhZCAlcCAlbGx4LiVs bHggJWxsdX4ldSB0cnlpbmcgdG8gZ2V0IGNhcHMgb24gJXBcbiIsDQogCSAgICAgaW5vZGUsIGNl cGhfdmlub3AoaW5vZGUpLCBwb3MsICh1bnNpZ25lZClsZW4sIGlub2RlKTsNCi1hZ2FpbjoNCisN CisJcmV0ID0gZ2VuZXJpY19zZWdtZW50X2NoZWNrcyhpb3YsICZucl9zZWdzLCAmbGVuLCBWRVJJ RllfV1JJVEUpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCiAJaWYgKGZpLT5mbW9k ZSAmIENFUEhfRklMRV9NT0RFX0xBWlkpDQogCQl3YW50ID0gQ0VQSF9DQVBfRklMRV9DQUNIRSB8 IENFUEhfQ0FQX0ZJTEVfTEFaWUlPOw0KIAllbHNlDQogCQl3YW50ID0gQ0VQSF9DQVBfRklMRV9D QUNIRTsNCiAJcmV0ID0gY2VwaF9nZXRfY2FwcyhjaSwgQ0VQSF9DQVBfRklMRV9SRCwgd2FudCwg JmdvdCwgLTEpOw0KIAlpZiAocmV0IDwgMCkNCi0JCWdvdG8gb3V0Ow0KKwkJcmV0dXJuIHJldDsN CisNCiAJZG91dCgiYWlvX3JlYWQgJXAgJWxseC4lbGx4ICVsbHV+JXUgZ290IGNhcCByZWZzIG9u ICVzXG4iLA0KIAkgICAgIGlub2RlLCBjZXBoX3Zpbm9wKGlub2RlKSwgcG9zLCAodW5zaWduZWQp bGVuLA0KIAkgICAgIGNlcGhfY2FwX3N0cmluZyhnb3QpKTsNCiANCiAJaWYgKChnb3QgJiAoQ0VQ SF9DQVBfRklMRV9DQUNIRXxDRVBIX0NBUF9GSUxFX0xBWllJTykpID09IDAgfHwNCiAJICAgIChp b2NiLT5raV9maWxwLT5mX2ZsYWdzICYgT19ESVJFQ1QpIHx8DQotCSAgICAoZmktPmZsYWdzICYg Q0VQSF9GX1NZTkMpKQ0KKwkgICAgKGZpLT5mbGFncyAmIENFUEhfRl9TWU5DKSkgew0KKwkJc3Ry dWN0IGlvdl9pdGVyIGk7DQorDQorCQlpb2NiLT5raV9sZWZ0ID0gbGVuOw0KKwkJaW92X2l0ZXJf aW5pdCgmaSwgaW92LCBucl9zZWdzLCBsZW4sIDApOw0KK2FnYWluOg0KIAkJLyogaG1tLCB0aGlz IGlzbid0IHJlYWxseSBhc3luYy4uLiAqLw0KLQkJcmV0ID0gY2VwaF9zeW5jX3JlYWQoZmlscCwg YmFzZSwgbGVuLCBwcG9zLCAmY2hlY2tlb2YpOw0KLQllbHNlDQorCQlyZXQgPSBjZXBoX3N5bmNf cmVhZChpb2NiLCAmaSwgJmNoZWNrZW9mKTsNCisNCisJCWlmIChjaGVja2VvZiAmJiByZXQgPj0g MCkgew0KKwkJCWludCBzdGF0cmV0ID0gY2VwaF9kb19nZXRhdHRyKGlub2RlLA0KKwkJCQkJCSAg ICAgIENFUEhfU1RBVF9DQVBfU0laRSk7DQorDQorCQkJLyogaGl0IEVPRiBvciBob2xlPyAqLw0K KwkJCWlmIChzdGF0cmV0ID09IDAgJiYgaW9jYi0+a2lfcG9zIDwgaW5vZGUtPmlfc2l6ZSAmJg0K KwkJCQlpb2NiLT5raV9sZWZ0KSB7DQorCQkJCWRvdXQoInN5bmNfcmVhZCBoaXQgaG9sZSwgcHBv cyAlbGxkIDwgc2l6ZSAlbGxkIg0KKwkJCQkgICAgICIsIHJlYWRpbmcgbW9yZVxuIiwgaW9jYi0+ a2lfcG9zLA0KKwkJCQkgICAgIGlub2RlLT5pX3NpemUpOw0KKw0KKwkJCQlyZWFkICs9IHJldDsN CisJCQkJY2hlY2tlb2YgPSAwOw0KKwkJCQlnb3RvIGFnYWluOw0KKwkJCX0NCisJCX0NCisNCisJ fSBlbHNlDQogCQlyZXQgPSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQoaW9jYiwgaW92LCBucl9zZWdz LCBwb3MpOw0KIA0KLW91dDoNCiAJZG91dCgiYWlvX3JlYWQgJXAgJWxseC4lbGx4IGRyb3BwaW5n IGNhcCByZWZzIG9uICVzID0gJWRcbiIsDQogCSAgICAgaW5vZGUsIGNlcGhfdmlub3AoaW5vZGUp LCBjZXBoX2NhcF9zdHJpbmcoZ290KSwgKGludClyZXQpOw0KIAljZXBoX3B1dF9jYXBfcmVmcyhj aSwgZ290KTsNCiANCi0JaWYgKGNoZWNrZW9mICYmIHJldCA+PSAwKSB7DQotCQlpbnQgc3RhdHJl dCA9IGNlcGhfZG9fZ2V0YXR0cihpbm9kZSwgQ0VQSF9TVEFUX0NBUF9TSVpFKTsNCi0NCi0JCS8q IGhpdCBFT0Ygb3IgaG9sZT8gKi8NCi0JCWlmIChzdGF0cmV0ID09IDAgJiYgKnBwb3MgPCBpbm9k ZS0+aV9zaXplKSB7DQotCQkJZG91dCgiYWlvX3JlYWQgc3luY19yZWFkIGhpdCBob2xlLCBwcG9z ICVsbGQgPCBzaXplICVsbGQsIHJlYWRpbmcgbW9yZVxuIiwgKnBwb3MsIGlub2RlLT5pX3NpemUp Ow0KLQkJCXJlYWQgKz0gcmV0Ow0KLQkJCWJhc2UgKz0gcmV0Ow0KLQkJCWxlbiAtPSByZXQ7DQot CQkJY2hlY2tlb2YgPSAwOw0KLQkJCWdvdG8gYWdhaW47DQotCQl9DQotCX0NCiAJaWYgKHJldCA+ PSAwKQ0KIAkJcmV0ICs9IHJlYWQ7DQogDQotLSANCjEuOC4xLjINCg==