On 07/27/2012 08:01 PM, levin li wrote: > +retry: > if (sys->enable_write_cache && object_is_cached(oid)) { > ret = object_cache_write(oid, data, datalen, offset, > flags, create); > + if (ret == SD_RES_NO_CACHE) > + goto retry; > + > if (ret != 0) { > eprintf("write cache failed %"PRIx64" %"PRIx32"\n", > oid, ret); > @@ -529,8 +533,12 @@ int read_object(uint64_t oid, char *data, unsigned int datalen, > struct sd_req hdr; > int ret; > > +retry: > if (sys->enable_write_cache && object_is_cached(oid)) { > ret = object_cache_read(oid, data, datalen, offset); > + if (ret == SD_RES_NO_CACHE) > + goto retry; > + > if (ret != SD_RES_SUCCESS) { > eprintf("try forward read %"PRIx64" %"PRIx32"\n", > oid, ret); we don't need goto retry, just break out and read/write the backend store if ret == SD_RES_NO_CACHE. -- thanks, Yuan |