From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Holden Karau" Subject: Re: [PATCH 1/1] fat: improve sync performance by grouping writes revised again Date: Wed, 1 Nov 2006 17:17:48 -0500 Message-ID: References: <4548C8AE.2090603@pigscanfly.ca> <20061101164715.GC16154@wohnheim.fh-wedel.de> <20061101202400.GA6888@wohnheim.fh-wedel.de> <454908F9.80905@cfl.rr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: "=?ISO-8859-1?Q?J=F6rn_Engel?=" , "Josef Sipek" , hirofumi@mail.parknet.co.jp, linux-kernel@vger.kernel.org, "Holden Karau" , "akpm@osdl.org" , linux-fsdevel@vger.kernel.org, "Nick Piggin" , "Matthew Wilcox" Return-path: To: "Phillip Susi" In-Reply-To: <454908F9.80905@cfl.rr.com> Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Hi J=F6rn, If I do c_bh =3D kmalloc(blah); err=3D -ENOMEM; if (!c_bh) goto error; //here err =3D -ENOMEM =2E.. do some stuff... error: return err; It will return -ENOMEM, no? I mean I could set err back to 0 and do something like: c_bh =3D kmalloc(blah); err=3D -ENOMEM; if (!c_bh) goto error; err =3D 0; =2E.. do some stuf... error: return err; At first glance, at least for me, I'd be scratching my head when I looked at that. Also given that this error state is to be an exception not the rule, if what Phillip suggests is correct, than it would actually be a tiney be slower. So, all in all I'd rather leave it the way it is :-) On 11/1/06, Phillip Susi wrote: > I think this is getting into micro-optimization, which is usually bad= =2E > Also moving the assignment of err outside the body of the if only > results in slightly faster code in the case where there is an error, > since you can test and _maybe_ conditionally jump directly to the err= or: > label if it is not very far away. With the assignment in the body, t= he > conditional jump must jump to the assignment followed by an > unconditional jump to the label. > > In other words, the only time this micro optimization will be of bene= fit > is if you are erroring out most of the time rather than only under > exceptional conditions, AND the error label isn't too far away for a > conditional branch to reach. In other words, just don't do it ;) > > J=F6rn Engel wrote: > > On Wed, 1 November 2006 13:02:12 -0500, Holden Karau wrote: > >> On 11/1/06, J=F6rn Engel wrote: > >>> Result would be something like: > >>> c_bh =3D kmalloc(... > >>> err =3D -ENOMEM; > >>> if (!c_bh) > >>> goto error; > >> That wouldn't work so well since we always return err, > > > > I don't quite follow. If the branch is taken, err is -ENOMEM. If = the > > branch is not taken, err is set to 0 with the next instruction. > > > > Both methods definitely work. Whether one is preferrable over the > > other is imo 90% taste and maybe 10% better code on some architectu= re. > > So just pick what you prefer. > > > > J=F6rn > > > > - > To unsubscribe from this list: send the line "unsubscribe linux-fsdev= el" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > --=20 Cell: 613-276-1645