Whamcloud - gitweb
LUDOC-276 protocol: Document RPCs for setattr
[doc/protocol.git] / ldlm_request.txt
diff --git a/ldlm_request.txt b/ldlm_request.txt
new file mode 100644 (file)
index 0000000..93f9f5d
--- /dev/null
@@ -0,0 +1,75 @@
+
+LDLM Request
+^^^^^^^^^^^^
+[[struct-ldlm-request]]
+
+The 'ldlm_request' structure describes the details of a lock request.
+
+----
+struct ldlm_request {
+        __u32 lock_flags;
+        __u32 lock_count;
+        struct ldlm_lock_desc lock_desc;
+        struct lustre_handle lock_handle[2];
+};
+----
+
+The 'lock_flags' field governs how the lock request is to be
+interpreted. The flags are:
+
+----
+#define LDLM_FL_LOCK_CHANGED            0x0000000000000001ULL // bit   0
+#define LDLM_FL_BLOCK_GRANTED           0x0000000000000002ULL // bit   1
+#define LDLM_FL_BLOCK_CONV              0x0000000000000004ULL // bit   2
+#define LDLM_FL_BLOCK_WAIT              0x0000000000000008ULL // bit   3
+#define LDLM_FL_AST_SENT                0x0000000000000020ULL // bit   5
+#define LDLM_FL_REPLAY                  0x0000000000000100ULL // bit   8
+#define LDLM_FL_INTENT_ONLY             0x0000000000000200ULL // bit   9
+#define LDLM_FL_HAS_INTENT              0x0000000000001000ULL // bit  12
+#define LDLM_FL_FLOCK_DEADLOCK          0x0000000000008000ULL // bit  15
+#define LDLM_FL_DISCARD_DATA            0x0000000000010000ULL // bit  16
+#define LDLM_FL_NO_TIMEOUT              0x0000000000020000ULL // bit  17
+#define LDLM_FL_BLOCK_NOWAIT            0x0000000000040000ULL // bit  18
+#define LDLM_FL_TEST_LOCK               0x0000000000080000ULL // bit  19
+#define LDLM_FL_CANCEL_ON_BLOCK         0x0000000000800000ULL // bit  23
+#define LDLM_FL_DENY_ON_CONTENTION      0x0000000040000000ULL // bit  30
+#define LDLM_FL_AST_DISCARD_DATA        0x0000000080000000ULL // bit  31
+#define LDLM_FL_FAIL_LOC                0x0000000100000000ULL // bit  32
+#define LDLM_FL_SKIPPED                 0x0000000200000000ULL // bit  33
+#define LDLM_FL_CBPENDING               0x0000000400000000ULL // bit  34
+#define LDLM_FL_WAIT_NOREPROC           0x0000000800000000ULL // bit  35
+#define LDLM_FL_CANCEL                  0x0000001000000000ULL // bit  36
+#define LDLM_FL_LOCAL_ONLY              0x0000002000000000ULL // bit  37
+#define LDLM_FL_FAILED                  0x0000004000000000ULL // bit  38
+#define LDLM_FL_CANCELING               0x0000008000000000ULL // bit  39
+#define LDLM_FL_LOCAL                   0x0000010000000000ULL // bit  40
+#define LDLM_FL_LVB_READY               0x0000020000000000ULL // bit  41
+#define LDLM_FL_KMS_IGNORE              0x0000040000000000ULL // bit  42
+#define LDLM_FL_CP_REQD                 0x0000080000000000ULL // bit  43
+#define LDLM_FL_CLEANED                 0x0000100000000000ULL // bit  44
+#define LDLM_FL_ATOMIC_CB               0x0000200000000000ULL // bit  45
+#define LDLM_FL_BL_AST                  0x0000400000000000ULL // bit  46
+#define LDLM_FL_BL_DONE                 0x0000800000000000ULL // bit  47
+#define LDLM_FL_NO_LRU                  0x0001000000000000ULL // bit  48
+#define LDLM_FL_FAIL_NOTIFIED           0x0002000000000000ULL // bit  49
+#define LDLM_FL_DESTROYED               0x0004000000000000ULL // bit  50
+#define LDLM_FL_SERVER_LOCK             0x0008000000000000ULL // bit  51
+#define LDLM_FL_RES_LOCKED              0x0010000000000000ULL // bit  52
+#define LDLM_FL_WAITED                  0x0020000000000000ULL // bit  53
+#define LDLM_FL_NS_SRV                  0x0040000000000000ULL // bit  54
+#define LDLM_FL_EXCL                    0x0080000000000000ULL // bit  55
+----
+
+The 'lock_count' field represents how many requests are queued on this
+resource.
+
+The 'lock_desc' field holds the lock descriptor as described in
+<<struct-ldlm-lock-desc>.
+
+The 'lock_handle' array's first element holds the handle for the lock
+manager (see the description of <<struct-lustre-handle>>) involved in
+the operation. There is only one lock manager involved in any given
+RPC. The second handle is set to zero except in the rare case that
+there is also an early lock cancellation. The latter case will be
+discussed elsewhere.
+