dm writecache: add cond_resched to avoid CPU hangs
Initializing a dm-writecache device can take a long time when the persistent memory device is large. Add cond_resched() to a few loops to avoid warnings that the CPU is stuck. Cc: stable@vger.kernel.org # v4.18+ Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
31843edab7
commit
1edaa447d9
|
@ -925,6 +925,7 @@ static int writecache_alloc_entries(struct dm_writecache *wc)
|
|||
struct wc_entry *e = &wc->entries[b];
|
||||
e->index = b;
|
||||
e->write_in_progress = false;
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -979,6 +980,7 @@ static void writecache_resume(struct dm_target *ti)
|
|||
e->original_sector = le64_to_cpu(wme.original_sector);
|
||||
e->seq_count = le64_to_cpu(wme.seq_count);
|
||||
}
|
||||
cond_resched();
|
||||
}
|
||||
#endif
|
||||
for (b = 0; b < wc->n_blocks; b++) {
|
||||
|
@ -1886,8 +1888,10 @@ static int init_memory(struct dm_writecache *wc)
|
|||
pmem_assign(sb(wc)->n_blocks, cpu_to_le64(wc->n_blocks));
|
||||
pmem_assign(sb(wc)->seq_count, cpu_to_le64(0));
|
||||
|
||||
for (b = 0; b < wc->n_blocks; b++)
|
||||
for (b = 0; b < wc->n_blocks; b++) {
|
||||
write_original_sector_seq_count(wc, &wc->entries[b], -1, -1);
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
writecache_flush_all_metadata(wc);
|
||||
writecache_commit_flushed(wc, false);
|
||||
|
|
Loading…
Reference in New Issue