• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/block/

Lines Matching refs:cic

446 static inline struct cfq_queue *cic_to_cfqq(struct cfq_io_context *cic,
449 return cic->cfqq[is_sync];
452 static inline void cic_set_cfqq(struct cfq_io_context *cic,
455 cic->cfqq[is_sync] = cfqq;
466 static inline struct cfq_data *cic_to_cfqd(struct cfq_io_context *cic)
468 struct cfq_data *cfqd = cic->key;
1472 struct cfq_io_context *cic;
1475 cic = cfq_cic_lookup(cfqd, tsk->io_context);
1476 if (!cic)
1479 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
1586 struct cfq_io_context *cic;
1599 cic = cfq_cic_lookup(cfqd, current->io_context);
1600 if (!cic)
1603 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
1904 struct cfq_io_context *cic;
1938 cic = cfqd->active_cic;
1939 if (!cic || !atomic_read(&cic->ioc->nr_tasks))
1947 if (sample_valid(cic->ttime_samples) &&
1948 (cfqq->slice_end - jiffies < cic->ttime_mean)) {
1950 cic->ttime_mean);
2469 struct cfq_io_context *cic = RQ_CIC(rq);
2471 atomic_long_inc(&cic->ioc->refcount);
2472 cfqd->active_cic = cic;
2563 struct cfq_io_context *cic;
2566 hlist_for_each_entry_rcu(cic, n, &ioc->cic_list, cic_list)
2567 func(ioc, cic);
2571 * Call func for each cic attached to this ioc.
2584 struct cfq_io_context *cic;
2586 cic = container_of(head, struct cfq_io_context, rcu_head);
2588 kmem_cache_free(cfq_ioc_pool, cic);
2606 static void cfq_cic_free(struct cfq_io_context *cic)
2608 call_rcu(&cic->rcu_head, cfq_cic_free_rcu);
2611 static void cic_free_func(struct io_context *ioc, struct cfq_io_context *cic)
2614 unsigned long dead_key = (unsigned long) cic->key;
2620 hlist_del_rcu(&cic->cic_list);
2623 cfq_cic_free(cic);
2635 * so no more cic's are allowed to be linked into this ioc. So it
2636 * should be ok to iterate over the known list, we will see all cic's
2676 struct cfq_io_context *cic)
2678 struct io_context *ioc = cic->ioc;
2680 list_del_init(&cic->queue_list);
2686 cic->key = cfqd_dead_key(cfqd);
2688 if (ioc->ioc_data == cic)
2691 if (cic->cfqq[BLK_RW_ASYNC]) {
2692 cfq_exit_cfqq(cfqd, cic->cfqq[BLK_RW_ASYNC]);
2693 cic->cfqq[BLK_RW_ASYNC] = NULL;
2696 if (cic->cfqq[BLK_RW_SYNC]) {
2697 cfq_exit_cfqq(cfqd, cic->cfqq[BLK_RW_SYNC]);
2698 cic->cfqq[BLK_RW_SYNC] = NULL;
2703 struct cfq_io_context *cic)
2705 struct cfq_data *cfqd = cic_to_cfqd(cic);
2718 if (cic->key == cfqd)
2719 __cfq_exit_single_io_context(cfqd, cic);
2737 struct cfq_io_context *cic;
2739 cic = kmem_cache_alloc_node(cfq_ioc_pool, gfp_mask | __GFP_ZERO,
2741 if (cic) {
2742 cic->last_end_request = jiffies;
2743 INIT_LIST_HEAD(&cic->queue_list);
2744 INIT_HLIST_NODE(&cic->cic_list);
2745 cic->dtor = cfq_free_io_context;
2746 cic->exit = cfq_exit_io_context;
2750 return cic;
2796 static void changed_ioprio(struct io_context *ioc, struct cfq_io_context *cic)
2798 struct cfq_data *cfqd = cic_to_cfqd(cic);
2807 cfqq = cic->cfqq[BLK_RW_ASYNC];
2810 new_cfqq = cfq_get_queue(cfqd, BLK_RW_ASYNC, cic->ioc,
2813 cic->cfqq[BLK_RW_ASYNC] = new_cfqq;
2818 cfqq = cic->cfqq[BLK_RW_SYNC];
2852 static void changed_cgroup(struct io_context *ioc, struct cfq_io_context *cic)
2854 struct cfq_queue *sync_cfqq = cic_to_cfqq(cic, 1);
2855 struct cfq_data *cfqd = cic_to_cfqd(cic);
2872 cic_set_cfqq(cic, NULL, 1);
2891 struct cfq_io_context *cic;
2896 cic = cfq_cic_lookup(cfqd, ioc);
2897 /* cic always exists here */
2898 cfqq = cic_to_cfqq(cic, is_sync);
2987 struct cfq_io_context *cic)
2991 WARN_ON(!list_empty(&cic->queue_list));
2992 BUG_ON(cic->key != cfqd_dead_key(cfqd));
2996 BUG_ON(ioc->ioc_data == cic);
2999 hlist_del_rcu(&cic->cic_list);
3002 cfq_cic_free(cic);
3008 struct cfq_io_context *cic;
3019 cic = rcu_dereference(ioc->ioc_data);
3020 if (cic && cic->key == cfqd) {
3022 return cic;
3026 cic = radix_tree_lookup(&ioc->radix_root, cfqd->cic_index);
3028 if (!cic)
3030 if (unlikely(cic->key != cfqd)) {
3031 cfq_drop_dead_cic(cfqd, ioc, cic);
3037 rcu_assign_pointer(ioc->ioc_data, cic);
3042 return cic;
3046 * Add cic into ioc, using cfqd as the search key. This enables us to lookup
3048 * Also adds the cic to a per-cfqd list, used when this queue is removed.
3051 struct cfq_io_context *cic, gfp_t gfp_mask)
3058 cic->ioc = ioc;
3059 cic->key = cfqd;
3063 cfqd->cic_index, cic);
3065 hlist_add_head_rcu(&cic->cic_list, &ioc->cic_list);
3072 list_add(&cic->queue_list, &cfqd->cic_list);
3078 printk(KERN_ERR "cfq: cic link failed!\n");
3092 struct cfq_io_context *cic;
3100 cic = cfq_cic_lookup(cfqd, ioc);
3101 if (cic)
3104 cic = cfq_alloc_io_context(cfqd, gfp_mask);
3105 if (cic == NULL)
3108 if (cfq_cic_link(cfqd, ioc, cic, gfp_mask))
3120 return cic;
3122 cfq_cic_free(cic);
3129 cfq_update_io_thinktime(struct cfq_data *cfqd, struct cfq_io_context *cic)
3131 unsigned long elapsed = jiffies - cic->last_end_request;
3134 cic->ttime_samples = (7*cic->ttime_samples + 256) / 8;
3135 cic->ttime_total = (7*cic->ttime_total + 256*ttime) / 8;
3136 cic->ttime_mean = (cic->ttime_total + 128) / cic->ttime_samples;
3165 struct cfq_io_context *cic)
3180 if (!atomic_read(&cic->ioc->nr_tasks) || !cfqd->cfq_slice_idle ||
3183 else if (sample_valid(cic->ttime_samples)) {
3184 if (cic->ttime_mean > cfqd->cfq_slice_idle)
3300 struct cfq_io_context *cic = RQ_CIC(rq);
3306 cfq_update_io_thinktime(cfqd, cic);
3308 cfq_update_idle_window(cfqd, cfqq, cic);
3403 struct cfq_io_context *cic = cfqd->active_cic;
3417 if (cic && sample_valid(cic->ttime_samples)
3418 && (cfqq->slice_end - jiffies < cic->ttime_mean))
3557 struct cfq_io_context *cic;
3566 cic = cfq_cic_lookup(cfqd, tsk->io_context);
3567 if (!cic)
3570 cfqq = cic_to_cfqq(cic, rw_is_sync(rw));
3572 cfq_init_prio_data(cfqq, cic->ioc);
3608 cfq_merge_cfqqs(struct cfq_data *cfqd, struct cfq_io_context *cic,
3612 cic_set_cfqq(cic, cfqq->new_cfqq, 1);
3615 return cic_to_cfqq(cic, 1);
3623 split_cfqq(struct cfq_io_context *cic, struct cfq_queue *cfqq)
3632 cic_set_cfqq(cic, NULL, 1);
3646 struct cfq_io_context *cic;
3654 cic = cfq_get_io_context(cfqd, gfp_mask);
3658 if (!cic)
3662 cfqq = cic_to_cfqq(cic, is_sync);
3664 cfqq = cfq_get_queue(cfqd, is_sync, cic->ioc, gfp_mask);
3665 cic_set_cfqq(cic, cfqq, is_sync);
3672 cfqq = split_cfqq(cic, cfqq);
3684 cfqq = cfq_merge_cfqqs(cfqd, cic, cfqq);
3692 rq->elevator_private = cic;
3698 if (cic)
3699 put_io_context(cic->ioc);
3813 struct cfq_io_context *cic = list_entry(cfqd->cic_list.next,
3817 __cfq_exit_single_io_context(cfqd, cic);