static void flashcache_free_pending_jobs(struct cache_c *dmc, struct cacheblock *cacheblk, int error) { struct pending_job *pending_job, *freelist = NULL; int index = cacheblk - &dmc->cache[0]; struct cache_set *cache_set = &dmc->cache_sets[index / dmc->assoc]; VERIFY(spin_is_locked(&cache_set->set_spin_lock)); freelist = flashcache_deq_pending(dmc, index); while (freelist != NULL) { pending_job = freelist; freelist = pending_job->next; VERIFY(cacheblk->nr_queued > 0); cacheblk->nr_queued--; flashcache_bio_endio(pending_job->bio, error, dmc, NULL); flashcache_free_pending_job(pending_job); } VERIFY(cacheblk->nr_queued == 0); }
代码测试
浙公网安备 33010602011771号