diff options
| -rw-r--r-- | drivers/md/dm-cache-target.c | 13 | 
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index c8a160b37412..408dd276d6c9 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c @@ -2061,7 +2061,6 @@ static void process_deferred_writethrough_bios(struct cache *cache)  static void writeback_some_dirty_blocks(struct cache *cache)  { -	int r = 0;  	dm_oblock_t oblock;  	dm_cblock_t cblock;  	struct prealloc structs; @@ -2071,15 +2070,11 @@ static void writeback_some_dirty_blocks(struct cache *cache)  	memset(&structs, 0, sizeof(structs));  	while (spare_migration_bandwidth(cache)) { -		if (prealloc_data_structs(cache, &structs)) -			break; - -		r = policy_writeback_work(cache->policy, &oblock, &cblock, busy); -		if (r) -			break; +		if (policy_writeback_work(cache->policy, &oblock, &cblock, busy)) +			break; /* no work to do */ -		r = get_cell(cache, oblock, &structs, &old_ocell); -		if (r) { +		if (prealloc_data_structs(cache, &structs) || +		    get_cell(cache, oblock, &structs, &old_ocell)) {  			policy_set_dirty(cache->policy, oblock);  			break;  		}  | 
