Data Structures | |
| struct | cl_page_list |
| struct | cl_2queue |
| A 2-queue of pages. More... | |
Defines | |
| #define | cl_page_list_for_each(page, list) cfs_list_for_each_entry((page), &(list)->pl_pages, cp_batch) |
| Iterate over pages in a page list. | |
| #define | cl_page_list_for_each_safe(page, temp, list) cfs_list_for_each_entry_safe((page), (temp), &(list)->pl_pages, cp_batch) |
| Iterate over pages in a page list, taking possible removals into account. | |
Functions | |
| void | cl_page_list_init (struct cl_page_list *plist) |
| Initializes page list. | |
| void | cl_page_list_add (struct cl_page_list *plist, struct cl_page *page) |
| Adds a page to a page list. | |
| void | cl_page_list_move (struct cl_page_list *dst, struct cl_page_list *src, struct cl_page *page) |
| Moves a page from one page list to another. | |
| void | cl_page_list_splice (struct cl_page_list *list, struct cl_page_list *head) |
| splice the cl_page_list, just as list head does | |
| void | cl_page_list_del (const struct lu_env *env, struct cl_page_list *plist, struct cl_page *page) |
| Removes a page from a page list. | |
| void | cl_page_list_disown (const struct lu_env *env, struct cl_io *io, struct cl_page_list *plist) |
| Disowns pages in a queue. | |
| int | cl_page_list_own (const struct lu_env *env, struct cl_io *io, struct cl_page_list *plist) |
| Owns all pages in a queue. | |
| void | cl_page_list_assume (const struct lu_env *env, struct cl_io *io, struct cl_page_list *plist) |
| Assumes all pages in a queue. | |
| void | cl_page_list_discard (const struct lu_env *env, struct cl_io *io, struct cl_page_list *plist) |
| Discards all pages in a queue. | |
| int | cl_page_list_unmap (const struct lu_env *env, struct cl_io *io, struct cl_page_list *plist) |
| Unmaps all pages in a queue from user virtual memory. | |
| void | cl_page_list_fini (const struct lu_env *env, struct cl_page_list *plist) |
| Releases pages from queue. | |
| void | cl_2queue_init (struct cl_2queue *queue) |
| Initialize dual page queue. | |
| void | cl_2queue_add (struct cl_2queue *queue, struct cl_page *page) |
| Add a page to the incoming page list of 2-queue. | |
| void | cl_2queue_disown (const struct lu_env *env, struct cl_io *io, struct cl_2queue *queue) |
| Disown pages in both lists of a 2-queue. | |
| void | cl_2queue_assume (const struct lu_env *env, struct cl_io *io, struct cl_2queue *queue) |
| Assume to own the pages in cl_2queue. | |
| void | cl_2queue_discard (const struct lu_env *env, struct cl_io *io, struct cl_2queue *queue) |
| Discard (truncate) pages in both lists of a 2-queue. | |
| void | cl_2queue_fini (const struct lu_env *env, struct cl_2queue *queue) |
| Finalize both page lists of a 2-queue. | |
| void | cl_2queue_init_page (struct cl_2queue *queue, struct cl_page *page) |
| Initialize a 2-queue to contain page in its incoming page list. | |
Pages are added to the list one by one. cl_page_list acquires a reference for every page in it. Page list is used to perform collective operations on pages:
When list is finalized, it releases references on all pages it still has.