cl_page Struct Reference
[cl_pagecl_page]

Fields are protected by the lock on cfs_page_t, except for atomics and immutables. More...

#include <cl_object.h>


Data Fields

cfs_atomic_t cp_ref
 Reference counter.
cl_objectcp_obj
 An object this page is a part of.
pgoff_t cp_index
 Logical page index within the object.
cfs_list_t cp_layers
 List of slices.
cl_pagecp_parent
 Parent page, NULL for top-level page.
cl_pagecp_child
 Lower-layer page.
enum cl_page_state cp_state
 Page state.
cfs_list_t cp_batch
 Linkage of pages within some group.
cfs_mutex_t cp_mutex
 Mutex serializing membership of a page in a batch.
cfs_list_t cp_flight
 Linkage of pages within cl_req.
int cp_error
 Transfer error.
enum cl_page_type cp_type
 Page type.
cl_iocp_owner
 Owning IO in cl_page_state::CPS_OWNED state.
cfs_task_t * cp_task
 Debug information, the task is owning the page.
cl_reqcp_req
 Owning IO request in cl_page_state::CPS_PAGEOUT and cl_page_state::CPS_PAGEIN states.
lu_ref cp_reference
 List of references to this page, for debugging.
lu_ref_link * cp_obj_ref
 Link to an object, for debugging.
lu_ref_link * cp_queue_ref
 Link to a queue, for debugging.
unsigned cp_flags
 Per-page flags from enum cl_page_flags.
cl_sync_iocp_sync_io
 Assigned if doing a sync_io.


Detailed Description

Fields are protected by the lock on cfs_page_t, except for atomics and immutables.

Invariant:
Data type invariants are in cl_page_invariant(). Basically: cl_page::cp_parent and cl_page::cp_child are a well-formed double-linked list, consistent with the parent/child pointers in the cl_page::cp_obj and cl_page::cp_owner (when set).


Field Documentation

cfs_list_t cl_page::cp_batch

Linkage of pages within some group.

Protected by cl_page::cp_mutex.

struct cl_page* cl_page::cp_child

Lower-layer page.

NULL for bottommost page. Immutable after creation.

unsigned cl_page::cp_flags

Per-page flags from enum cl_page_flags.

Protected by a VM lock.

pgoff_t cl_page::cp_index

Logical page index within the object.

Immutable after creation.

cfs_list_t cl_page::cp_layers

List of slices.

Immutable after creation.

struct cl_object* cl_page::cp_obj

An object this page is a part of.

Immutable after creation.

struct cl_io* cl_page::cp_owner

Owning IO in cl_page_state::CPS_OWNED state.

Sub-page can be owned by sub-io. Protected by a VM lock.

struct cl_page* cl_page::cp_parent

Parent page, NULL for top-level page.

Immutable after creation.

struct cl_req* cl_page::cp_req

Owning IO request in cl_page_state::CPS_PAGEOUT and cl_page_state::CPS_PAGEIN states.

This field is maintained only in the top-level pages. Protected by a VM lock.

enum cl_page_state cl_page::cp_state

Page state.

This field is const to avoid accidental update, it is modified only internally within cl_page.c. Protected by a VM lock.

enum cl_page_type cl_page::cp_type

Page type.

Only CPT_TRANSIENT is used so far. Immutable after creation.


The documentation for this struct was generated from the following file:
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.