ceph: capability management
authorSage Weil <sage@newdream.net>
Tue, 6 Oct 2009 18:31:12 +0000 (11:31 -0700)
committerSage Weil <sage@newdream.net>
Tue, 6 Oct 2009 18:31:12 +0000 (11:31 -0700)
commita8599bd821d084d04a3290fffae1071624ec00ea
treee2323ebfad9a49fdb579ff87d1ec3a8694e8c0f5
parentba75bb98cfb93b62c54af25bf67ff90857264bbe
ceph: capability management

The Ceph metadata servers control client access to inode metadata and
file data by issuing capabilities, granting clients permission to read
and/or write both inode field and file data to OSDs (storage nodes).
Each capability consists of a set of bits indicating which operations
are allowed.

If the client holds a *_SHARED cap, the client has a coherent value
that can be safely read from the cached inode.

In the case of a *_EXCL (exclusive) or FILE_WR capabilities, the client
is allowed to change inode attributes (e.g., file size, mtime), note
its dirty state in the ceph_cap, and asynchronously flush that
metadata change to the MDS.

In the event of a conflicting operation (perhaps by another client),
the MDS will revoke the conflicting client capabilities.

In order for a client to cache an inode, it must hold a capability
with at least one MDS server.  When inodes are released, release
notifications are batched and periodically sent en masse to the MDS
cluster to release server state.

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/caps.c [new file with mode: 0644]