From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell Cattelan Subject: Re: [PATCH] Remove DIO_OWN_LOCKING Date: Fri, 13 Oct 2006 13:09:33 -0500 Message-ID: <1160762973.5723.81.camel@xenon.msp.redhat.com> References: <1160700998.5723.65.camel@xenon.msp.redhat.com> <20061013024830.GF11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-seLdWd8T+3VyQ07rn5QR" Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Return-path: Received: from cattelan-host202.dsl.visi.com ([208.42.117.202]:50404 "EHLO slurp.thebarn.com") by vger.kernel.org with ESMTP id S1751603AbWJMSJi (ORCPT ); Fri, 13 Oct 2006 14:09:38 -0400 To: David Chinner In-Reply-To: <20061013024830.GF11034@melbourne.sgi.com> Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org --=-seLdWd8T+3VyQ07rn5QR Content-Type: multipart/mixed; boundary="=-6PbBLX468XE5uyKVDNAt" --=-6PbBLX468XE5uyKVDNAt Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Fri, 2006-10-13 at 12:48 +1000, David Chinner wrote: > On Thu, Oct 12, 2006 at 07:56:38PM -0500, Russell Cattelan wrote: > > While trying to fix up GFS2 directio and reading through the code > > involving the various lock flags I discovered the DIO_OWN_LOCKING=20 > > flag is no longer used. > > =20 > > XFS recently changed it xfs_vm_direct_IO function to call > > blockdev_direct_IO_no_locking for reads and > > blockdev_direct_IO_own_locking > > for writes. But DIO_OWN_LOCKING is only used in the direct IO read case > > so effectively the flag is never checked an therefore can probably be > > removed. >=20 > NACK. >=20 > This breaks XFS direct writes - the DIO_OWN_LOCKING flag has meaning > for direct writes even though a simple grep doesn't give you any > hits. get_more_blocks() sets the create flag unconditionally on > writes when DIO_OWN_LOCKING is set, and this is needed for XFS to be > able to allocate underlying blocks if the direct write is over a > hole or past EOF. Arrghh you are correct! Even more reason to clean this logic up. look this version over and see what you think. comments not in final state but is describing what is being changed an why. Basically the idea is to have separate flags for locking and creation, overloading the flags meant that they were specific for XFS needs and therefore did not work for GFS. Also go to a TRUE state if flag on and a FALSE state if flag off. vs the mix of true flag (DIO_LOCKING) vs false flag (DIO_NO_LOCKING) The other option might be to have xfs pass different get_blocks functions for read and write, but that seems even more confusing based on the presence of create flag. And probably wouldn't help GFS in the long run unless it did the same=20 get_block_read/get_block_write thing. --=20 Russell Cattelan --=-6PbBLX468XE5uyKVDNAt Content-Disposition: attachment; filename=wack_own_locking Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=wack_own_locking; charset=utf-8 SW5kZXg6IHdvcmtfZ2ZzL2ZzL2RpcmVjdC1pby5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gd29ya19nZnMu b3JpZy9mcy9kaXJlY3QtaW8uYwkyMDA2LTEwLTEzIDEyOjMyOjU3LjY0MTg5ODk2MyAtMDUwMA0K KysrIHdvcmtfZ2ZzL2ZzL2RpcmVjdC1pby5jCTIwMDYtMTAtMTMgMTI6MzU6NDYuMDMyMjE2NTU1 IC0wNTAwDQpAQCAtNTYsOSArNTYsNyBAQA0KICAqIGxvY2tfdHlwZSBpcyBESU9fTE9DS0lORyBm b3IgcmVndWxhciBmaWxlcyBvbiBkaXJlY3QtSU8tbmFpdmUgZmlsZXN5c3RlbXMuDQogICogVGhp cyBkZXRlcm1pbmVzIHdoZXRoZXIgd2UgbmVlZCB0byBkbyB0aGUgZmFuY3kgbG9ja2luZyB3aGlj aCBwcmV2ZW50cw0KICAqIGRpcmVjdC1JTyBmcm9tIGJlaW5nIGFibGUgdG8gcmVhZCB1bmluaXRp YWxpc2VkIGRpc2sgYmxvY2tzLiAgSWYgaXRzIHplcm8NCi0gKiAoYmxvY2tkZXYpIHRoaXMgbG9j a2luZyBpcyBub3QgZG9uZSwgYW5kIGlmIGl0IGlzIERJT19PV05fTE9DS0lORyBpX211dGV4IGlz DQotICogbm90IGhlbGQgZm9yIHRoZSBlbnRpcmUgZGlyZWN0IHdyaXRlICh0YWtlbiBicmllZmx5 LCBpbml0aWFsbHksIGR1cmluZyBhDQotICogZGlyZWN0IHJlYWQgdGhvdWdoLCBidXQgaXRzIG5l dmVyIGhlbGQgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIGRpcmVjdC1JTykuDQorICogKGJsb2NrZGV2 KSB0aGlzIGxvY2tpbmcgaXMgbm90IGRvbmUuDQogICovDQogDQogc3RydWN0IGRpbyB7DQpAQCAt NjcsNyArNjUsNyBAQCBzdHJ1Y3QgZGlvIHsNCiAJc3RydWN0IGlub2RlICppbm9kZTsNCiAJaW50 IHJ3Ow0KIAlsb2ZmX3QgaV9zaXplOwkJCS8qIGlfc2l6ZSB3aGVuIHN1Ym1pdHRlZCAqLw0KLQlp bnQgbG9ja190eXBlOwkJCS8qIGRvZXNuJ3QgY2hhbmdlICovDQorCXVuc2lnbmVkIGZsYWdzOwkJ CS8qIGRvZXNuJ3QgY2hhbmdlICovDQogCXVuc2lnbmVkIGJsa2JpdHM7CQkvKiBkb2Vzbid0IGNo YW5nZSAqLw0KIAl1bnNpZ25lZCBibGtmYWN0b3I7CQkvKiBXaGVuIHdlJ3JlIHVzaW5nIGFuIGFs aWdubWVudCB3aGljaA0KIAkJCQkJICAgaXMgZmluZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSdzIHNv ZnQNCkBAIC0yMTksNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgZGlvX2NvbXBsZXRlKHN0cnVjdCBk aW8gKmRpbw0KIHsNCiAJaWYgKGRpby0+ZW5kX2lvICYmIGRpby0+cmVzdWx0KQ0KIAkJZGlvLT5l bmRfaW8oZGlvLT5pb2NiLCBvZmZzZXQsIGJ5dGVzLCBkaW8tPm1hcF9iaC5iX3ByaXZhdGUpOw0K LQlpZiAoZGlvLT5sb2NrX3R5cGUgPT0gRElPX0xPQ0tJTkcpDQorCWlmIChkaW8tPmZsYWdzICYg RElPX0xPQ0tJTkcpDQogCQkvKiBsb2NrZGVwOiBub24tb3duZXIgcmVsZWFzZSAqLw0KIAkJdXBf cmVhZF9ub25fb3duZXIoJmRpby0+aW5vZGUtPmlfYWxsb2Nfc2VtKTsNCiB9DQpAQCAtNTM3LDEy ICs1MzUsMTUgQEAgc3RhdGljIGludCBnZXRfbW9yZV9ibG9ja3Moc3RydWN0IGRpbyAqZA0KIAkJ bWFwX2JoLT5iX3NpemUgPSBmc19jb3VudCA8PCBkaW8tPmlub2RlLT5pX2Jsa2JpdHM7DQogDQog CQljcmVhdGUgPSBkaW8tPnJ3ICYgV1JJVEU7DQotCQlpZiAoZGlvLT5sb2NrX3R5cGUgPT0gRElP X0xPQ0tJTkcpIHsNCi0JCQlpZiAoZGlvLT5ibG9ja19pbl9maWxlIDwgKGlfc2l6ZV9yZWFkKGRp by0+aW5vZGUpID4+DQotCQkJCQkJCWRpby0+YmxrYml0cykpDQorCQlpZiAoIShkaW8tPmZsYWdz ICYgRElPX0NSRUFURSkpIHsNCisJCQlpZiAoZGlvLT5mbGFncyAmIERJT19MT0NLSU5HKSB7DQor CQkJCWlmIChkaW8tPmJsb2NrX2luX2ZpbGUgPCAoaV9zaXplX3JlYWQoZGlvLT5pbm9kZSkgPj4N CisJCQkJCQkJICBkaW8tPmJsa2JpdHMpKQ0KKwkJCQkJY3JlYXRlID0gMDsNCisJCQl9IGVsc2Ug ew0KKwkJCQkvKiBsb2NrcyBub3QgaGVsZCwgYWxsb2NhdGUgb2ZmICovDQogCQkJCWNyZWF0ZSA9 IDA7DQotCQl9IGVsc2UgaWYgKGRpby0+bG9ja190eXBlID09IERJT19OT19MT0NLSU5HKSB7DQot CQkJY3JlYXRlID0gMDsNCisJCQl9DQogCQl9DQogDQogCQkvKg0KQEAgLTEwODAsNyArMTA4MSw3 IEBAIGRpcmVjdF9pb193b3JrZXIoaW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmkNCiAJICogd2UgY2Fu IGxldCBpX211dGV4IGdvIG5vdyB0aGF0IGl0cyBhY2hpZXZlZCBpdHMgcHVycG9zZQ0KIAkgKiBv ZiBwcm90ZWN0aW5nIHVzIGZyb20gbG9va2luZyB1cCB1bmluaXRpYWxpemVkIGJsb2Nrcy4NCiAJ ICovDQotCWlmICgocncgPT0gUkVBRCkgJiYgKGRpby0+bG9ja190eXBlID09IERJT19MT0NLSU5H KSkNCisJaWYgKChydyA9PSBSRUFEKSAmJiAoZGlvLT5mbGFncyAmIERJT19MT0NLSU5HKSkNCiAJ CW11dGV4X3VubG9jaygmZGlvLT5pbm9kZS0+aV9tdXRleCk7DQogDQogCS8qDQpAQCAtMTE1Nyw5 ICsxMTU4LDExIEBAIGRpcmVjdF9pb193b3JrZXIoaW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmkNCiAN CiAvKg0KICAqIFRoaXMgaXMgYSBsaWJyYXJ5IGZ1bmN0aW9uIGZvciB1c2UgYnkgZmlsZXN5c3Rl bSBkcml2ZXJzLg0KLSAqIFRoZSBsb2NraW5nIHJ1bGVzIGFyZSBnb3Zlcm5lZCBieSB0aGUgZGlv X2xvY2tfdHlwZSBwYXJhbWV0ZXIuDQorICogVGhlIGxvY2tpbmcgcnVsZXMgYXJlIGdvdmVybmVk IGJ5IHRoZSBkaW9fZmxhZ3MgcGFyYW1ldGVyLg0KKyAqIChwcmV2aW91c2x5IGRpb19sb2NrX3R5 cGUpDQogICoNCi0gKiBESU9fTk9fTE9DS0lORyAobm8gbG9ja2luZywgZm9yIHJhdyBibG9jayBk ZXZpY2UgYWNjZXNzKQ0KKyAqIERJT19OT19MT0NLSU5HIGlzIG5vdyB0aGUgTEFDSyBvZiB0aGUg RElPX0xPQ0tJTkcgZmxhZy4NCisgKiAobm8gbG9ja2luZywgZm9yIHJhdyBibG9jayBkZXZpY2Ug YWNjZXNzKQ0KICAqIEZvciB3cml0ZXMsIGlfbXV0ZXggaXMgbm90IGhlbGQgb24gZW50cnk7IGl0 IGlzIG5ldmVyIHRha2VuLg0KICAqDQogICogRElPX0xPQ0tJTkcgKHNpbXBsZSBsb2NraW5nIGZv ciByZWd1bGFyIGZpbGVzKQ0KQEAgLTExNjgsMTkgKzExNzEsMTMgQEAgZGlyZWN0X2lvX3dvcmtl cihpbnQgcncsIHN0cnVjdCBraW9jYiAqaQ0KICAqIEZvciByZWFkcywgaV9tdXRleCBpcyBub3Qg aGVsZCBvbiBlbnRyeSwgYnV0IGl0IGlzIHRha2VuIGFuZCBkcm9wcGVkIGJlZm9yZQ0KICAqIHJl dHVybmluZy4NCiAgKg0KLSAqIERJT19PV05fTE9DS0lORyAoZmlsZXN5c3RlbSBwcm92aWRlcyBz eW5jaHJvbmlzYXRpb24gYW5kIGhhbmRsaW5nIG9mDQotICoJdW5pbml0aWFsaXNlZCBkYXRhLCBh bGxvd2luZyBwYXJhbGxlbCBkaXJlY3QgcmVhZGVycyBhbmQgd3JpdGVycykNCi0gKiBGb3Igd3Jp dGVzIHdlIGFyZSBjYWxsZWQgd2l0aG91dCBpX211dGV4LCByZXR1cm4gd2l0aG91dCBpdCwgbmV2 ZXIgdG91Y2ggaXQuDQotICogRm9yIHJlYWRzIHdlIGFyZSBjYWxsZWQgdW5kZXIgaV9tdXRleCBh bmQgcmV0dXJuIHdpdGggaV9tdXRleCBoZWxkLCBldmVuDQotICogdGhvdWdoIGl0IG1heSBiZSBp bnRlcm5hbGx5IGRyb3BwZWQuDQotICoNCiAgKiBBZGRpdGlvbmFsIGlfYWxsb2Nfc2VtIGxvY2tp bmcgcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBpbmxpbmUgYmVsb3cuDQogICovDQogc3NpemVfdA0K IF9fYmxvY2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlLA0KIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBjb25zdCBzdHJ1Y3Qg aW92ZWMgKmlvdiwgbG9mZl90IG9mZnNldCwgDQogCXVuc2lnbmVkIGxvbmcgbnJfc2VncywgZ2V0 X2Jsb2NrX3QgZ2V0X2Jsb2NrLCBkaW9faW9kb25lX3QgZW5kX2lvLA0KLQlpbnQgZGlvX2xvY2tf dHlwZSkNCisJdW5zaWduZWQgaW50IGRpb19mbGFncykNCiB7DQogCWludCBzZWc7DQogCXNpemVf dCBzaXplOw0KQEAgLTExOTEsOCArMTE4OCw2IEBAIF9fYmxvY2tkZXZfZGlyZWN0X0lPKGludCBy dywgc3RydWN0IGtpb2MNCiAJc3NpemVfdCByZXR2YWwgPSAtRUlOVkFMOw0KIAlsb2ZmX3QgZW5k ID0gb2Zmc2V0Ow0KIAlzdHJ1Y3QgZGlvICpkaW87DQotCWludCByZWxlYXNlX2lfbXV0ZXggPSAw Ow0KLQlpbnQgYWNxdWlyZV9pX211dGV4ID0gMDsNCiANCiAJaWYgKHJ3ICYgV1JJVEUpDQogCQly dyA9IFdSSVRFX1NZTkM7DQpAQCAtMTIzMywzNyArMTIyOCwyNiBAQCBfX2Jsb2NrZGV2X2RpcmVj dF9JTyhpbnQgcncsIHN0cnVjdCBraW9jDQogCSAqIEZvciByZWd1bGFyIGZpbGVzIHVzaW5nIERJ T19MT0NLSU5HLA0KIAkgKglyZWFkZXJzIG5lZWQgdG8gZ3JhYiBpX211dGV4IGFuZCBpX2FsbG9j X3NlbQ0KIAkgKgl3cml0ZXJzIG5lZWQgdG8gZ3JhYiBpX2FsbG9jX3NlbSBvbmx5IChpX211dGV4 IGlzIGFscmVhZHkgaGVsZCkNCi0JICogRm9yIHJlZ3VsYXIgZmlsZXMgdXNpbmcgRElPX09XTl9M T0NLSU5HLA0KLQkgKgluZWl0aGVyIHJlYWRlcnMgbm9yIHdyaXRlcnMgdGFrZSBhbnkgbG9ja3Mg aGVyZQ0KIAkgKi8NCi0JZGlvLT5sb2NrX3R5cGUgPSBkaW9fbG9ja190eXBlOw0KLQlpZiAoZGlv X2xvY2tfdHlwZSAhPSBESU9fTk9fTE9DS0lORykgew0KKwlkaW8tPmZsYWdzID0gZGlvX2ZsYWdz Ow0KKwlpZiAoZGlvX2ZsYWdzICYgRElPX0xPQ0tJTkcpIHsNCiAJCS8qIHdhdGNoIG91dCBmb3Ig YSAwIGxlbiBpbyBmcm9tIGEgdHJpY2tzeSBmcyAqLw0KIAkJaWYgKHJ3ID09IFJFQUQgJiYgZW5k ID4gb2Zmc2V0KSB7DQogCQkJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7DQotDQogCQkJ bWFwcGluZyA9IGlvY2ItPmtpX2ZpbHAtPmZfbWFwcGluZzsNCi0JCQlpZiAoZGlvX2xvY2tfdHlw ZSAhPSBESU9fT1dOX0xPQ0tJTkcpIHsNCi0JCQkJbXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgp Ow0KLQkJCQlyZWxlYXNlX2lfbXV0ZXggPSAxOw0KLQkJCX0NCisNCisJCQltdXRleF9sb2NrKCZp bm9kZS0+aV9tdXRleCk7DQogDQogCQkJcmV0dmFsID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9y YW5nZShtYXBwaW5nLCBvZmZzZXQsDQogCQkJCQkJCSAgICAgIGVuZCAtIDEpOw0KIAkJCWlmIChy ZXR2YWwpIHsNCisJCQkJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7DQogCQkJCWtmcmVl KGRpbyk7DQogCQkJCWdvdG8gb3V0Ow0KIAkJCX0NCiANCi0JCQlpZiAoZGlvX2xvY2tfdHlwZSA9 PSBESU9fT1dOX0xPQ0tJTkcpIHsNCi0JCQkJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7 DQotCQkJCWFjcXVpcmVfaV9tdXRleCA9IDE7DQotCQkJfQ0KLQkJfQ0KLQ0KLQkJaWYgKGRpb19s b2NrX3R5cGUgPT0gRElPX0xPQ0tJTkcpDQotCQkJLyogbG9ja2RlcDogbm90IHRoZSBvd25lciB3 aWxsIHJlbGVhc2UgaXQgKi8NCi0JCQlkb3duX3JlYWRfbm9uX293bmVyKCZpbm9kZS0+aV9hbGxv Y19zZW0pOw0KKwkJfSAvKiBlbHNlIHdyaXRlICovDQorCQlkb3duX3JlYWRfbm9uX293bmVyKCZp bm9kZS0+aV9hbGxvY19zZW0pOw0KIAl9DQogDQogCS8qDQpAQCAtMTI3OCwxNCArMTI2Miw3IEBA IF9fYmxvY2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2MNCiAJcmV0dmFsID0gZGly ZWN0X2lvX3dvcmtlcihydywgaW9jYiwgaW5vZGUsIGlvdiwgb2Zmc2V0LA0KIAkJCQlucl9zZWdz LCBibGtiaXRzLCBnZXRfYmxvY2ssIGVuZF9pbywgZGlvKTsNCiANCi0JaWYgKHJ3ID09IFJFQUQg JiYgZGlvX2xvY2tfdHlwZSA9PSBESU9fTE9DS0lORykNCi0JCXJlbGVhc2VfaV9tdXRleCA9IDA7 DQotDQogb3V0Og0KLQlpZiAocmVsZWFzZV9pX211dGV4KQ0KLQkJbXV0ZXhfdW5sb2NrKCZpbm9k ZS0+aV9tdXRleCk7DQotCWVsc2UgaWYgKGFjcXVpcmVfaV9tdXRleCkNCi0JCW11dGV4X2xvY2so Jmlub2RlLT5pX211dGV4KTsNCiAJcmV0dXJuIHJldHZhbDsNCiB9DQogRVhQT1JUX1NZTUJPTChf X2Jsb2NrZGV2X2RpcmVjdF9JTyk7DQpJbmRleDogd29ya19nZnMvZnMveGZzL2xpbnV4LTIuNi94 ZnNfYW9wcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gd29ya19nZnMub3JpZy9mcy94ZnMvbGludXgtMi42 L3hmc19hb3BzLmMJMjAwNi0xMC0xMyAxMjozMTo0NC43NDg5MzgzOTEgLTA1MDANCisrKyB3b3Jr X2dmcy9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMJMjAwNi0xMC0xMyAxMjozNTo0Ni4xNjAy MTgzNjggLTA1MDANCkBAIC0xMzg5LDE5ICsxMzg5LDE4IEBAIHhmc192bV9kaXJlY3RfSU8oDQog DQogCWlvY2ItPnByaXZhdGUgPSB4ZnNfYWxsb2NfaW9lbmQoaW5vZGUsIElPTUFQX1VOV1JJVFRF Tik7DQogDQotCWlmIChydyA9PSBXUklURSkgew0KLQkJcmV0ID0gYmxvY2tkZXZfZGlyZWN0X0lP X293bl9sb2NraW5nKHJ3LCBpb2NiLCBpbm9kZSwNCi0JCQlpb21hcC5pb21hcF90YXJnZXQtPmJ0 X2JkZXYsDQotCQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQotCQkJeGZzX2dldF9ibG9ja3NfZGly ZWN0LA0KLQkJCXhmc19lbmRfaW9fZGlyZWN0KTsNCi0JfSBlbHNlIHsNCi0JCXJldCA9IGJsb2Nr ZGV2X2RpcmVjdF9JT19ub19sb2NraW5nKHJ3LCBpb2NiLCBpbm9kZSwNCi0JCQlpb21hcC5pb21h cF90YXJnZXQtPmJ0X2JkZXYsDQotCQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQotCQkJeGZzX2dl dF9ibG9ja3NfZGlyZWN0LA0KLQkJCXhmc19lbmRfaW9fZGlyZWN0KTsNCi0JfQ0KKwkvKiBkaXJl Y3QgSU8gaXMgY2FsbGVkIHdpdGhvdXQgdGhlIERJT19MT0NLSU5HIGZsYWcsDQorCSAqIHdoaWNo IGltcGx5IHRoZSBwcmV2aW91cyBiZWhhdmlvciBvZiB0aGUgRElPX05PX0xPQ0tJTkcNCisJICog ZmxhZy4gRElPX0NSRUFURSBub3cgc2F5cyBhbHdheXMgcGFzcyBjcmVhdGUgPSAxIHdoZW4NCisJ ICogZGlvLT5ydyA9PSBXUklURQ0KKwkgKi8NCisNCisJcmV0ID0gYmxvY2tkZXZfZGlyZWN0X0lP X2ZsYWdzKHJ3LCBpb2NiLCBpbm9kZSwNCisJCQkJICAgICAgIGlvbWFwLmlvbWFwX3RhcmdldC0+ YnRfYmRldiwNCisJCQkJICAgICAgIGlvdiwgb2Zmc2V0LCBucl9zZWdzLA0KKwkJCQkgICAgICAg eGZzX2dldF9ibG9ja3NfZGlyZWN0LA0KKwkJCQkgICAgICAgeGZzX2VuZF9pb19kaXJlY3QsDQor CQkJCSAgICAgICBESU9fQ1JFQVRFKTsNCiANCiAJaWYgKHVubGlrZWx5KHJldCA8PSAwICYmIGlv Y2ItPnByaXZhdGUpKQ0KIAkJeGZzX2Rlc3Ryb3lfaW9lbmQoaW9jYi0+cHJpdmF0ZSk7DQpJbmRl eDogd29ya19nZnMvaW5jbHVkZS9saW51eC9mcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gd29ya19nZnMu b3JpZy9pbmNsdWRlL2xpbnV4L2ZzLmgJMjAwNi0xMC0xMyAxMjozMTo0NS41MTY5NDgzNzUgLTA1 MDANCisrKyB3b3JrX2dmcy9pbmNsdWRlL2xpbnV4L2ZzLmgJMjAwNi0xMC0xMyAxMjozNTo0Ni4y MjQyMTkyNzQgLTA1MDANCkBAIC0xNzE4LDM5ICsxNzE4LDM5IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBkb19nZW5lcmljX2ZpbGVfcmVhZCgNCiBzc2l6ZV90IF9fYmxvY2tkZXZfZGlyZWN0X0lPKGlu dCBydywgc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIAlzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpiZGV2LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgbG9mZl90IG9mZnNl dCwNCiAJdW5zaWduZWQgbG9uZyBucl9zZWdzLCBnZXRfYmxvY2tfdCBnZXRfYmxvY2ssIGRpb19p b2RvbmVfdCBlbmRfaW8sDQotCWludCBsb2NrX3R5cGUpOw0KKwl1bnNpZ25lZCBpbnQgZGlvX2Zs YWdzKTsNCiANCi1lbnVtIHsNCi0JRElPX0xPQ0tJTkcgPSAxLCAvKiBuZWVkIGxvY2tpbmcgYmV0 d2VlbiBidWZmZXJlZCBhbmQgZGlyZWN0IGFjY2VzcyAqLw0KLQlESU9fTk9fTE9DS0lORywgIC8q IGJkZXY7IG5vIGxvY2tpbmcgYXQgYWxsIGJldHdlZW4gYnVmZmVyZWQvZGlyZWN0ICovDQotCURJ T19PV05fTE9DS0lORywgLyogZmlsZXN5c3RlbSBsb2NrcyBidWZmZXJlZCBhbmQgZGlyZWN0IGlu dGVybmFsbHkgKi8NCi19Ow0KKyNkZWZpbmUgRElPX0xPQ0tJTkcJKDEgPDwgMCkgIC8qIG5lZWQg bG9ja2luZyBiZXR3ZWVuIGJ1ZmZlcmVkIGFuZCBkaXJlY3QgYWNjZXNzICovDQorI2RlZmluZSBE SU9fQ1JFQVRFCSgxIDw8IDEpICAvKiBmaWxlIHN5c3RlbSBjYW4gYWx3YXlzIGNyZWF0ZSBuZXcg YmxvY2tzICovDQogDQogc3RhdGljIGlubGluZSBzc2l6ZV90IGJsb2NrZGV2X2RpcmVjdF9JTyhp bnQgcncsIHN0cnVjdCBraW9jYiAqaW9jYiwNCiAJc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldiwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsDQogCWxvZmZfdCBv ZmZzZXQsIHVuc2lnbmVkIGxvbmcgbnJfc2VncywgZ2V0X2Jsb2NrX3QgZ2V0X2Jsb2NrLA0KIAlk aW9faW9kb25lX3QgZW5kX2lvKQ0KIHsNCisJLyogbG9ja2luZyBpcyBvbiwgY3JlYXRlIGlzIGNv bmR0aW9uYWwgKi8NCiAJcmV0dXJuIF9fYmxvY2tkZXZfZGlyZWN0X0lPKHJ3LCBpb2NiLCBpbm9k ZSwgYmRldiwgaW92LCBvZmZzZXQsDQogCQkJCW5yX3NlZ3MsIGdldF9ibG9jaywgZW5kX2lvLCBE SU9fTE9DS0lORyk7DQogfQ0KIA0KLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBibG9ja2Rldl9kaXJl Y3RfSU9fbm9fbG9ja2luZyhpbnQgcncsIHN0cnVjdCBraW9jYiAqaW9jYiwNCitzdGF0aWMgaW5s aW5lIHNzaXplX3QgYmxvY2tkZXZfZGlyZWN0X0lPX2ZsYWdzKGludCBydywgc3RydWN0IGtpb2Ni ICppb2NiLA0KIAlzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2 LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwNCiAJbG9mZl90IG9mZnNldCwgdW5zaWduZWQgbG9u ZyBucl9zZWdzLCBnZXRfYmxvY2tfdCBnZXRfYmxvY2ssDQotCWRpb19pb2RvbmVfdCBlbmRfaW8p DQorCWRpb19pb2RvbmVfdCBlbmRfaW8sIHVuc2lnbmVkIGludCBmbGFncykNCiB7DQorCS8qIGZp bGUgc3lzdGVtIGRpY3RhdGVzIGxvY2tpbmcgYW5kIGNyZWF0ZSBiZWhhdmlvciAqLw0KIAlyZXR1 cm4gX19ibG9ja2Rldl9kaXJlY3RfSU8ocncsIGlvY2IsIGlub2RlLCBiZGV2LCBpb3YsIG9mZnNl dCwNCi0JCQkJbnJfc2VncywgZ2V0X2Jsb2NrLCBlbmRfaW8sIERJT19OT19MT0NLSU5HKTsNCisJ CQkJbnJfc2VncywgZ2V0X2Jsb2NrLCBlbmRfaW8sIGZsYWdzKTsNCiB9DQogDQotc3RhdGljIGlu bGluZSBzc2l6ZV90IGJsb2NrZGV2X2RpcmVjdF9JT19vd25fbG9ja2luZyhpbnQgcncsIHN0cnVj dCBraW9jYiAqaW9jYiwNCitzdGF0aWMgaW5saW5lIHNzaXplX3QgYmxvY2tkZXZfZGlyZWN0X0lP X25vX2xvY2tpbmcoaW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogCXN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92 LA0KIAlsb2ZmX3Qgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIG5yX3NlZ3MsIGdldF9ibG9ja190IGdl dF9ibG9jaywNCiAJZGlvX2lvZG9uZV90IGVuZF9pbykNCiB7DQorCS8qIGxvY2tpbmcgaXMgb2Zm LCBjcmVhdGUgaXMgb2ZmICovDQogCXJldHVybiBfX2Jsb2NrZGV2X2RpcmVjdF9JTyhydywgaW9j YiwgaW5vZGUsIGJkZXYsIGlvdiwgb2Zmc2V0LA0KLQkJCQlucl9zZWdzLCBnZXRfYmxvY2ssIGVu ZF9pbywgRElPX09XTl9MT0NLSU5HKTsNCisJCQkJbnJfc2VncywgZ2V0X2Jsb2NrLCBlbmRfaW8s IDApOw0KIH0NCiANCiBleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmlj X3JvX2ZvcHM7DQo= --=-6PbBLX468XE5uyKVDNAt-- --=-seLdWd8T+3VyQ07rn5QR Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFL9ZdNRmM+OaGhBgRAvbTAJ9wuLgFYX4HFtahRDgL80Vzk5BkYACfYyw0 iSvX4cEyAshBI6tHiPNI+bA= =V+ON -----END PGP SIGNATURE----- --=-seLdWd8T+3VyQ07rn5QR--