diff for duplicates of <1511028750.14386.1.camel@primarydata.com> diff --git a/a/1.txt b/N1/1.txt index d95da14..d24b982 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,73 +1,119 @@ -T24gU2F0LCAyMDE3LTExLTE4IGF0IDEzOjA3IC0wNTAwLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6 -DQo+IA0KPiBPbiAxMS8xOC8yMDE3IDEyOjM5IFBNLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6DQo+ -ID4gT24gU2F0LCAyMDE3LTExLTE4IGF0IDEyOjE5IC0wNTAwLCBCb3JpcyBPc3Ryb3Zza3kgd3Jv -dGU6DQo+ID4gPiBDb21taXQgZmNkODg0M2M0MDZiNDY0MzM4NTdhZTQ1ZTVlOWQ4NGIwMWE3ZDIw -YiBicmVha3Mgb24gb2xkZXINCj4gPiA+IGNvbXBpbGVycyB3aGljaCBjYW5ub3QgcHJvY2VzcyBp -bml0aWFsaXplcnMgZm9yIGFub255bW91cw0KPiA+ID4gc3RydWN0dXJlczoNCj4gPiA+IA0KPiA+ -ID4gK2NvbnN0IG5mczRfc3RhdGVpZCBpbnZhbGlkX3N0YXRlaWQgPSB7DQo+ID4gPiArICAgICAg -IHsNCj4gPiA+ICsgICAgICAgICAgICAgICAuc2VxaWQgPSBjcHVfdG9fYmUzMigweGZmZmZmZmZm -VSksDQo+ID4gPiArICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0sDQo+ID4gPiArICAgICAg -IH0sDQo+ID4gPiArICAgICAgIC50eXBlID0gTkZTNF9JTlZBTElEX1NUQVRFSURfVFlQRSwNCj4g -PiA+ICt9Ow0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IC9ob21lL2J1aWxkL2xpbnV4LWxpbnVzL2Zz -L25mcy9uZnM0c3RhdGUuYzo3NDogZXJyb3I6IHVua25vd24NCj4gPiA+IGZpZWxkDQo+ID4gPiDi -gJhzZXFpZOKAmSBzcGVjaWZpZWQgaW4gaW5pdGlhbGl6ZXINCj4gPiA+IC9ob21lL2J1aWxkL2xp -bnV4LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2FybmluZzogbWlzc2luZw0KPiA+ID4g -YnJhY2VzDQo+ID4gPiBhcm91bmQgaW5pdGlhbGl6ZXINCj4gPiA+IC9ob21lL2J1aWxkL2xpbnV4 -LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2FybmluZzogKG5lYXINCj4gPiA+IGluaXRp -YWxpemF0aW9uIGZvciDigJhpbnZhbGlkX3N0YXRlaWQuPGFub255bW91cz4uZGF0YeKAmSkNCj4g -PiA+IC9ob21lL2J1aWxkL2xpbnV4LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2Fybmlu -Zzogb3ZlcmZsb3cNCj4gPiA+IGluDQo+ID4gPiBpbXBsaWNpdCBjb25zdGFudCBjb252ZXJzaW9u -DQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IGVy -cm9yOiB1bmtub3duDQo+ID4gPiBmaWVsZA0KPiA+ID4g4oCYb3RoZXLigJkgc3BlY2lmaWVkIGlu -IGluaXRpYWxpemVyDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51cy9mcy9uZnMvbmZzNHN0 -YXRlLmM6NzU6IGVycm9yOiBleHRyYSBicmFjZQ0KPiA+ID4gZ3JvdXANCj4gPiA+IGF0IGVuZCBv -ZiBpbml0aWFsaXplcg0KPiA+ID4gL2hvbWUvYnVpbGQvbGludXgtbGludXMvZnMvbmZzL25mczRz -dGF0ZS5jOjc1OiBlcnJvcjogKG5lYXINCj4gPiA+IGluaXRpYWxpemF0aW9uIGZvciDigJhpbnZh -bGlkX3N0YXRlaWQuPGFub255bW91cz7igJkpDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51 -cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IHdhcm5pbmc6IGV4Y2Vzcw0KPiA+ID4gZWxlbWVudHMN -Cj4gPiA+IGluIHVuaW9uIGluaXRpYWxpemVyDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51 -cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IHdhcm5pbmc6IChuZWFyDQo+ID4gPiBpbml0aWFsaXph -dGlvbiBmb3Ig4oCYaW52YWxpZF9zdGF0ZWlkLjxhbm9ueW1vdXM+4oCZKQ0KPiA+ID4gbWFrZVs0 -XTogKioqIFtmcy9uZnMvbmZzNHN0YXRlLm9dIEVycm9yIDENCj4gPiA+IG1ha2VbM106ICoqKiBb -ZnMvbmZzXSBFcnJvciAyDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gRkMtNjQgPGJ1aWxkQGJ1aWxk -LW1rMjp+PiBnY2MgLS12ZXJzaW9uDQo+ID4gPiBnY2MgKEdDQykgNC40LjQgMjAxMDA1MDMgKFJl -ZCBIYXQgNC40LjQtMikNCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBBIHNpbWlsYXIgYnVnIHdhcyBm -aXhlZCBieQ0KPiA+ID4gZTA3MTRlYzRmOWVmZTdiODY4MjhiMGRjYzA3N2ZkOGY1ZDhlNWU5MQ0K -PiA+ID4gYnV0DQo+ID4gPiBJIGRvbid0IHRoaW5rIHRoZSBzYW1lIGFwcHJvYWNoIGNhbiB3b3Jr -IGhlcmUuDQo+ID4gDQo+ID4gDQo+ID4gSSBkb24ndCBoYXZlIGFueSBzZXR1cHMgd2l0aCBnY2Mg -NC40LjQuIFdoYXQgaXMgaXQgZXhwZWN0aW5nIGhlcmU/DQo+ID4gSXMNCj4gPiBpdCBleHBlY3Rp -bmcgYW4gZXh0cmEgc2V0IG9mIGJyYWNlcyBkdWUgdG8gdGhlIGFub255bW91cyAic3RydWN0Ij8N -Cj4gPiANCj4gDQo+IE5vLCB0aGF0IHdvbid0IHdvcmsgKGF0IGxlYXN0IEkgY291bGRuJ3QgZ2V0 -IGl0IHRvIHdvcmspIGJlY2F1c2UgdGhlIA0KPiBzb2x1dGlvbiBmcm9tIGUwNzE0ZWM0ZjllIGFz -c3VtZXMgdGhhdCB0aGUgYW5vbnltb3VzIHN0cnVjdCBpcyB0aGUNCj4gZmlyc3QgDQo+IG9uZSBp -biB0aGUgZW52ZWxvcGluZyBzdHJ1Y3QuDQo+IA0KPiBJdCB3b3JrZWQgb25seSBpZiBJICh0aGlz -IGlzIGEgc21hbGwgQyBwcm9ncmFtIHdpdGggZXF1aXZhbGVudA0KPiBzdHJ1Y3RzKToNCj4gDQo+ -IHN0cnVjdCBuZnM0X3N0YXRlaWRfc3RydWN0IHsNCj4gICAgICAgICAgdW5pb24gew0KPiAgICAg -ICAgICAgICAgICAgIC8vY2hhciBkYXRhWzRdOw0KPiAgICAgICAgICAgICAgICAgIHN0cnVjdCB7 -DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXFpZDsNCj4gICAgICAgICAg -ICAgICAgICAgICAgICAgIGNoYXIgb3RoZXJbNl07DQo+ICAgICAgICAgICAgICAgICAgfSBfX2F0 -dHJpYnV0ZV9fICgocGFja2VkKSk7DQo+IAkJY2hhciBkYXRhWzRdOw0KPiAgICAgICAgICB9Ow0K -PiBhbmQgdGhlbg0KPiANCj4gY29uc3QgbmZzNF9zdGF0ZWlkIGludmFsaWRfc3RhdGVpZCA9IHsN -Cj4gICAgICAgICAgew0KPiAgICAgICAgICAgICAgICAgICAgey5zZXFpZCA9IDB4ZmZmZmZmZmZV -LA0KPiAgICAgICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0gfSwNCj4gICAgICAgICAgfSwN -Cj4gICAgICAgICAgLnR5cGUgPSBORlM0X0lOVkFMSURfU1RBVEVJRF9UWVBFLA0KPiB9Ow0KPiAN -Cj4gSWYgSSBrZWVwIGRhdGFbNF0gd2hlcmUgaXQgaXMgbm93IEkgZ2V0IGNvbXBpbGVyIGVycm9y -DQo+IA0KPiBhbi5jOjM1OjIwOiBlcnJvcjogZmllbGQgbmFtZSBub3QgaW4gcmVjb3JkIG9yIHVu -aW9uIGluaXRpYWxpemVyDQo+ICAgICAgICAgICAgICAgICAgICAgey5zZXFpZCA9IDB4ZmZmZmZm -ZmZVLA0KPiAgICAgICAgICAgICAgICAgICAgICBeDQo+IGFuLmM6MzU6MjA6IG5vdGU6IChuZWFy -IGluaXRpYWxpemF0aW9uIGZvciANCj4gJ2ludmFsaWRfc3RhdGVpZC48YW5vbnltb3VzPi5kYXRh -JykNCj4gYW4uYzozNToyOTogd2FybmluZzogb3ZlcmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQg -Y29udmVyc2lvbiBbLQ0KPiBXb3ZlcmZsb3ddDQo+ICAgICAgICAgICAgICAgICAgICAgey5zZXFp -ZCA9IDB4ZmZmZmZmZmZVLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+ -fn5+fg0KPiBhbi5jOjM2OjE5OiBlcnJvcjogZmllbGQgbmFtZSBub3QgaW4gcmVjb3JkIG9yIHVu -aW9uIGluaXRpYWxpemVyDQo+ICAgICAgICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0gfSwN -Cj4gICAgICAgICAgICAgICAgICAgICBeDQo+IGFuLmM6MzY6MTk6IG5vdGU6IChuZWFyIGluaXRp -YWxpemF0aW9uIGZvciANCj4gJ2ludmFsaWRfc3RhdGVpZC48YW5vbnltb3VzPi5kYXRhJykNCj4g -YW4uYzozNjoxOTogd2FybmluZzogYnJhY2VzIGFyb3VuZCBzY2FsYXIgaW5pdGlhbGl6ZXINCj4g -YW4uYzozNjoxOTogbm90ZTogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yIA0KPiAnaW52YWxpZF9z -dGF0ZWlkLjxhbm9ueW1vdXM+LmRhdGFbMV0nKQ0KPiANCj4gSSBkb24ndCBrbm93IGlmIHlvdSB3 -YW50IHRvIGNoYW5nZSBwdWJsaWMgaGVhZGVyIGZpbGUganVzdCB0byBnZXQNCj4gYXJvdW5kIA0K -PiB0aGlzIHByb2JsZW0uDQoNClNpZ2guLi4uIE9LLCBob3cgYWJvdXQgc29tZXRoaW5nIGxpa2Ug -dGhlIGZvbGxvd2luZyB0aGVuOg0KDQp7IC5kYXRhID0geyAweGZmLCAweGZmLCAweGZmLCAweGZm -LCAwIH0sIH0NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRh -aW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20NCg== +On Sat, 2017-11-18 at 13:07 -0500, Boris Ostrovsky wrote: +> +> On 11/18/2017 12:39 PM, Trond Myklebust wrote: +> > On Sat, 2017-11-18 at 12:19 -0500, Boris Ostrovsky wrote: +> > > Commit fcd8843c406b46433857ae45e5e9d84b01a7d20b breaks on older +> > > compilers which cannot process initializers for anonymous +> > > structures: +> > > +> > > +const nfs4_stateid invalid_stateid = { +> > > + { +> > > + .seqid = cpu_to_be32(0xffffffffU), +> > > + .other = { 0 }, +> > > + }, +> > > + .type = NFS4_INVALID_STATEID_TYPE, +> > > +}; +> > > +> > > +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: error: unknown +> > > field +> > > ‘seqid’ specified in initializer +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: missing +> > > braces +> > > around initializer +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: (near +> > > initialization for ‘invalid_stateid.<anonymous>.data’) +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: overflow +> > > in +> > > implicit constant conversion +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: unknown +> > > field +> > > ‘other’ specified in initializer +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: extra brace +> > > group +> > > at end of initializer +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: (near +> > > initialization for ‘invalid_stateid.<anonymous>’) +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: warning: excess +> > > elements +> > > in union initializer +> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: warning: (near +> > > initialization for ‘invalid_stateid.<anonymous>’) +> > > make[4]: *** [fs/nfs/nfs4state.o] Error 1 +> > > make[3]: *** [fs/nfs] Error 2 +> > > +> > > +> > > FC-64 <build@build-mk2:~> gcc --version +> > > gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2) +> > > +> > > +> > > A similar bug was fixed by +> > > e0714ec4f9efe7b86828b0dcc077fd8f5d8e5e91 +> > > but +> > > I don't think the same approach can work here. +> > +> > +> > I don't have any setups with gcc 4.4.4. What is it expecting here? +> > Is +> > it expecting an extra set of braces due to the anonymous "struct"? +> > +> +> No, that won't work (at least I couldn't get it to work) because the +> solution from e0714ec4f9e assumes that the anonymous struct is the +> first +> one in the enveloping struct. +> +> It worked only if I (this is a small C program with equivalent +> structs): +> +> struct nfs4_stateid_struct { +> union { +> //char data[4]; +> struct { +> unsigned seqid; +> char other[6]; +> } __attribute__ ((packed)); +> char data[4]; +> }; +> and then +> +> const nfs4_stateid invalid_stateid = { +> { +> {.seqid = 0xffffffffU, +> .other = { 0 } }, +> }, +> .type = NFS4_INVALID_STATEID_TYPE, +> }; +> +> If I keep data[4] where it is now I get compiler error +> +> an.c:35:20: error: field name not in record or union initializer +> {.seqid = 0xffffffffU, +> ^ +> an.c:35:20: note: (near initialization for +> 'invalid_stateid.<anonymous>.data') +> an.c:35:29: warning: overflow in implicit constant conversion [- +> Woverflow] +> {.seqid = 0xffffffffU, +> ^~~~~~~~~~~ +> an.c:36:19: error: field name not in record or union initializer +> .other = { 0 } }, +> ^ +> an.c:36:19: note: (near initialization for +> 'invalid_stateid.<anonymous>.data') +> an.c:36:19: warning: braces around scalar initializer +> an.c:36:19: note: (near initialization for +> 'invalid_stateid.<anonymous>.data[1]') +> +> I don't know if you want to change public header file just to get +> around +> this problem. + +Sigh.... OK, how about something like the following then: + +{ .data = { 0xff, 0xff, 0xff, 0xff, 0 }, } + +-- +Trond Myklebust +Linux NFS client maintainer, PrimaryData +trond.myklebust@primarydata.com diff --git a/a/content_digest b/N1/content_digest index ceafa81..dc81544 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -10,78 +10,124 @@ " linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>\0" "\00:1\0" "b\0" - "T24gU2F0LCAyMDE3LTExLTE4IGF0IDEzOjA3IC0wNTAwLCBCb3JpcyBPc3Ryb3Zza3kgd3JvdGU6\n" - "DQo+IA0KPiBPbiAxMS8xOC8yMDE3IDEyOjM5IFBNLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6DQo+\n" - "ID4gT24gU2F0LCAyMDE3LTExLTE4IGF0IDEyOjE5IC0wNTAwLCBCb3JpcyBPc3Ryb3Zza3kgd3Jv\n" - "dGU6DQo+ID4gPiBDb21taXQgZmNkODg0M2M0MDZiNDY0MzM4NTdhZTQ1ZTVlOWQ4NGIwMWE3ZDIw\n" - "YiBicmVha3Mgb24gb2xkZXINCj4gPiA+IGNvbXBpbGVycyB3aGljaCBjYW5ub3QgcHJvY2VzcyBp\n" - "bml0aWFsaXplcnMgZm9yIGFub255bW91cw0KPiA+ID4gc3RydWN0dXJlczoNCj4gPiA+IA0KPiA+\n" - "ID4gK2NvbnN0IG5mczRfc3RhdGVpZCBpbnZhbGlkX3N0YXRlaWQgPSB7DQo+ID4gPiArICAgICAg\n" - "IHsNCj4gPiA+ICsgICAgICAgICAgICAgICAuc2VxaWQgPSBjcHVfdG9fYmUzMigweGZmZmZmZmZm\n" - "VSksDQo+ID4gPiArICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0sDQo+ID4gPiArICAgICAg\n" - "IH0sDQo+ID4gPiArICAgICAgIC50eXBlID0gTkZTNF9JTlZBTElEX1NUQVRFSURfVFlQRSwNCj4g\n" - "PiA+ICt9Ow0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IC9ob21lL2J1aWxkL2xpbnV4LWxpbnVzL2Zz\n" - "L25mcy9uZnM0c3RhdGUuYzo3NDogZXJyb3I6IHVua25vd24NCj4gPiA+IGZpZWxkDQo+ID4gPiDi\n" - "gJhzZXFpZOKAmSBzcGVjaWZpZWQgaW4gaW5pdGlhbGl6ZXINCj4gPiA+IC9ob21lL2J1aWxkL2xp\n" - "bnV4LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2FybmluZzogbWlzc2luZw0KPiA+ID4g\n" - "YnJhY2VzDQo+ID4gPiBhcm91bmQgaW5pdGlhbGl6ZXINCj4gPiA+IC9ob21lL2J1aWxkL2xpbnV4\n" - "LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2FybmluZzogKG5lYXINCj4gPiA+IGluaXRp\n" - "YWxpemF0aW9uIGZvciDigJhpbnZhbGlkX3N0YXRlaWQuPGFub255bW91cz4uZGF0YeKAmSkNCj4g\n" - "PiA+IC9ob21lL2J1aWxkL2xpbnV4LWxpbnVzL2ZzL25mcy9uZnM0c3RhdGUuYzo3NDogd2Fybmlu\n" - "Zzogb3ZlcmZsb3cNCj4gPiA+IGluDQo+ID4gPiBpbXBsaWNpdCBjb25zdGFudCBjb252ZXJzaW9u\n" - "DQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IGVy\n" - "cm9yOiB1bmtub3duDQo+ID4gPiBmaWVsZA0KPiA+ID4g4oCYb3RoZXLigJkgc3BlY2lmaWVkIGlu\n" - "IGluaXRpYWxpemVyDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51cy9mcy9uZnMvbmZzNHN0\n" - "YXRlLmM6NzU6IGVycm9yOiBleHRyYSBicmFjZQ0KPiA+ID4gZ3JvdXANCj4gPiA+IGF0IGVuZCBv\n" - "ZiBpbml0aWFsaXplcg0KPiA+ID4gL2hvbWUvYnVpbGQvbGludXgtbGludXMvZnMvbmZzL25mczRz\n" - "dGF0ZS5jOjc1OiBlcnJvcjogKG5lYXINCj4gPiA+IGluaXRpYWxpemF0aW9uIGZvciDigJhpbnZh\n" - "bGlkX3N0YXRlaWQuPGFub255bW91cz7igJkpDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51\n" - "cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IHdhcm5pbmc6IGV4Y2Vzcw0KPiA+ID4gZWxlbWVudHMN\n" - "Cj4gPiA+IGluIHVuaW9uIGluaXRpYWxpemVyDQo+ID4gPiAvaG9tZS9idWlsZC9saW51eC1saW51\n" - "cy9mcy9uZnMvbmZzNHN0YXRlLmM6NzU6IHdhcm5pbmc6IChuZWFyDQo+ID4gPiBpbml0aWFsaXph\n" - "dGlvbiBmb3Ig4oCYaW52YWxpZF9zdGF0ZWlkLjxhbm9ueW1vdXM+4oCZKQ0KPiA+ID4gbWFrZVs0\n" - "XTogKioqIFtmcy9uZnMvbmZzNHN0YXRlLm9dIEVycm9yIDENCj4gPiA+IG1ha2VbM106ICoqKiBb\n" - "ZnMvbmZzXSBFcnJvciAyDQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gRkMtNjQgPGJ1aWxkQGJ1aWxk\n" - "LW1rMjp+PiBnY2MgLS12ZXJzaW9uDQo+ID4gPiBnY2MgKEdDQykgNC40LjQgMjAxMDA1MDMgKFJl\n" - "ZCBIYXQgNC40LjQtMikNCj4gPiA+IA0KPiA+ID4gDQo+ID4gPiBBIHNpbWlsYXIgYnVnIHdhcyBm\n" - "aXhlZCBieQ0KPiA+ID4gZTA3MTRlYzRmOWVmZTdiODY4MjhiMGRjYzA3N2ZkOGY1ZDhlNWU5MQ0K\n" - "PiA+ID4gYnV0DQo+ID4gPiBJIGRvbid0IHRoaW5rIHRoZSBzYW1lIGFwcHJvYWNoIGNhbiB3b3Jr\n" - "IGhlcmUuDQo+ID4gDQo+ID4gDQo+ID4gSSBkb24ndCBoYXZlIGFueSBzZXR1cHMgd2l0aCBnY2Mg\n" - "NC40LjQuIFdoYXQgaXMgaXQgZXhwZWN0aW5nIGhlcmU/DQo+ID4gSXMNCj4gPiBpdCBleHBlY3Rp\n" - "bmcgYW4gZXh0cmEgc2V0IG9mIGJyYWNlcyBkdWUgdG8gdGhlIGFub255bW91cyAic3RydWN0Ij8N\n" - "Cj4gPiANCj4gDQo+IE5vLCB0aGF0IHdvbid0IHdvcmsgKGF0IGxlYXN0IEkgY291bGRuJ3QgZ2V0\n" - "IGl0IHRvIHdvcmspIGJlY2F1c2UgdGhlIA0KPiBzb2x1dGlvbiBmcm9tIGUwNzE0ZWM0ZjllIGFz\n" - "c3VtZXMgdGhhdCB0aGUgYW5vbnltb3VzIHN0cnVjdCBpcyB0aGUNCj4gZmlyc3QgDQo+IG9uZSBp\n" - "biB0aGUgZW52ZWxvcGluZyBzdHJ1Y3QuDQo+IA0KPiBJdCB3b3JrZWQgb25seSBpZiBJICh0aGlz\n" - "IGlzIGEgc21hbGwgQyBwcm9ncmFtIHdpdGggZXF1aXZhbGVudA0KPiBzdHJ1Y3RzKToNCj4gDQo+\n" - "IHN0cnVjdCBuZnM0X3N0YXRlaWRfc3RydWN0IHsNCj4gICAgICAgICAgdW5pb24gew0KPiAgICAg\n" - "ICAgICAgICAgICAgIC8vY2hhciBkYXRhWzRdOw0KPiAgICAgICAgICAgICAgICAgIHN0cnVjdCB7\n" - "DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXFpZDsNCj4gICAgICAgICAg\n" - "ICAgICAgICAgICAgICAgIGNoYXIgb3RoZXJbNl07DQo+ICAgICAgICAgICAgICAgICAgfSBfX2F0\n" - "dHJpYnV0ZV9fICgocGFja2VkKSk7DQo+IAkJY2hhciBkYXRhWzRdOw0KPiAgICAgICAgICB9Ow0K\n" - "PiBhbmQgdGhlbg0KPiANCj4gY29uc3QgbmZzNF9zdGF0ZWlkIGludmFsaWRfc3RhdGVpZCA9IHsN\n" - "Cj4gICAgICAgICAgew0KPiAgICAgICAgICAgICAgICAgICAgey5zZXFpZCA9IDB4ZmZmZmZmZmZV\n" - "LA0KPiAgICAgICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0gfSwNCj4gICAgICAgICAgfSwN\n" - "Cj4gICAgICAgICAgLnR5cGUgPSBORlM0X0lOVkFMSURfU1RBVEVJRF9UWVBFLA0KPiB9Ow0KPiAN\n" - "Cj4gSWYgSSBrZWVwIGRhdGFbNF0gd2hlcmUgaXQgaXMgbm93IEkgZ2V0IGNvbXBpbGVyIGVycm9y\n" - "DQo+IA0KPiBhbi5jOjM1OjIwOiBlcnJvcjogZmllbGQgbmFtZSBub3QgaW4gcmVjb3JkIG9yIHVu\n" - "aW9uIGluaXRpYWxpemVyDQo+ICAgICAgICAgICAgICAgICAgICAgey5zZXFpZCA9IDB4ZmZmZmZm\n" - "ZmZVLA0KPiAgICAgICAgICAgICAgICAgICAgICBeDQo+IGFuLmM6MzU6MjA6IG5vdGU6IChuZWFy\n" - "IGluaXRpYWxpemF0aW9uIGZvciANCj4gJ2ludmFsaWRfc3RhdGVpZC48YW5vbnltb3VzPi5kYXRh\n" - "JykNCj4gYW4uYzozNToyOTogd2FybmluZzogb3ZlcmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQg\n" - "Y29udmVyc2lvbiBbLQ0KPiBXb3ZlcmZsb3ddDQo+ICAgICAgICAgICAgICAgICAgICAgey5zZXFp\n" - "ZCA9IDB4ZmZmZmZmZmZVLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+\n" - "fn5+fg0KPiBhbi5jOjM2OjE5OiBlcnJvcjogZmllbGQgbmFtZSBub3QgaW4gcmVjb3JkIG9yIHVu\n" - "aW9uIGluaXRpYWxpemVyDQo+ICAgICAgICAgICAgICAgICAgICAgLm90aGVyID0geyAwIH0gfSwN\n" - "Cj4gICAgICAgICAgICAgICAgICAgICBeDQo+IGFuLmM6MzY6MTk6IG5vdGU6IChuZWFyIGluaXRp\n" - "YWxpemF0aW9uIGZvciANCj4gJ2ludmFsaWRfc3RhdGVpZC48YW5vbnltb3VzPi5kYXRhJykNCj4g\n" - "YW4uYzozNjoxOTogd2FybmluZzogYnJhY2VzIGFyb3VuZCBzY2FsYXIgaW5pdGlhbGl6ZXINCj4g\n" - "YW4uYzozNjoxOTogbm90ZTogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yIA0KPiAnaW52YWxpZF9z\n" - "dGF0ZWlkLjxhbm9ueW1vdXM+LmRhdGFbMV0nKQ0KPiANCj4gSSBkb24ndCBrbm93IGlmIHlvdSB3\n" - "YW50IHRvIGNoYW5nZSBwdWJsaWMgaGVhZGVyIGZpbGUganVzdCB0byBnZXQNCj4gYXJvdW5kIA0K\n" - "PiB0aGlzIHByb2JsZW0uDQoNClNpZ2guLi4uIE9LLCBob3cgYWJvdXQgc29tZXRoaW5nIGxpa2Ug\n" - "dGhlIGZvbGxvd2luZyB0aGVuOg0KDQp7IC5kYXRhID0geyAweGZmLCAweGZmLCAweGZmLCAweGZm\n" - "LCAwIH0sIH0NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRh\n" - aW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0YS5jb20NCg== + "On Sat, 2017-11-18 at 13:07 -0500, Boris Ostrovsky wrote:\n" + "> \n" + "> On 11/18/2017 12:39 PM, Trond Myklebust wrote:\n" + "> > On Sat, 2017-11-18 at 12:19 -0500, Boris Ostrovsky wrote:\n" + "> > > Commit fcd8843c406b46433857ae45e5e9d84b01a7d20b breaks on older\n" + "> > > compilers which cannot process initializers for anonymous\n" + "> > > structures:\n" + "> > > \n" + "> > > +const nfs4_stateid invalid_stateid = {\n" + "> > > + {\n" + "> > > + .seqid = cpu_to_be32(0xffffffffU),\n" + "> > > + .other = { 0 },\n" + "> > > + },\n" + "> > > + .type = NFS4_INVALID_STATEID_TYPE,\n" + "> > > +};\n" + "> > > \n" + "> > > \n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: error: unknown\n" + "> > > field\n" + "> > > \342\200\230seqid\342\200\231 specified in initializer\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: missing\n" + "> > > braces\n" + "> > > around initializer\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: (near\n" + "> > > initialization for \342\200\230invalid_stateid.<anonymous>.data\342\200\231)\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:74: warning: overflow\n" + "> > > in\n" + "> > > implicit constant conversion\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: unknown\n" + "> > > field\n" + "> > > \342\200\230other\342\200\231 specified in initializer\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: extra brace\n" + "> > > group\n" + "> > > at end of initializer\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: error: (near\n" + "> > > initialization for \342\200\230invalid_stateid.<anonymous>\342\200\231)\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: warning: excess\n" + "> > > elements\n" + "> > > in union initializer\n" + "> > > /home/build/linux-linus/fs/nfs/nfs4state.c:75: warning: (near\n" + "> > > initialization for \342\200\230invalid_stateid.<anonymous>\342\200\231)\n" + "> > > make[4]: *** [fs/nfs/nfs4state.o] Error 1\n" + "> > > make[3]: *** [fs/nfs] Error 2\n" + "> > > \n" + "> > > \n" + "> > > FC-64 <build@build-mk2:~> gcc --version\n" + "> > > gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2)\n" + "> > > \n" + "> > > \n" + "> > > A similar bug was fixed by\n" + "> > > e0714ec4f9efe7b86828b0dcc077fd8f5d8e5e91\n" + "> > > but\n" + "> > > I don't think the same approach can work here.\n" + "> > \n" + "> > \n" + "> > I don't have any setups with gcc 4.4.4. What is it expecting here?\n" + "> > Is\n" + "> > it expecting an extra set of braces due to the anonymous \"struct\"?\n" + "> > \n" + "> \n" + "> No, that won't work (at least I couldn't get it to work) because the \n" + "> solution from e0714ec4f9e assumes that the anonymous struct is the\n" + "> first \n" + "> one in the enveloping struct.\n" + "> \n" + "> It worked only if I (this is a small C program with equivalent\n" + "> structs):\n" + "> \n" + "> struct nfs4_stateid_struct {\n" + "> union {\n" + "> //char data[4];\n" + "> struct {\n" + "> unsigned seqid;\n" + "> char other[6];\n" + "> } __attribute__ ((packed));\n" + "> \t\tchar data[4];\n" + "> };\n" + "> and then\n" + "> \n" + "> const nfs4_stateid invalid_stateid = {\n" + "> {\n" + "> {.seqid = 0xffffffffU,\n" + "> .other = { 0 } },\n" + "> },\n" + "> .type = NFS4_INVALID_STATEID_TYPE,\n" + "> };\n" + "> \n" + "> If I keep data[4] where it is now I get compiler error\n" + "> \n" + "> an.c:35:20: error: field name not in record or union initializer\n" + "> {.seqid = 0xffffffffU,\n" + "> ^\n" + "> an.c:35:20: note: (near initialization for \n" + "> 'invalid_stateid.<anonymous>.data')\n" + "> an.c:35:29: warning: overflow in implicit constant conversion [-\n" + "> Woverflow]\n" + "> {.seqid = 0xffffffffU,\n" + "> ^~~~~~~~~~~\n" + "> an.c:36:19: error: field name not in record or union initializer\n" + "> .other = { 0 } },\n" + "> ^\n" + "> an.c:36:19: note: (near initialization for \n" + "> 'invalid_stateid.<anonymous>.data')\n" + "> an.c:36:19: warning: braces around scalar initializer\n" + "> an.c:36:19: note: (near initialization for \n" + "> 'invalid_stateid.<anonymous>.data[1]')\n" + "> \n" + "> I don't know if you want to change public header file just to get\n" + "> around \n" + "> this problem.\n" + "\n" + "Sigh.... OK, how about something like the following then:\n" + "\n" + "{ .data = { 0xff, 0xff, 0xff, 0xff, 0 }, }\n" + "\n" + "-- \n" + "Trond Myklebust\n" + "Linux NFS client maintainer, PrimaryData\n" + trond.myklebust@primarydata.com -9a0ea470de1629d2127392c3defdb4f49b31dee12f5fabdfca9d63e4e1912cad +f19ccf544059ac5a049ff8c315417b1b972ddaa9925a996053514997d2a53a97
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.