On Fri, Aug 30, 2019 at 04:43:33PM +0800, Gao Xiang wrote: > Hi Dan, > > On Fri, Aug 30, 2019 at 11:34:45AM +0300, Dan Carpenter wrote: > > On Fri, Aug 30, 2019 at 12:04:41AM +0800, Gao Xiang wrote: > > > Anyway, I'm fine to delete them all if you like, but I think majority of > > > these > > > are meaningful. > > > > > > data.c- /* page is already locked */ > > > data.c- DBG_BUGON(PageUptodate(page)); > > > data.c- > > > data.c: if (unlikely(err)) > > > data.c- SetPageError(page); > > > data.c- else > > > data.c- SetPageUptodate(page); > > > > If we cared about speed here then we would delete the DBG_BUGON() check > > because that's going to be expensive. The likely/unlikely annotations > > should be used in places a reasonable person thinks it will make a > > difference to benchmarks. > > DBG_BUGON will be a no-op ((void)x) in non-debugging mode,
It expands to: ((void)PageUptodate(page)); Calling PageUptodate() doesn't do anything, but it isn't free. The time it takes to do that function call completely negates any speed up from using likely/unlikely. I'm really not trying to be a jerk... regards, dan carpenter