• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/block/

Lines Matching defs:aic

163 static void free_as_io_context(struct as_io_context *aic)
165 kfree(aic);
173 if (ioc->aic)
174 free_as_io_context(ioc->aic);
175 ioc->aic = NULL;
179 static void exit_as_io_context(struct as_io_context *aic)
181 WARN_ON(!test_bit(AS_TASK_RUNNING, &aic->state));
182 clear_bit(AS_TASK_RUNNING, &aic->state);
216 if (ioc && !ioc->aic) {
217 ioc->aic = alloc_as_io_context();
218 if (!ioc->aic) {
228 struct as_io_context *aic;
233 aic = RQ_IOC(rq)->aic;
235 if (rq_is_sync(rq) && aic) {
236 spin_lock(&aic->lock);
237 set_bit(AS_TASK_IORUNNING, &aic->state);
238 aic->last_end_request = jiffies;
239 spin_unlock(&aic->lock);
465 struct as_io_context *aic = ad->io_context->aic;
470 if (aic->ttime_samples == 0) {
474 if (!test_bit(AS_TASK_RUNNING, &aic->state)) {
482 static void as_update_thinktime(struct as_data *ad, struct as_io_context *aic,
486 if (aic->ttime_samples == 0) {
492 aic->ttime_samples = (7*aic->ttime_samples + 256) / 8;
493 aic->ttime_total = (7*aic->ttime_total + 256*ttime) / 8;
494 aic->ttime_mean = (aic->ttime_total + 128) / aic->ttime_samples;
497 static void as_update_seekdist(struct as_data *ad, struct as_io_context *aic,
502 if (aic->seek_samples == 0) {
511 if (aic->seek_samples <= 60) /* second&third seek */
512 sdist = min(sdist, (aic->seek_mean * 4) + 2*1024*1024);
514 sdist = min(sdist, (aic->seek_mean * 4) + 2*1024*64);
516 aic->seek_samples = (7*aic->seek_samples + 256) / 8;
517 aic->seek_total = (7*aic->seek_total + (u64)256*sdist) / 8;
518 total = aic->seek_total + (aic->seek_samples/2);
519 do_div(total, aic->seek_samples);
520 aic->seek_mean = (sector_t)total;
525 * updates @aic->ttime_mean based on that. It is called when a new
528 static void as_update_iohist(struct as_data *ad, struct as_io_context *aic,
535 if (aic == NULL)
539 unsigned long in_flight = atomic_read(&aic->nr_queued)
540 + atomic_read(&aic->nr_dispatched);
541 spin_lock(&aic->lock);
542 if (test_bit(AS_TASK_IORUNNING, &aic->state) ||
543 test_bit(AS_TASK_IOSTARTED, &aic->state)) {
545 if (test_bit(AS_TASK_IORUNNING, &aic->state)
547 thinktime = jiffies - aic->last_end_request;
550 as_update_thinktime(ad, aic, thinktime);
553 if (aic->last_request_pos < rq->sector)
554 seek_dist = rq->sector - aic->last_request_pos;
556 seek_dist = aic->last_request_pos - rq->sector;
557 as_update_seekdist(ad, aic, seek_dist);
559 aic->last_request_pos = rq->sector + rq->nr_sectors;
560 set_bit(AS_TASK_IOSTARTED, &aic->state);
561 spin_unlock(&aic->lock);
569 static int as_close_req(struct as_data *ad, struct as_io_context *aic,
598 if (aic->seek_samples == 0) {
609 if (aic->seek_mean > s) {
634 struct as_io_context *aic;
652 aic = ioc->aic;
653 if (!aic)
656 if (atomic_read(&aic->nr_queued) > 0) {
661 if (atomic_read(&aic->nr_dispatched) > 0) {
666 if (rq && rq_is_sync(rq) && as_close_req(ad, aic, rq)) {
675 if (!test_bit(AS_TASK_RUNNING, &aic->state)) {
676 if (aic->ttime_samples == 0)
682 as_update_iohist(ad, aic, rq);
686 if (!test_bit(AS_TASK_RUNNING, &aic->state)) {
688 if (aic->ttime_samples == 0)
695 if (aic->ttime_samples == 0) {
700 } else if (aic->ttime_mean > ad->antic_expire) {
865 if (ioc && ioc->aic) {
866 BUG_ON(!atomic_read(&ioc->aic->nr_queued));
867 atomic_dec(&ioc->aic->nr_queued);
971 if (RQ_IOC(rq) && RQ_IOC(rq)->aic)
972 atomic_inc(&RQ_IOC(rq)->aic->nr_dispatched);
1154 as_update_iohist(ad, RQ_IOC(rq)->aic, rq);
1155 atomic_inc(&RQ_IOC(rq)->aic->nr_queued);
1174 if (RQ_IOC(rq) && RQ_IOC(rq)->aic)
1175 atomic_dec(&RQ_IOC(rq)->aic->nr_dispatched);
1182 if (RQ_IOC(rq) && RQ_IOC(rq)->aic)
1183 atomic_inc(&RQ_IOC(rq)->aic->nr_dispatched);