cl_page_list
[clio]

Page list used to perform collective operations on a group of pages. More...

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.

Detailed Description

Page list used to perform collective operations on a group of pages.

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.

Todo:
XXX concurrency control.

Generated on Mon Apr 12 04:18:21 2010 for Lustre 1.10.0.40-0-g9a80ff7 by doxygen 1.4.7

Contact | About Sun | News | Employment | Privacy | Terms of Use | Trademarks | (C) 2008 Sun Microsystems, Inc.