Commit 518bbc61 authored by Zardosht Kasheff's avatar Zardosht Kasheff Committed by Yoni Fogel

[t:4258], address cr comments from 12/9 meeting

git-svn-id: file:///svn/toku/tokudb@37787 c7de825b-a66e-492c-adef-691d508d4ae1
parent 31c791fe
...@@ -43,11 +43,11 @@ typedef struct blocknum_s { int64_t b; } BLOCKNUM; // make a struct so that we w ...@@ -43,11 +43,11 @@ typedef struct blocknum_s { int64_t b; } BLOCKNUM; // make a struct so that we w
static inline BLOCKNUM make_blocknum(int64_t b) { BLOCKNUM result={b}; return result; } static inline BLOCKNUM make_blocknum(int64_t b) { BLOCKNUM result={b}; return result; }
typedef struct pair_attr_s { typedef struct pair_attr_s {
long size; long size; // size PAIR's value takes in memory
long nonleaf_size; long nonleaf_size; // size if PAIR is a nonleaf node, 0 otherwise
long leaf_size; long leaf_size; // size if PAIR is a leaf node, 0 otherwise
long rollback_size; long rollback_size; // size of PAIR is a rollback node, 0 otherwise
long cache_pressure_size; long cache_pressure_size; // amount PAIR contributes to cache pressure, is sum of buffer sizes and workdone counts
} PAIR_ATTR; } PAIR_ATTR;
static inline PAIR_ATTR make_pair_attr(long size) { static inline PAIR_ATTR make_pair_attr(long size) {
......
...@@ -1251,7 +1251,7 @@ static void cachetable_maybe_remove_and_free_pair (CACHETABLE ct, PAIR p, BOOL* ...@@ -1251,7 +1251,7 @@ static void cachetable_maybe_remove_and_free_pair (CACHETABLE ct, PAIR p, BOOL*
} }
// Read a pair from a cachefile into memory using the pair's fetch callback // Read a pair from a cachefile into memory using the pair's fetch callback
static int cachetable_fetch_pair( static void cachetable_fetch_pair(
CACHETABLE ct, CACHETABLE ct,
CACHEFILE cf, CACHEFILE cf,
PAIR p, PAIR p,
...@@ -1274,8 +1274,8 @@ static int cachetable_fetch_pair( ...@@ -1274,8 +1274,8 @@ static int cachetable_fetch_pair(
cachetable_unlock(ct); cachetable_unlock(ct);
int r; int r;
if (toku_cachefile_is_dev_null_unlocked(cf)) r = -1; assert(!toku_cachefile_is_dev_null_unlocked(cf));
else r = fetch_callback(cf, cf->fd, key, fullhash, &toku_value, &attr, &dirty, read_extraargs); r = fetch_callback(cf, cf->fd, key, fullhash, &toku_value, &attr, &dirty, read_extraargs);
if (dirty) if (dirty)
p->dirty = CACHETABLE_DIRTY; p->dirty = CACHETABLE_DIRTY;
...@@ -1292,13 +1292,11 @@ static int cachetable_fetch_pair( ...@@ -1292,13 +1292,11 @@ static int cachetable_fetch_pair(
if (p->cq) { if (p->cq) {
workitem_init(&p->asyncwork, NULL, p); workitem_init(&p->asyncwork, NULL, p);
workqueue_enq(p->cq, &p->asyncwork, 1); workqueue_enq(p->cq, &p->asyncwork, 1);
return 0;
} }
p->state = CTPAIR_IDLE; p->state = CTPAIR_IDLE;
nb_mutex_write_unlock(&p->nb_mutex); nb_mutex_write_unlock(&p->nb_mutex);
if (0) printf("%s:%d %"PRId64" complete\n", __FUNCTION__, __LINE__, key.b); if (0) printf("%s:%d %"PRId64" complete\n", __FUNCTION__, __LINE__, key.b);
return 0;
} }
static void cachetable_complete_write_pair (CACHETABLE ct, PAIR p, BOOL do_remove, BOOL* destroyed); static void cachetable_complete_write_pair (CACHETABLE ct, PAIR p, BOOL do_remove, BOOL* destroyed);
...@@ -2125,8 +2123,7 @@ int toku_cachetable_get_and_pin_with_dep_pairs ( ...@@ -2125,8 +2123,7 @@ int toku_cachetable_get_and_pin_with_dep_pairs (
nb_mutex_write_lock(&p->nb_mutex, ct->mutex); nb_mutex_write_lock(&p->nb_mutex, ct->mutex);
uint64_t t0 = get_tnow(); uint64_t t0 = get_tnow();
r = cachetable_fetch_pair(ct, cachefile, p, fetch_callback, read_extraargs); cachetable_fetch_pair(ct, cachefile, p, fetch_callback, read_extraargs);
assert(r==0);
cachetable_miss++; cachetable_miss++;
cachetable_misstime += get_tnow() - t0; cachetable_misstime += get_tnow() - t0;
nb_mutex_write_lock(&p->nb_mutex, ct->mutex); nb_mutex_write_lock(&p->nb_mutex, ct->mutex);
...@@ -2439,13 +2436,12 @@ int toku_cachetable_get_and_pin_nonblocking ( ...@@ -2439,13 +2436,12 @@ int toku_cachetable_get_and_pin_nonblocking (
run_unlockers(unlockers); // we hold the ct mutex. run_unlockers(unlockers); // we hold the ct mutex.
if (ct->ydb_unlock_callback) ct->ydb_unlock_callback(); if (ct->ydb_unlock_callback) ct->ydb_unlock_callback();
u_int64_t t0 = get_tnow(); u_int64_t t0 = get_tnow();
int r = cachetable_fetch_pair(ct, cf, p, fetch_callback, read_extraargs); cachetable_fetch_pair(ct, cf, p, fetch_callback, read_extraargs);
cachetable_miss++; cachetable_miss++;
cachetable_misstime += get_tnow() - t0; cachetable_misstime += get_tnow() - t0;
cachetable_unlock(ct); cachetable_unlock(ct);
if (ct->ydb_lock_callback) ct->ydb_lock_callback(); if (ct->ydb_lock_callback) ct->ydb_lock_callback();
if (r!=0) return r; return TOKUDB_TRY_AGAIN;
else return TOKUDB_TRY_AGAIN;
} }
struct cachefile_prefetch_args { struct cachefile_prefetch_args {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment