• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/block/

Lines Matching refs:cic

205 static inline struct cfq_queue *cic_to_cfqq(struct cfq_io_context *cic,
208 return cic->cfqq[!!is_sync];
211 static inline void cic_set_cfqq(struct cfq_io_context *cic,
214 cic->cfqq[!!is_sync] = cfqq;
608 struct cfq_io_context *cic;
611 cic = cfq_cic_rb_lookup(cfqd, tsk->io_context);
612 if (!cic)
615 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
709 struct cfq_io_context *cic;
722 cic = cfq_cic_rb_lookup(cfqd, current->io_context);
723 if (!cic)
726 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
847 struct cfq_io_context *cic = cfqd->active_cic;
849 if (!sample_valid(cic->seek_samples))
852 return cfq_dist_from_last(cfqd, rq) <= cic->seek_mean;
866 #define CIC_SEEKY(cic) ((cic)->seek_mean > (8 * 1024))
871 struct cfq_io_context *cic;
886 cic = cfqd->active_cic;
887 if (!cic || !cic->ioc->task)
894 (sample_valid(cic->ttime_samples) && cic->ttime_mean > 2))
906 if (sample_valid(cic->seek_samples) && CIC_SEEKY(cic))
1194 struct cfq_io_context *cic)
1196 list_del_init(&cic->queue_list);
1198 cic->key = NULL;
1200 if (cic->cfqq[ASYNC]) {
1201 cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]);
1202 cic->cfqq[ASYNC] = NULL;
1205 if (cic->cfqq[SYNC]) {
1206 cfq_exit_cfqq(cfqd, cic->cfqq[SYNC]);
1207 cic->cfqq[SYNC] = NULL;
1211 static void cfq_exit_single_io_context(struct cfq_io_context *cic)
1213 struct cfq_data *cfqd = cic->key;
1219 __cfq_exit_single_io_context(cfqd, cic);
1250 struct cfq_io_context *cic;
1252 cic = kmem_cache_alloc_node(cfq_ioc_pool, gfp_mask, cfqd->queue->node);
1253 if (cic) {
1254 memset(cic, 0, sizeof(*cic));
1255 cic->last_end_request = jiffies;
1256 INIT_LIST_HEAD(&cic->queue_list);
1257 cic->dtor = cfq_free_io_context;
1258 cic->exit = cfq_exit_io_context;
1262 return cic;
1311 static inline void changed_ioprio(struct cfq_io_context *cic)
1313 struct cfq_data *cfqd = cic->key;
1322 cfqq = cic->cfqq[ASYNC];
1325 new_cfqq = cfq_get_queue(cfqd, ASYNC, cic->ioc->task,
1328 cic->cfqq[ASYNC] = new_cfqq;
1333 cfqq = cic->cfqq[SYNC];
1342 struct cfq_io_context *cic;
1349 cic = rb_entry(n, struct cfq_io_context, rb_node);
1351 changed_ioprio(cic);
1361 struct cfq_io_context *cic;
1364 cic = cfq_cic_rb_lookup(cfqd, tsk->io_context);
1365 /* cic always exists here */
1366 cfqq = cic_to_cfqq(cic, is_sync);
1421 cfq_drop_dead_cic(struct io_context *ioc, struct cfq_io_context *cic)
1423 WARN_ON(!list_empty(&cic->queue_list));
1425 if (ioc->ioc_data == cic)
1428 rb_erase(&cic->rb_node, &ioc->cic_root);
1429 kmem_cache_free(cfq_ioc_pool, cic);
1437 struct cfq_io_context *cic;
1446 cic = ioc->ioc_data;
1447 if (cic && cic->key == cfqd)
1448 return cic;
1453 cic = rb_entry(n, struct cfq_io_context, rb_node);
1455 k = cic->key;
1457 cfq_drop_dead_cic(ioc, cic);
1466 ioc->ioc_data = cic;
1467 return cic;
1476 struct cfq_io_context *cic)
1484 cic->ioc = ioc;
1485 cic->key = cfqd;
1500 if (cic->key < k)
1502 else if (cic->key > k)
1508 rb_link_node(&cic->rb_node, parent, p);
1509 rb_insert_color(&cic->rb_node, &ioc->cic_root);
1512 list_add(&cic->queue_list, &cfqd->cic_list);
1525 struct cfq_io_context *cic;
1533 cic = cfq_cic_rb_lookup(cfqd, ioc);
1534 if (cic)
1537 cic = cfq_alloc_io_context(cfqd, gfp_mask);
1538 if (cic == NULL)
1541 cfq_cic_link(cfqd, ioc, cic);
1547 return cic;
1554 cfq_update_io_thinktime(struct cfq_data *cfqd, struct cfq_io_context *cic)
1556 unsigned long elapsed = jiffies - cic->last_end_request;
1559 cic->ttime_samples = (7*cic->ttime_samples + 256) / 8;
1560 cic->ttime_total = (7*cic->ttime_total + 256*ttime) / 8;
1561 cic->ttime_mean = (cic->ttime_total + 128) / cic->ttime_samples;
1565 cfq_update_io_seektime(struct cfq_data *cfqd, struct cfq_io_context *cic,
1571 if (cic->last_request_pos < rq->sector)
1572 sdist = rq->sector - cic->last_request_pos;
1574 sdist = cic->last_request_pos - rq->sector;
1576 if (!cic->seek_samples) {
1577 cfqd->new_seek_total = (7*cic->seek_total + (u64)256*sdist) / 8;
1585 if (cic->seek_samples <= 60) /* second&third seek */
1586 sdist = min(sdist, (cic->seek_mean * 4) + 2*1024*1024);
1588 sdist = min(sdist, (cic->seek_mean * 4) + 2*1024*64);
1590 cic->seek_samples = (7*cic->seek_samples + 256) / 8;
1591 cic->seek_total = (7*cic->seek_total + (u64)256*sdist) / 8;
1592 total = cic->seek_total + (cic->seek_samples/2);
1593 do_div(total, cic->seek_samples);
1594 cic->seek_mean = (sector_t)total;
1603 struct cfq_io_context *cic)
1612 if (!cic->ioc->task || !cfqd->cfq_slice_idle ||
1613 (cfqd->hw_tag && CIC_SEEKY(cic)))
1615 else if (sample_valid(cic->ttime_samples)) {
1616 if (cic->ttime_mean > cfqd->cfq_slice_idle)
1706 struct cfq_io_context *cic = RQ_CIC(rq);
1711 cfq_update_io_thinktime(cfqd, cic);
1712 cfq_update_io_seektime(cfqd, cic, rq);
1713 cfq_update_idle_window(cfqd, cfqq, cic);
1715 cic->last_request_pos = rq->sector + rq->nr_sectors;
1716 cfqq->last_request_pos = cic->last_request_pos;
1838 struct cfq_io_context *cic;
1847 cic = cfq_cic_rb_lookup(cfqd, tsk->io_context);
1848 if (!cic)
1851 cfqq = cic_to_cfqq(cic, rw & REQ_RW_SYNC);
1892 struct cfq_io_context *cic;
1900 cic = cfq_get_io_context(cfqd, gfp_mask);
1904 if (!cic)
1907 cfqq = cic_to_cfqq(cic, is_sync);
1914 cic_set_cfqq(cic, cfqq, is_sync);
1923 rq->elevator_private = cic;
1928 if (cic)
1929 put_io_context(cic->ioc);
2034 struct cfq_io_context *cic = list_entry(cfqd->cic_list.next,
2038 __cfq_exit_single_io_context(cfqd, cic);