On 12/11/06, Linus Torvalds <torvalds@osdl.org> wrote: > > > On Mon, 11 Dec 2006, Lars Hjemli wrote: > > > > Ok. Code speeks louder than words, so I'll blatantly paste the key functions: > > Yeah, they're still buggy: > > > int cache_unlock(struct cacheitem *item) > > { > > close(item->fd); > > return (rename(fmt("%s.lock", item->name), item->name) == 0); > > } > ... > > if (!cache_exist(item)) { > > if (!cache_lock(item)) { > > sleep(1); > > goto top; > > } > > if (!cache_exist(item)) > > cgit_fill_cache(item); > > cache_unlock(item); > > What do you think happens if that last "cache_exist()" returned true? > > That's right: the "cache_unlock()" will now OVERWRITE the valid cache with > the (empty) lock-file that you didn't fill in. > > Oops. > Wow, that's embarrassing. Thanks for the debugging, I'll try to actually fix it this time :-) -- lars - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Tue Dec 12 05:39:06 2006
This archive was generated by hypermail 2.1.8 : 2006-12-12 05:40:54 EST