Lines Matching refs:ctl

425 	struct ncp_cache_control ctl;  in ncp_readdir()  local
429 ctl.page = NULL; in ncp_readdir()
430 ctl.cache = NULL; in ncp_readdir()
447 ctl.cache = cache = kmap(page); in ncp_readdir()
448 ctl.head = cache->head; in ncp_readdir()
450 if (!PageUptodate(page) || !ctl.head.eof) in ncp_readdir()
454 if (jiffies - ctl.head.time >= NCP_MAX_AGE(server)) in ncp_readdir()
459 if ((!mtime) || (mtime != ctl.head.mtime)) in ncp_readdir()
463 if (ctx->pos > ctl.head.end) in ncp_readdir()
466 ctl.fpos = ctx->pos + (NCP_DIRCACHE_START - 2); in ncp_readdir()
467 ctl.ofs = ctl.fpos / NCP_DIRCACHE_SIZE; in ncp_readdir()
468 ctl.idx = ctl.fpos % NCP_DIRCACHE_SIZE; in ncp_readdir()
471 if (ctl.ofs != 0) { in ncp_readdir()
472 ctl.page = find_lock_page(&inode->i_data, ctl.ofs); in ncp_readdir()
473 if (!ctl.page) in ncp_readdir()
475 ctl.cache = kmap(ctl.page); in ncp_readdir()
476 if (!PageUptodate(ctl.page)) in ncp_readdir()
479 while (ctl.idx < NCP_DIRCACHE_SIZE) { in ncp_readdir()
488 dent = ctl.cache->dentry[ctl.idx]; in ncp_readdir()
505 ctl.idx += 1; in ncp_readdir()
506 if (ctx->pos > ctl.head.end) in ncp_readdir()
509 if (ctl.page) { in ncp_readdir()
510 kunmap(ctl.page); in ncp_readdir()
511 SetPageUptodate(ctl.page); in ncp_readdir()
512 unlock_page(ctl.page); in ncp_readdir()
513 page_cache_release(ctl.page); in ncp_readdir()
514 ctl.page = NULL; in ncp_readdir()
516 ctl.idx = 0; in ncp_readdir()
517 ctl.ofs += 1; in ncp_readdir()
520 if (ctl.page) { in ncp_readdir()
521 kunmap(ctl.page); in ncp_readdir()
522 unlock_page(ctl.page); in ncp_readdir()
523 page_cache_release(ctl.page); in ncp_readdir()
524 ctl.page = NULL; in ncp_readdir()
526 ctl.cache = cache; in ncp_readdir()
533 ctl.head.mtime = mtime; in ncp_readdir()
534 ctl.head.time = jiffies; in ncp_readdir()
535 ctl.head.eof = 0; in ncp_readdir()
536 ctl.fpos = 2; in ncp_readdir()
537 ctl.ofs = 0; in ncp_readdir()
538 ctl.idx = NCP_DIRCACHE_START; in ncp_readdir()
539 ctl.filled = 0; in ncp_readdir()
540 ctl.valid = 1; in ncp_readdir()
546 ncp_read_volume_list(file, ctx, &ctl); in ncp_readdir()
548 ncp_do_readdir(file, ctx, &ctl); in ncp_readdir()
550 ctl.head.end = ctl.fpos - 1; in ncp_readdir()
551 ctl.head.eof = ctl.valid; in ncp_readdir()
553 if (ctl.page) { in ncp_readdir()
554 kunmap(ctl.page); in ncp_readdir()
555 SetPageUptodate(ctl.page); in ncp_readdir()
556 unlock_page(ctl.page); in ncp_readdir()
557 page_cache_release(ctl.page); in ncp_readdir()
560 cache->head = ctl.head; in ncp_readdir()
584 struct ncp_cache_control ctl = *ctrl; in ncp_fill_cache() local
647 if (ctl.idx >= NCP_DIRCACHE_SIZE) { in ncp_fill_cache()
648 if (ctl.page) { in ncp_fill_cache()
649 kunmap(ctl.page); in ncp_fill_cache()
650 SetPageUptodate(ctl.page); in ncp_fill_cache()
651 unlock_page(ctl.page); in ncp_fill_cache()
652 page_cache_release(ctl.page); in ncp_fill_cache()
654 ctl.cache = NULL; in ncp_fill_cache()
655 ctl.idx -= NCP_DIRCACHE_SIZE; in ncp_fill_cache()
656 ctl.ofs += 1; in ncp_fill_cache()
657 ctl.page = grab_cache_page(&dir->i_data, ctl.ofs); in ncp_fill_cache()
658 if (ctl.page) in ncp_fill_cache()
659 ctl.cache = kmap(ctl.page); in ncp_fill_cache()
661 if (ctl.cache) { in ncp_fill_cache()
664 ctl.cache->dentry[ctl.idx] = newdent; in ncp_fill_cache()
673 ctl.valid = 0; in ncp_fill_cache()
674 if (!ctl.filled && (ctl.fpos == ctx->pos)) { in ncp_fill_cache()
677 ctl.filled = !dir_emit(ctx, qname.name, qname.len, in ncp_fill_cache()
679 if (!ctl.filled) in ncp_fill_cache()
682 ctl.fpos += 1; in ncp_fill_cache()
683 ctl.idx += 1; in ncp_fill_cache()
684 *ctrl = ctl; in ncp_fill_cache()
685 return (ctl.valid || !ctl.filled); in ncp_fill_cache()
690 struct ncp_cache_control *ctl) in ncp_read_volume_list() argument
718 if (!ncp_fill_cache(file, ctx, ctl, &entry, inval_dentry)) in ncp_read_volume_list()
725 struct ncp_cache_control *ctl) in ncp_do_readdir() argument
777 if (!ncp_fill_cache(file, ctx, ctl, &entry, 0)) in ncp_do_readdir()