Lines Matching refs:cookie
23 bool __fscache_check_page_write(struct fscache_cookie *cookie, struct page *page) in __fscache_check_page_write() argument
28 val = radix_tree_lookup(&cookie->stores, page->index); in __fscache_check_page_write()
38 void __fscache_wait_on_page_write(struct fscache_cookie *cookie, struct page *page) in __fscache_wait_on_page_write() argument
40 wait_queue_head_t *wq = bit_waitqueue(&cookie->flags, 0); in __fscache_wait_on_page_write()
42 wait_event(*wq, !__fscache_check_page_write(cookie, page)); in __fscache_wait_on_page_write()
51 bool release_page_wait_timeout(struct fscache_cookie *cookie, struct page *page) in release_page_wait_timeout() argument
53 wait_queue_head_t *wq = bit_waitqueue(&cookie->flags, 0); in release_page_wait_timeout()
55 return wait_event_timeout(*wq, !__fscache_check_page_write(cookie, page), in release_page_wait_timeout()
63 bool __fscache_maybe_release_page(struct fscache_cookie *cookie, in __fscache_maybe_release_page() argument
70 _enter("%p,%p,%x", cookie, page, gfp); in __fscache_maybe_release_page()
74 val = radix_tree_lookup(&cookie->stores, page->index); in __fscache_maybe_release_page()
78 __fscache_uncache_page(cookie, page); in __fscache_maybe_release_page()
84 if (radix_tree_tag_get(&cookie->stores, page->index, in __fscache_maybe_release_page()
92 spin_lock(&cookie->stores_lock); in __fscache_maybe_release_page()
95 if (radix_tree_tag_get(&cookie->stores, page->index, in __fscache_maybe_release_page()
99 spin_unlock(&cookie->stores_lock); in __fscache_maybe_release_page()
103 xpage = radix_tree_delete(&cookie->stores, page->index); in __fscache_maybe_release_page()
104 spin_unlock(&cookie->stores_lock); in __fscache_maybe_release_page()
114 wake_up_bit(&cookie->flags, 0); in __fscache_maybe_release_page()
117 __fscache_uncache_page(cookie, page); in __fscache_maybe_release_page()
131 if (!release_page_wait_timeout(cookie, page)) in __fscache_maybe_release_page()
146 struct fscache_cookie *cookie; in fscache_end_page_write() local
150 cookie = object->cookie; in fscache_end_page_write()
151 if (cookie) { in fscache_end_page_write()
154 spin_lock(&cookie->stores_lock); in fscache_end_page_write()
155 radix_tree_tag_clear(&cookie->stores, page->index, in fscache_end_page_write()
157 if (!radix_tree_tag_get(&cookie->stores, page->index, in fscache_end_page_write()
160 xpage = radix_tree_delete(&cookie->stores, page->index); in fscache_end_page_write()
162 spin_unlock(&cookie->stores_lock); in fscache_end_page_write()
163 wake_up_bit(&cookie->flags, 0); in fscache_end_page_write()
197 int __fscache_attr_changed(struct fscache_cookie *cookie) in __fscache_attr_changed() argument
203 _enter("%p", cookie); in __fscache_attr_changed()
205 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_attr_changed()
221 spin_lock(&cookie->lock); in __fscache_attr_changed()
223 if (!fscache_cookie_enabled(cookie) || in __fscache_attr_changed()
224 hlist_empty(&cookie->backing_objects)) in __fscache_attr_changed()
226 object = hlist_entry(cookie->backing_objects.first, in __fscache_attr_changed()
229 __fscache_use_cookie(cookie); in __fscache_attr_changed()
232 spin_unlock(&cookie->lock); in __fscache_attr_changed()
239 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_attr_changed()
241 spin_unlock(&cookie->lock); in __fscache_attr_changed()
244 __fscache_wake_unused_cookie(cookie); in __fscache_attr_changed()
265 fscache_put_context(op->op.object->cookie, op->context); in fscache_release_retrieval_op()
274 struct fscache_cookie *cookie, in fscache_alloc_retrieval() argument
303 int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie) in fscache_wait_for_deferred_lookup() argument
309 if (!test_bit(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags)) { in fscache_wait_for_deferred_lookup()
317 if (wait_on_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP, in fscache_wait_for_deferred_lookup()
324 ASSERT(!test_bit(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags)); in fscache_wait_for_deferred_lookup()
399 int __fscache_read_or_alloc_page(struct fscache_cookie *cookie, in __fscache_read_or_alloc_page() argument
410 _enter("%p,%p,,,", cookie, page); in __fscache_read_or_alloc_page()
414 if (hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_page()
417 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_read_or_alloc_page()
422 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_read_or_alloc_page()
425 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_read_or_alloc_page()
428 op = fscache_alloc_retrieval(cookie, page->mapping, in __fscache_read_or_alloc_page()
436 spin_lock(&cookie->lock); in __fscache_read_or_alloc_page()
438 if (!fscache_cookie_enabled(cookie) || in __fscache_read_or_alloc_page()
439 hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_page()
441 object = hlist_entry(cookie->backing_objects.first, in __fscache_read_or_alloc_page()
446 __fscache_use_cookie(cookie); in __fscache_read_or_alloc_page()
452 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_page()
458 fscache_get_context(object->cookie, op->context); in __fscache_read_or_alloc_page()
471 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) { in __fscache_read_or_alloc_page()
501 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_read_or_alloc_page()
503 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_page()
505 __fscache_wake_unused_cookie(cookie); in __fscache_read_or_alloc_page()
532 int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie, in __fscache_read_or_alloc_pages() argument
545 _enter("%p,,%d,,,", cookie, *nr_pages); in __fscache_read_or_alloc_pages()
549 if (hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_pages()
552 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_read_or_alloc_pages()
557 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_read_or_alloc_pages()
561 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_read_or_alloc_pages()
564 op = fscache_alloc_retrieval(cookie, mapping, end_io_func, context); in __fscache_read_or_alloc_pages()
569 spin_lock(&cookie->lock); in __fscache_read_or_alloc_pages()
571 if (!fscache_cookie_enabled(cookie) || in __fscache_read_or_alloc_pages()
572 hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_pages()
574 object = hlist_entry(cookie->backing_objects.first, in __fscache_read_or_alloc_pages()
577 __fscache_use_cookie(cookie); in __fscache_read_or_alloc_pages()
583 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_pages()
589 fscache_get_context(object->cookie, op->context); in __fscache_read_or_alloc_pages()
602 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) { in __fscache_read_or_alloc_pages()
632 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_read_or_alloc_pages()
634 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_pages()
637 __fscache_wake_unused_cookie(cookie); in __fscache_read_or_alloc_pages()
653 int __fscache_alloc_page(struct fscache_cookie *cookie, in __fscache_alloc_page() argument
662 _enter("%p,%p,,,", cookie, page); in __fscache_alloc_page()
666 if (hlist_empty(&cookie->backing_objects)) in __fscache_alloc_page()
669 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_alloc_page()
672 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_alloc_page()
677 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_alloc_page()
680 op = fscache_alloc_retrieval(cookie, page->mapping, NULL, NULL); in __fscache_alloc_page()
685 spin_lock(&cookie->lock); in __fscache_alloc_page()
687 if (!fscache_cookie_enabled(cookie) || in __fscache_alloc_page()
688 hlist_empty(&cookie->backing_objects)) in __fscache_alloc_page()
690 object = hlist_entry(cookie->backing_objects.first, in __fscache_alloc_page()
693 __fscache_use_cookie(cookie); in __fscache_alloc_page()
696 spin_unlock(&cookie->lock); in __fscache_alloc_page()
726 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_alloc_page()
728 spin_unlock(&cookie->lock); in __fscache_alloc_page()
731 __fscache_wake_unused_cookie(cookie); in __fscache_alloc_page()
743 void __fscache_readpages_cancel(struct fscache_cookie *cookie, in __fscache_readpages_cancel() argument
750 __fscache_uncache_page(cookie, page); in __fscache_readpages_cancel()
771 struct fscache_cookie *cookie; in fscache_write_op() local
780 cookie = object->cookie; in fscache_write_op()
792 if (!cookie) { in fscache_write_op()
807 spin_lock(&cookie->stores_lock); in fscache_write_op()
813 n = radix_tree_gang_lookup_tag(&cookie->stores, results, 0, 1, in fscache_write_op()
824 radix_tree_tag_set(&cookie->stores, page->index, in fscache_write_op()
826 radix_tree_tag_clear(&cookie->stores, page->index, in fscache_write_op()
829 spin_unlock(&cookie->stores_lock); in fscache_write_op()
851 spin_unlock(&cookie->stores_lock); in fscache_write_op()
861 void fscache_invalidate_writes(struct fscache_cookie *cookie) in fscache_invalidate_writes() argument
870 spin_lock(&cookie->stores_lock); in fscache_invalidate_writes()
871 n = radix_tree_gang_lookup_tag(&cookie->stores, results, 0, in fscache_invalidate_writes()
875 spin_unlock(&cookie->stores_lock); in fscache_invalidate_writes()
881 radix_tree_delete(&cookie->stores, page->index); in fscache_invalidate_writes()
884 spin_unlock(&cookie->stores_lock); in fscache_invalidate_writes()
922 int __fscache_write_page(struct fscache_cookie *cookie, in __fscache_write_page() argument
931 _enter("%p,%x,", cookie, (u32) page->flags); in __fscache_write_page()
933 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_write_page()
938 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_write_page()
958 spin_lock(&cookie->lock); in __fscache_write_page()
960 if (!fscache_cookie_enabled(cookie) || in __fscache_write_page()
961 hlist_empty(&cookie->backing_objects)) in __fscache_write_page()
963 object = hlist_entry(cookie->backing_objects.first, in __fscache_write_page()
971 spin_lock(&cookie->stores_lock); in __fscache_write_page()
975 ret = radix_tree_insert(&cookie->stores, page->index, page); in __fscache_write_page()
983 radix_tree_tag_set(&cookie->stores, page->index, in __fscache_write_page()
992 spin_unlock(&cookie->stores_lock); in __fscache_write_page()
998 __fscache_use_cookie(cookie); in __fscache_write_page()
1002 spin_unlock(&cookie->lock); in __fscache_write_page()
1015 spin_unlock(&cookie->stores_lock); in __fscache_write_page()
1017 spin_unlock(&cookie->lock); in __fscache_write_page()
1025 spin_lock(&cookie->stores_lock); in __fscache_write_page()
1026 radix_tree_delete(&cookie->stores, page->index); in __fscache_write_page()
1027 spin_unlock(&cookie->stores_lock); in __fscache_write_page()
1028 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_write_page()
1034 spin_unlock(&cookie->stores_lock); in __fscache_write_page()
1037 spin_unlock(&cookie->lock); in __fscache_write_page()
1041 __fscache_wake_unused_cookie(cookie); in __fscache_write_page()
1058 void __fscache_uncache_page(struct fscache_cookie *cookie, struct page *page) in __fscache_uncache_page() argument
1064 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_uncache_page()
1074 spin_lock(&cookie->lock); in __fscache_uncache_page()
1076 if (hlist_empty(&cookie->backing_objects)) { in __fscache_uncache_page()
1081 object = hlist_entry(cookie->backing_objects.first, in __fscache_uncache_page()
1085 clear_bit(FSCACHE_COOKIE_NO_DATA_YET, &cookie->flags); in __fscache_uncache_page()
1099 spin_unlock(&cookie->lock); in __fscache_uncache_page()
1115 struct fscache_cookie *cookie = op->op.object->cookie; in fscache_mark_page_cached() local
1127 cookie->def->name, page->index); in fscache_mark_page_cached()
1131 if (cookie->def->mark_page_cached) in fscache_mark_page_cached()
1132 cookie->def->mark_page_cached(cookie->netfs_data, in fscache_mark_page_cached()
1161 void __fscache_uncache_all_inode_pages(struct fscache_cookie *cookie, in __fscache_uncache_all_inode_pages() argument
1169 _enter("%p,%p", cookie, inode); in __fscache_uncache_all_inode_pages()
1185 __fscache_wait_on_page_write(cookie, page); in __fscache_uncache_all_inode_pages()
1186 __fscache_uncache_page(cookie, page); in __fscache_uncache_all_inode_pages()