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()
277 fscache_put_context(op->cookie, op->context); in fscache_release_retrieval_op()
286 struct fscache_cookie *cookie, in fscache_alloc_retrieval() argument
306 op->cookie = cookie; in fscache_alloc_retrieval()
317 fscache_get_context(op->cookie, context); in fscache_alloc_retrieval()
324 int fscache_wait_for_deferred_lookup(struct fscache_cookie *cookie) in fscache_wait_for_deferred_lookup() argument
330 if (!test_bit(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags)) { in fscache_wait_for_deferred_lookup()
338 if (wait_on_bit(&cookie->flags, FSCACHE_COOKIE_LOOKING_UP, in fscache_wait_for_deferred_lookup()
345 ASSERT(!test_bit(FSCACHE_COOKIE_LOOKING_UP, &cookie->flags)); in fscache_wait_for_deferred_lookup()
410 int __fscache_read_or_alloc_page(struct fscache_cookie *cookie, in __fscache_read_or_alloc_page() argument
421 _enter("%p,%p,,,", cookie, page); in __fscache_read_or_alloc_page()
425 if (hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_page()
428 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_read_or_alloc_page()
433 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_read_or_alloc_page()
436 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_read_or_alloc_page()
439 op = fscache_alloc_retrieval(cookie, page->mapping, in __fscache_read_or_alloc_page()
447 spin_lock(&cookie->lock); in __fscache_read_or_alloc_page()
449 if (!fscache_cookie_enabled(cookie) || in __fscache_read_or_alloc_page()
450 hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_page()
452 object = hlist_entry(cookie->backing_objects.first, in __fscache_read_or_alloc_page()
457 __fscache_use_cookie(cookie); in __fscache_read_or_alloc_page()
463 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_page()
477 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) { in __fscache_read_or_alloc_page()
507 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_read_or_alloc_page()
509 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_page()
511 __fscache_wake_unused_cookie(cookie); in __fscache_read_or_alloc_page()
538 int __fscache_read_or_alloc_pages(struct fscache_cookie *cookie, in __fscache_read_or_alloc_pages() argument
551 _enter("%p,,%d,,,", cookie, *nr_pages); in __fscache_read_or_alloc_pages()
555 if (hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_pages()
558 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_read_or_alloc_pages()
563 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_read_or_alloc_pages()
567 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_read_or_alloc_pages()
570 op = fscache_alloc_retrieval(cookie, mapping, end_io_func, context); in __fscache_read_or_alloc_pages()
575 spin_lock(&cookie->lock); in __fscache_read_or_alloc_pages()
577 if (!fscache_cookie_enabled(cookie) || in __fscache_read_or_alloc_pages()
578 hlist_empty(&cookie->backing_objects)) in __fscache_read_or_alloc_pages()
580 object = hlist_entry(cookie->backing_objects.first, in __fscache_read_or_alloc_pages()
583 __fscache_use_cookie(cookie); in __fscache_read_or_alloc_pages()
589 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_pages()
603 if (test_bit(FSCACHE_COOKIE_NO_DATA_YET, &object->cookie->flags)) { in __fscache_read_or_alloc_pages()
633 wake_cookie = __fscache_unuse_cookie(cookie); in __fscache_read_or_alloc_pages()
635 spin_unlock(&cookie->lock); in __fscache_read_or_alloc_pages()
638 __fscache_wake_unused_cookie(cookie); in __fscache_read_or_alloc_pages()
654 int __fscache_alloc_page(struct fscache_cookie *cookie, in __fscache_alloc_page() argument
663 _enter("%p,%p,,,", cookie, page); in __fscache_alloc_page()
667 if (hlist_empty(&cookie->backing_objects)) in __fscache_alloc_page()
670 ASSERTCMP(cookie->def->type, !=, FSCACHE_COOKIE_TYPE_INDEX); in __fscache_alloc_page()
673 if (test_bit(FSCACHE_COOKIE_INVALIDATING, &cookie->flags)) { in __fscache_alloc_page()
678 if (fscache_wait_for_deferred_lookup(cookie) < 0) in __fscache_alloc_page()
681 op = fscache_alloc_retrieval(cookie, page->mapping, NULL, NULL); in __fscache_alloc_page()
686 spin_lock(&cookie->lock); in __fscache_alloc_page()
688 if (!fscache_cookie_enabled(cookie) || in __fscache_alloc_page()
689 hlist_empty(&cookie->backing_objects)) in __fscache_alloc_page()
691 object = hlist_entry(cookie->backing_objects.first, in __fscache_alloc_page()
694 __fscache_use_cookie(cookie); in __fscache_alloc_page()
697 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()