mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
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 @@ retry_invalidate:
|
|||||||
* new stuff to them:
|
* new stuff to them:
|
||||||
*/
|
*/
|
||||||
allocator_wait(ca, !atomic_read(&ca->set->prio_blocked));
|
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
|
* This could deadlock if an allocation with a btree
|
||||||
* node locked ever blocked - having the btree node
|
* 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)))
|
if (unlikely(test_bit(CACHE_SET_IO_DISABLE, &c->flags)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!CACHE_SYNC(&c->sb))
|
if (!CACHE_SYNC(&c->cache->sb))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
w = journal_wait_for_write(c, bch_keylist_nkeys(keys));
|
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;
|
c->nbuckets = ca->sb.nbuckets;
|
||||||
set_gc_sectors(c);
|
set_gc_sectors(c);
|
||||||
|
|
||||||
if (CACHE_SYNC(&c->sb)) {
|
if (CACHE_SYNC(&c->cache->sb)) {
|
||||||
struct bkey *k;
|
struct bkey *k;
|
||||||
struct jset *j;
|
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
|
* everything is set up - fortunately journal entries won't be
|
||||||
* written until the SET_CACHE_SYNC() here:
|
* 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_next(&c->journal);
|
||||||
bch_journal_meta(c, &cl);
|
bch_journal_meta(c, &cl);
|
||||||
@ -2138,9 +2138,6 @@ static const char *register_cache_set(struct cache *ca)
|
|||||||
if (c->cache)
|
if (c->cache)
|
||||||
return "duplicate cache set member";
|
return "duplicate cache set member";
|
||||||
|
|
||||||
if (!CACHE_SYNC(&ca->sb))
|
|
||||||
SET_CACHE_SYNC(&c->sb, false);
|
|
||||||
|
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ SHOW(__bch_cache_set)
|
|||||||
{
|
{
|
||||||
struct cache_set *c = container_of(kobj, struct cache_set, kobj);
|
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_print(journal_delay_ms, c->journal_delay_ms);
|
||||||
sysfs_hprint(bucket_size, bucket_bytes(c->cache));
|
sysfs_hprint(bucket_size, bucket_bytes(c->cache));
|
||||||
sysfs_hprint(block_size, block_bytes(c->cache));
|
sysfs_hprint(block_size, block_bytes(c->cache));
|
||||||
@ -812,8 +812,8 @@ STORE(__bch_cache_set)
|
|||||||
if (attr == &sysfs_synchronous) {
|
if (attr == &sysfs_synchronous) {
|
||||||
bool sync = strtoul_or_return(buf);
|
bool sync = strtoul_or_return(buf);
|
||||||
|
|
||||||
if (sync != CACHE_SYNC(&c->sb)) {
|
if (sync != CACHE_SYNC(&c->cache->sb)) {
|
||||||
SET_CACHE_SYNC(&c->sb, sync);
|
SET_CACHE_SYNC(&c->cache->sb, sync);
|
||||||
bcache_write_super(c);
|
bcache_write_super(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user