Whamcloud - gitweb
LUDOC-270 protocol: Update the outline and add support files
[doc/protocol.git] / protocol.txt
index 4b3df34..88b5087 100644 (file)
@@ -13,308 +13,33 @@ v0.0, January 2015
 :keywords: PtlRPC, Lustre, Protocol
 
 
-:numbered!: [abstract] Abstract -------- The Lustre parallel file
-system <<lustre>> provides a global POSIX <<POSIX>> namespace for the
-computing resources of a data center. Lustre runs on Linux-based hosts
-via kernel modules, and delegates block storage management to the
-back-end servers while providing object-based storage to its
-clients. Servers are responsible for both data objects (the contents
-of actual files) and index objects (for directory information). Data
-objects are gathered on Object Storage Servers (OSSs), and index
-objects are stored on MetaData Storage Servers (MDSs). Each back-end
-storage volume is a target with Object Storage Targets (OSTs) on OSSs,
-and MetaData Storage Targets (MDTs) on MDSs.  Clients assemble the
-data from the MDT(s) and OST(s) to present a single coherent
-POSIX-compliant file system. The clients and servers communicate and
-coordinate among themselves via network protocols. A low-level
-protocol, LNet, abstracts the details of the underlying networking
-hardware and presents a uniform interface, originally based on Sandia
-Portals <<PORTALS>>, to Lustre clients and servers. Lustre, in turn,
-layers its own protocol PtlRPC atop LNet. This document describes the
-Lustre protocols, including how they are implemeted via PtlRPC and the
-Lustre Distributed Lock Manager (based on the VAX/VMS Distributed Lock
-Manager <<VAX_DLM>>). This document does not describe Lustre itself in
-any detail, except where doing so explains concepts that allow this
-document to be self-contained.
+include::introduction.txt[]
 
-:numbered:
-
-Overview
---------
-
-'Content to be provided'
-
-Messages
---------
-
-These are the messages that traverse the network using PTLRPC.
-
-[NOTE]
-This initial list combines some actual message names or types with the
-POSIX semantic operations they are being used to implement, as well as
-a few other underlying mechanisms (cf. "grant"). A subsequent
-refinement will separate the various items and relate them to one
-another.
-
-Client-MDS RPCs for POSIX namespace operations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-'Content to be provided'
-
-=== mount ===
-
-'Content to be provided'
-
-=== unmount ===
-
-'Content to be provided'
-
-=== create ===
-
-'Content to be provided'
-
-=== open ===
-
-'Content to be provided'
-
-=== close ===
-
-'Content to be provided'
-
-=== unlink ===
-
-'Content to be provided'
-
-=== mkdir ===
-
-image:mkdir1.png[mkdir]
-
-=== rmdir ===
-
-'Content to be provided'
-
-=== rename ===
-
-'Content to be provided'
-
-=== link ===
-
-'Content to be provided'
-
-=== symlink ===
-
-'Content to be provided'
-
-=== getattr ===
-
-'Content to be provided'
-
-=== setattr ===
-
-'Content to be provided'
-
-=== statfs ===
-
-'Content to be provided'
-
-=== ... ===
-
-'Content to be provided'
-
-
-Client-MDS RPCs for internal state management
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-'Content to be provided'
-
-=== connect ===
-
-'Content to be provided'
-
-=== disconnect ===
-
-'Content to be provided'
-
-=== FLD ===
-
-'Content to be provided'
-
-=== SEQ ===
-
-'Content to be provided'
-
-=== PING ===
+include::data_types.txt[]
 
-'Content to be provided'
+include::connection.txt[]
 
-=== LDLM ===
+include::timeouts.txt[]
 
-'Content to be provided'
+include::file_id.txt[]
 
-=== ... ===
+include::ldlm.txt[]
 
-'Content to be provided'
+include::llog.txt[]
 
-Client-OSS RPCs for IO Operations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+include::recovery.txt[]
 
-'Content to be provided'
+include::security.txt[]
 
-=== read ===
+include::lustre_messages.txt[]
 
-'Content to be provided'
+include::lustre_operations.txt[]
 
-=== write ===
-
-'Content to be provided'
-
-=== truncate ===
-
-'Content to be provided'
-
-=== setattr ===
-
-'Content to be provided'
-
-=== grant ===
-
-'Content to be provided'
-
-=== ... ===
-
-'Content to be provided'
-
-MDS-OSS RPCs for internal state management
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-'Content to be provided'
-
-=== object precreation ===
-
-'Content to be provided'
-
-=== orphan recovery ===
-
-'Content to be provided'
-
-=== UID/GID change ===
-
-'Content to be provided'
-
-=== unlink ===
-
-'Content to be provided'
-
-=== ... ===
-
-'Content to be provided'
-
-MDS-OSS RPCs for quota management
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-'Content to be provided'
-
-
-MDS-OSS OUT RPCs for distributed updates
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-'Content to be provided'
-
-=== DNE1 remote directories ===
-
-'Content to be provided'
-
-=== DNE2 striped directories ===
-
-'Content to be provided'
-
-=== LFSCK2/3 verification and repair ===
-
-'Content to be provided'
-
-Message Flows
--------------
-
-  Each file operation (in Lustre) generates a set of messages in a
-  particular sequence. There is one sequence for any particular
-  concrete operation, but under varying circumstances the same file
-  operation may generate a different sequence.
-
-State Machines
---------------
-
-  For each File operation, the collection of possible sequences of
-  messages is governed by a state machine.
+include::file_system_operations.txt[]
 
 :numbered!:
 
-[glossary]
-Glossary
---------
-Here are some common terms used in discussing Lustre, POSIX semantics,
-and the prtocols used to implement them.
-
-[glossary]
-Object Storage Server::
-  An object storage server (OSS) is a computer responsible for
-  running Lustre kernel services in support of managing bulk data
-  objects on the underlying storage. There can be multiple OSSs in a
-  Lustre file system.
-
-MetaData Server::
-  A metadata server (MDS) is a computer responsible for running the
-  Lustre kernel services in support of managing the POSIX-compliant
-  name space and the indices associating files in that name space with
-  the locations of their corresponding objects. As of v2.4 there can
-  be multiple MDSs in a Lustre file system.
-
-Object Storage Target::
-  An object storage target (OST) is the service provided by an OSS
-  that mediates the placement of data objects on the specific
-  underlying file system hardware. There can be multiple OSTs on a
-  given OSS.
-
-MetaData Target::
-  A metadata target (MDT) is the service provided by an MDS that
-  mediates the management of name space indices on the underlying file
-  system hardware. As of v2.4 there can be multiple MDTs on an MDS.
-
-server::
-  A computer providing a service, such as an OSS or an MDS
-
-target::
-  Storage available to be served, such as an OST or an MDT. Also the
-  service being provided.
-
-protocol::
-  An agreed upon formalism for communicating between two entities,
-  such as between two servers or between a client and a server.
-
-client::
-  A computer taking advantage of a service provided by a server, such
-  as a Lustre client using MDS(s) and OSS(s) to assemble a
-  POSIX-compliant file system with its namespace and data storage
-  capabilities.
-
-PtlRPC::
-  The protocol (or set of protocols) implemented via RPCs that is
-  (are) employed by Lustre to communicate between its clients and
-  servers.
-
-Remote Procedure Call::
-  A mechanism for implementing operations involving one computer
-  acting on the behalf of another (RPC).
-
-LNet::
-  A lower level protocol employed by PtlRPC to abstract the mechanisms
-  provided by various hardware centric protocols, such as TCP or
-  Infiniband.
-
-[appendix]
-Concepts
---------
-
-'Content to be provided'
+include::glossary.txt[]
 
 [appendix]
 License