bcache: check and set sync status on cache's in-memory super block
Currently the cache's sync status is checked and set on cache set's in- memory partial super block. After removing the embedded struct cache_sb from cache set and reference cache's in-memory super block from struct cache_set, the sync status can set and check directly on cache's super block. This patch checks and sets the cache sync status directly on cache's in-memory super block. This is a preparation for later removing embedded struct cache_sb from struct cache_set. Signed-off-by: Coly Li <colyli@suse.de> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ebaa1ac12b
commit
6f9414e0f6
|
@ -361,7 +361,7 @@ static int bch_allocator_thread(void *arg)
|
|||
* new stuff to them:
|
||||
*/
|
||||
allocator_wait(ca, !atomic_read(&ca->set->prio_blocked));
|
||||
if (CACHE_SYNC(&ca->set->sb)) {
|
||||
if (CACHE_SYNC(&ca->sb)) {
|
||||
/*
|
||||
* This could deadlock if an allocation with a btree
|
||||
* node locked ever blocked - having the btree node
|
||||
|
|
|
@ -915,7 +915,7 @@ atomic_t *bch_journal(struct cache_set *c,
|
|||
if (unlikely(test_bit(CACHE_SET_IO_DISABLE, &c->flags)))
|
||||
return NULL;
|
||||
|
||||
if (!CACHE_SYNC(&c->sb))
|
||||
if (!CACHE_SYNC(&c->cache->sb))
|
||||
return NULL;
|
||||
|
||||
w = journal_wait_for_write(c, bch_keylist_nkeys(keys));
|
||||
|
|
|
@ -1969,7 +1969,7 @@ static int run_cache_set(struct cache_set *c)
|
|||
c->nbuckets = ca->sb.nbuckets;
|
||||
set_gc_sectors(c);
|
||||
|
||||
if (CACHE_SYNC(&c->sb)) {
|
||||
if (CACHE_SYNC(&c->cache->sb)) {
|
||||
struct bkey *k;
|
||||
struct jset *j;
|
||||
|
||||
|
@ -2092,7 +2092,7 @@ static int run_cache_set(struct cache_set *c)
|
|||
* everything is set up - fortunately journal entries won't be
|
||||
* written until the SET_CACHE_SYNC() here:
|
||||
*/
|
||||
SET_CACHE_SYNC(&c->sb, true);
|
||||
SET_CACHE_SYNC(&c->cache->sb, true);
|
||||
|
||||
bch_journal_next(&c->journal);
|
||||
bch_journal_meta(c, &cl);
|
||||
|
@ -2138,9 +2138,6 @@ static const char *register_cache_set(struct cache *ca)
|
|||
if (c->cache)
|
||||
return "duplicate cache set member";
|
||||
|
||||
if (!CACHE_SYNC(&ca->sb))
|
||||
SET_CACHE_SYNC(&c->sb, false);
|
||||
|
||||
goto found;
|
||||
}
|
||||
|
||||
|
|
|
@ -711,7 +711,7 @@ SHOW(__bch_cache_set)
|
|||
{
|
||||
struct cache_set *c = container_of(kobj, struct cache_set, kobj);
|
||||
|
||||
sysfs_print(synchronous, CACHE_SYNC(&c->sb));
|
||||
sysfs_print(synchronous, CACHE_SYNC(&c->cache->sb));
|
||||
sysfs_print(journal_delay_ms, c->journal_delay_ms);
|
||||
sysfs_hprint(bucket_size, bucket_bytes(c->cache));
|
||||
sysfs_hprint(block_size, block_bytes(c->cache));
|
||||
|
@ -812,8 +812,8 @@ STORE(__bch_cache_set)
|
|||
if (attr == &sysfs_synchronous) {
|
||||
bool sync = strtoul_or_return(buf);
|
||||
|
||||
if (sync != CACHE_SYNC(&c->sb)) {
|
||||
SET_CACHE_SYNC(&c->sb, sync);
|
||||
if (sync != CACHE_SYNC(&c->cache->sb)) {
|
||||
SET_CACHE_SYNC(&c->cache->sb, sync);
|
||||
bcache_write_super(c);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user