1 static void
2 flashcache_free_pending_jobs(struct cache_c *dmc, struct cacheblock *cacheblk,
3 int error)
4 {
5 struct pending_job *pending_job, *freelist = NULL;
6 int index = cacheblk - &dmc->cache[0];
7 struct cache_set *cache_set = &dmc->cache_sets[index / dmc->assoc];
8
9 VERIFY(spin_is_locked(&cache_set->set_spin_lock));
10 freelist = flashcache_deq_pending(dmc, index);
11 while (freelist != NULL) {
12 pending_job = freelist;
13 freelist = pending_job->next;
14 VERIFY(cacheblk->nr_queued > 0);
15 cacheblk->nr_queued--;
16 flashcache_bio_endio(pending_job->bio, error, dmc, NULL);
17 flashcache_free_pending_job(pending_job);
18 }
19 VERIFY(cacheblk->nr_queued == 0);
20 }
代码测试
代码测试
代码测试
代码测试
