+++ /dev/null
-lustre_dlm_flags*.[ch]
-!Makefile
+++ /dev/null
-
-top_builddir = ../..
-src = lustre_dlm_flags.def lustre_dlm_flags.tpl
-targ = lustre_dlm_flags.h
-cropt = -nostartfiles -shared -rdynamic -fPIC
-
-default : $(targ)
-all : $(targ) flags crash
-
-$(targ) : $(src)
- @set -x ; \
- if autogen --version >/dev/null 2>&1 ; then \
- autogen -DTESTING=1 lustre_dlm_flags.def ; \
- rm -f $(top_builddir)/lustre/include/$@ ; \
- sed '/It has been AutoGen-ed/s/-ed.*/-ed/;s/ *$$//' \
- $@ > $(top_builddir)/lustre/include/$@ ; \
- cp -fp lustre_dlm_flags_wshark.c \
- $(top_builddir)/lustre/contrib/wireshark/. ; \
- else cp $(top_builddir)/lustre/include/$@ . ; fi
-
-install : $(targ) install.sh
- DESTDIR="$(DESTDIR)" ./install.sh
-
-clean :
- rm -f *~ *flags.[hc] ag-log*
-
-clobber :
- git clean -f -x -d .
-
-flags : lustre_dlm_flags
-lustre_dlm_flags : $(targ)
- $(CC) -o $@ -g3 -O0 -DLDLM_FLAGS_PROGRAM=1 lustre_dlm_flags.c
-
-crash : lustre-crash-ext.so
-lustre-crash-ext.so : $(targ)
- $(CC) -g3 -O0 $(cropt) -o $@ lustre_dlm_flags.c
-
-.PHONY : crash flags
+++ /dev/null
-AutoGen Definitions lustre_dlm_flags.tpl;
-
-flag[ 0] = {
- f-name = lock_changed;
- f-mask = on_wire;
- f-desc = 'extent, mode, or resource changed';
-};
-
-flag[ 1] = {
- f-name = block_granted;
- f-mask = on_wire, blocked;
- f-desc = <<- _EOF_
- Server placed lock on granted list, or a recovering client wants
- the lock added to the granted list, no questions asked.
- _EOF_;
-};
-
-flag[ 2] = {
- f-name = block_conv;
- f-mask = on_wire, blocked;
- f-desc = <<- _EOF_
- Server placed lock on conv list, or a recovering client wants the lock
- added to the conv list, no questions asked.
- _EOF_;
-};
-
-flag[ 3] = {
- f-name = block_wait;
- f-mask = on_wire, blocked;
- f-desc = <<- _EOF_
- Server placed lock on wait list, or a recovering client wants
- the lock added to the wait list, no questions asked.
- _EOF_;
-};
-
-// Skipped bit 4
-
-flag[ 5] = {
- f-name = ast_sent;
- f-mask = on_wire;
- f-desc = 'blocking or cancel packet was queued for sending.';
-};
-
-// Skipped bits 6 and 7
-
-flag[ 8] = {
- f-name = replay;
- f-mask = on_wire;
- f-desc = <<- _EOF_
- Lock is being replayed. This could probably be implied by the fact that
- one of BLOCK_{GRANTED,CONV,WAIT} is set, but that is pretty dangerous.
- _EOF_;
-};
-
-flag[ 9] = {
- f-name = intent_only;
- f-mask = on_wire;
- f-desc = "Don't grant lock, just do intent.";
-};
-
-// Skipped bits 10 and 11
-
-flag[12] = {
- f-name = has_intent;
- f-mask = on_wire;
- f-desc = 'lock request has intent';
-};
-
-// Skipped bits 13, 14
-
-flag[15] = {
- f-name = flock_deadlock;
- f-mask = on_wire, ast;
- f-desc = 'flock deadlock detected';
-};
-
-flag[16] = {
- f-name = discard_data;
- f-mask = on_wire;
- f-desc = 'discard (no writeback) on cancel';
-};
-
-flag[17] = {
- f-name = no_timeout;
- f-mask = on_wire;
- f-desc = 'Blocked by group lock - wait indefinitely';
-};
-
-flag[18] = {
- f-name = block_nowait;
- f-mask = on_wire;
- f-desc = <<- _EOF_
- Server told not to wait if blocked. For AGL, OST will not send
- glimpse callback.
- _EOF_;
-};
-
-flag[19] = {
- f-name = test_lock;
- f-mask = on_wire;
- f-desc = 'return blocking lock';
-};
-
-// Skipped bits 20, 21, and 22
-
-flag[23] = {
- f-name = cancel_on_block;
- f-mask = on_wire, inherit;
- f-desc = <<- _EOF_
- Immediatelly cancel such locks when they block some other locks. Send
- cancel notification to original lock holder, but expect no reply. This is
- for clients (like liblustre) that cannot be expected to reliably response
- to blocking AST.
- _EOF_;
-};
-
-// Skipped bits 24 through 29
-
-flag[30] = {
- f-name = deny_on_contention;
- f-mask = on_wire;
- f-desc = 'measure lock contention and return -EUSERS if locking contention '
- 'is high';
-};
-
-flag[31] = {
- f-name = ast_discard_data;
- f-mask = on_wire, ast;
- f-desc = <<- _EOF_
- These are flags that are mapped into the flags and ASTs of blocking locks
- Add FL_DISCARD to blocking ASTs
- _EOF_;
-};
-
-flag[32] = {
- f-name = fail_loc;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- Used for marking lock as a target for -EINTR while cp_ast sleep
- emulation + race with upcoming bl_ast.
- _EOF_;
-};
-
-flag[33] = {
- f-name = skipped;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- Used while processing the unused list to know that we have already
- handled this lock and decided to skip it.
- _EOF_;
-};
-
-
-flag[34] = {
- f-name = cbpending;
- f-mask = off_wire /* , hide_lock */;
- f-desc = 'this lock is being destroyed';
-};
-
-flag[35] = {
- f-name = wait_noreproc;
- f-mask = off_wire;
- f-desc = 'not a real flag, not saved in lock';
-};
-
-flag[36] = {
- f-name = cancel;
- f-mask = off_wire;
- f-desc = 'cancellation callback already run';
-};
-
-flag[37] = {
- f-name = local_only;
- f-mask = off_wire /* , hide_lock */;
- f-desc = 'whatever it might mean -- never transmitted?';
-};
-
-flag[38] = {
- f-name = failed;
- f-mask = off_wire, gone /* , hide_lock */;
- f-desc = "don't run the cancel callback under ldlm_cli_cancel_unused";
-};
-
-flag[39] = {
- f-name = canceling;
- f-mask = off_wire;
- f-desc = 'lock cancel has already been sent';
-};
-
-flag[40] = {
- f-name = local;
- f-mask = off_wire;
- f-desc = 'local lock (ie, no srv/cli split)';
-};
-
-flag[41] = {
- f-name = lvb_ready;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- XXX FIXME: This is being added to b_size as a low-risk fix to the
- fact that the LVB filling happens _after_ the lock has been granted,
- so another thread can match it before the LVB has been updated. As
- a dirty hack, we set LDLM_FL_LVB_READY only after we've done the LVB
- poop. this is only needed on LOV/OSC now, where LVB is actually
- used and callers must set it in input flags.
-
- The proper fix is to do the granting inside of the completion AST,
- which can be replaced with a LVB-aware wrapping function for OSC
- locks. That change is pretty high-risk, though, and would need a
- lot more testing.
- _EOF_;
-};
-
-flag[42] = {
- f-name = kms_ignore;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- A lock contributes to the known minimum size (KMS) calculation until
- it has finished the part of its cancelation that performs write back
- on its dirty pages. It can remain on the granted list during this
- whole time. Threads racing to update the KMS after performing their
- writeback need to know to exclude each other's locks from the
- calculation as they walk the granted list.
- _EOF_;
-};
-
-flag[43] = {
- f-name = cp_reqd;
- f-mask = off_wire;
- f-desc = 'completion AST to be executed';
-};
-
-flag[44] = {
- f-name = cleaned;
- f-mask = off_wire;
- f-desc = 'cleanup_resource has already handled the lock';
-};
-
-flag[45] = {
- f-name = atomic_cb;
- f-mask = off_wire /* , hide_lock */;
- f-desc = <<- _EOF_
- optimization hint: LDLM can run blocking callback from current context
- w/o involving separate thread. in order to decrease cs rate
- _EOF_;
-};
-
-flag[46] = {
- f-name = bl_ast;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- It may happen that a client initiates two operations, e.g. unlink
- and mkdir, such that the server sends a blocking AST for conflicting
- locks to this client for the first operation, whereas the second
- operation has canceled this lock and is waiting for rpc_lock which
- is taken by the first operation. LDLM_FL_BL_AST is set by
- ldlm_callback_handler() in the lock to prevent the Early Lock Cancel
- (ELC) code from cancelling it.
- _EOF_;
-};
-
-flag[47] = {
- f-name = bl_done;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- Set by ldlm_cancel_callback() when lock cache is dropped to let
- ldlm_callback_handler() return EINVAL to the server. It is used when
- ELC RPC is already prepared and is waiting for rpc_lock, too late to
- send a separate CANCEL RPC.
- _EOF_;
-};
-
-flag[48] = {
- f-name = no_lru;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- Don't put lock into the LRU list, so that it is not canceled due to
- aging. Used by MGC locks, they are cancelled only at unmount or by
- callback.
- _EOF_;
-};
-
-flag[49] = {
- f-name = fail_notified;
- f-mask = off_wire, gone;
- f-desc = <<- _EOF_
- Set for locks that failed and where the server has been notified.
-
- Protected by lock and resource locks.
- _EOF_;
-};
-
-flag[50] = {
- f-name = destroyed;
- f-mask = off_wire, gone;
- f-desc = <<- _EOF_
- Set for locks that were removed from class hash table and will be
- destroyed when last reference to them is released. Set by
- ldlm_lock_destroy_internal().
-
- Protected by lock and resource locks.
- _EOF_;
-};
-
-flag[51] = {
- f-name = server_lock;
- f-mask = off_wire;
- f-desc = 'flag whether this is a server namespace lock';
-};
-
-flag[52] = {
- f-name = res_locked;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- It's set in lock_res_and_lock() and unset in unlock_res_and_lock().
-
- NB: compared with check_res_locked(), checking this bit is cheaper.
- Also, spin_is_locked() is deprecated for kernel code; one reason is
- because it works only for SMP so user needs to add extra macros like
- LASSERT_SPIN_LOCKED for uniprocessor kernels.
- _EOF_;
-};
-
-flag[53] = {
- f-name = waited;
- f-mask = off_wire;
- f-desc = <<- _EOF_
- It's set once we call ldlm_add_waiting_lock_res_locked()
- to start the lock-timeout timer and it will never be reset.
-
- Protected by lock and resource locks.
- _EOF_;
-};
-
-flag[54] = {
- f-name = ns_srv;
- f-mask = off_wire;
- f-desc = 'Flag whether this is a server namespace lock.';
-};
-
-flag[55] = {
- f-name = excl;
- f-mask = off_wire;
- f-desc = 'Flag whether this lock can be reused. Used by exclusive open.';
-};
+++ /dev/null
-[= AutoGen5 Template h -*- Mode: C -*- =]
-[= (dne " * " "/* ") =]
- *
-[= (gpl "lustre" " * ") =]
- */
-/**
- * \file [= (out-name) =]
- * The flags and collections of flags (masks) for \see struct ldlm_lock.
- * This file is derived from flag definitions in [=(def-file)=].
- * The format is defined in the [=(tpl-file)=] template file.
- *
- * \addtogroup LDLM Lustre Distributed Lock Manager
- * @{
- *
- * \name flags
- * The flags and collections of flags (masks) for \see struct ldlm_lock.
- * @{
- */
-#ifndef LDLM_ALL_FLAGS_MASK
-[=
-
-;; Guile is unable to handle 64 bit unsigned ints very easily.
-;; BASH does just fine. Construct a shell script to compute the
-;; bit masks and echo out the appropriate #defines.
-;;
-(out-push-new "script.sh")
-
-=]
-mask_list=
-allbits=0
-fmt='#define LDLM_FL_%-16s 0x%016XULL // bit %2u
-#define ldlm_is_%-20s LDLM_TEST_FLAG(( _l), 1ULL << %2u)
-#define ldlm_set_%-20s LDLM_SET_FLAG(( _l), 1ULL << %2u)
-#define ldlm_clear_%-20s LDLM_CLEAR_FLAG((_l), 1ULL << %2u)\n'
-acc_fmt=''
-tmpfile=[=(base-name)=]-$$.tmp
-exec 7>&1 1> $tmpfile
-[=
-
-FOR flag
-
-=]
-bitno=[=(define temp-txt (get "f-desc"))
- (for-index)=]
-bitval=$(( 1 << $bitno ))
-echo[=
-
- IF (< (string-length temp-txt) 72)=]
-echo '/**' [= (raw-shell-str temp-txt) =] '*/'[=
- ELSE=]
-echo '/**'
-{ fmt -w 74 | sed 's/^/ * /;s/ *$//;$s@$@ */@'
-} <<_EOF_
-[=(. temp-txt)=]
-_EOF_[=
- ENDIF
-
-=]
-dn_name=[= (string-downcase! (string->c-name! (get "f-name"))) =]'(_l)'
-up_name=[= (string-upcase! (string->c-name! (get "f-name"))) =]
-printf "$fmt" $up_name $bitval $bitno \
- $dn_name $bitno \
- $dn_name $bitno \
- $dn_name $bitno
-
-(( allbits += bitval ))[=
-
- FOR f-mask =]
-mask_list=${mask_list}[= f-mask =]$'\n'
-mask_[= f-mask =]=$(( ${mask_[= f-mask =]:-0} + bitval ))[=
- ENDFOR f-mask =][=
-
-ENDFOR flag
-
-=]
-exec 1>&7 7>&-
-fmt='\n/** l_flags bits marked as "%s" bits */
-#define LDLM_FL_%-22s 0x%016XULL\n'
-printf "$fmt" all_flags ALL_FLAGS_MASK $allbits
-
-for f in $(echo "$mask_list" | sort -u)
-do
- ucf=$(echo $f | tr a-z A-Z)_MASK
- eval v=\$mask_$f
- printf "$fmt" $f $ucf $v
-done
-
-cat $tmpfile
-rm -f $tmpfile script.sh[=
-
-;; The script is done. Pop off the temporary output, handing
-;; it to the shell for evaluation. stdout becomes the output text
-;;
-(out-pop)
-(shell ". script.sh")
-
-=]
-
-/** test for ldlm_lock flag bit set */
-#define LDLM_TEST_FLAG(_l, _b) (((_l)->l_flags & (_b)) != 0)
-
-/** multi-bit test: are any of mask bits set? */
-#define LDLM_HAVE_MASK(_l, _m) (((_l)->l_flags & LDLM_FL_##_m##_MASK) != 0)
-
-/** set a ldlm_lock flag bit */
-#define LDLM_SET_FLAG(_l, _b) ((_l)->l_flags |= (_b))
-
-/** clear a ldlm_lock flag bit */
-#define LDLM_CLEAR_FLAG(_l, _b) ((_l)->l_flags &= ~(_b))
-
-/** @} subgroup */
-/** @} group */
-#endif /* LDLM_ALL_FLAGS_MASK */
-[=
-(out-push-new (string-append (base-name) "_wshark.c"))
-(define flags-vals "")
-(define dissect "")
-(define init-text "")
-
-(define up-name "")
-(define down-name "")
-
-(define dissect-fmt
- " dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_%s);\n")
-(out-push-new) \=]
- {
- /* p_id */ &hf_lustre_ldlm_fl_%1$s,
- /* hfinfo */ {
- /* name */ "LDLM_FL_%2$s",
- /* abbrev */ "lustre.ldlm_fl_%1$s",
- /* type */ FT_BOOLEAN,
- /* display */ 32,
- /* strings */ TFS(&lnet_flags_set_truth),
- /* bitmask */ LDLM_FL_%2$s,
- /* blurb */ %3$s,
- /* id */ HFILL
- }
- },
-[= (define init-fmt (out-pop #t)) \=]
-/**
- * \file [=(out-name)=]
- *
- * wireshark definitions. This file contains the ldlm lock flag bits
- * that can be transmitted over the wire. There are many other bits,
- * but they are not transmitted and not handled here.
- */
-#ifdef WSHARK_HEAD
-[=
-
-FOR flag =][=
-
- (if (match-value? = "f-mask" "on_wire") (begin
- (set! temp-txt (get "f-name"))
- (set! up-name (string-upcase (string->c-name! temp-txt)))
- (set! down-name (string-downcase temp-txt))
-
- (set! flags-vals (string-append flags-vals (sprintf
- "\n {LDLM_FL_%-20s \"LDLM_FL_%s\"},"
- (string-append up-name ",") up-name )))
-
- (set! dissect (string-append dissect (sprintf dissect-fmt
- down-name)))
-
- (set! init-text (string-append init-text (sprintf init-fmt
- down-name up-name (c-string (get "f-desc")) )))
-
- (ag-fprintf 0 "\nstatic int hf_lustre_ldlm_fl_%-20s= -1;"
- down-name)
- ) ) =][=
-ENDFOR flag =]
-
-const value_string lustre_ldlm_flags_vals[] = {[= (. flags-vals) =]
- { 0, NULL }
-};
-
-/* IDL: struct ldlm_reply { */
-/* IDL: uint32 lock_flags; */
-/* IDL: uint32 lock_padding; */
-/* IDL: struct ldlm_lock_desc { */
-/* IDL: } lock_desc; */
-/* IDL: struct lustre_handle { */
-/* IDL: } lock_handle; */
-/* IDL: uint64 lock_policy_res1; */
-/* IDL: uint64 lock_policy_res2; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_ldlm_lock_flags(
- tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
- proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_flags);
- }
-[= (shell
-"sed '$s/^/ /;$i\\
- return' <<- \\_EOF_\n" dissect "_EOF_"
-) =]
-}
-#endif /* WSHARK_HEAD */
-
-#ifdef WSHARK_INIT_DATA
-[=
-
-(emit init-text
-"\n#endif /* WSHARK_INIT_DATA */\n")
-(out-pop)
-
-=][= #
-
-// TEST CODE =][=
-IF (getenv "TESTING") =][=
-
-FOR flag (define len-list "")
- (define str-list "")
- (define temp-str "")
- (define header-name (out-name))
- (out-push-new (string-append (base-name) ".c"))
-
- (for-from 0) (for-by 1) =][=
-
- (if (exist? "f-name")
- (begin
- (set! temp-str (string-upcase! (get "f-name")))
- (set! len-list (string-append len-list (c-string
- (sprintf "%%%us" (- 20 (string-length temp-str))) ) "\n" ))
- (set! str-list (string-append str-list
- (c-string temp-str) "\n" ))
- )
- (begin
- (set! len-list (string-append len-list "NULL\n"))
- (set! str-list (string-append str-list "NULL\n"))
- ) )
-
- =][=
-
-ENDFOR flag
-
-\=]
-#include "[=(. header-name)=]"
-extern char ** args;
-
-#include <errno.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static char const * const fill_fmts[] = {
-[=(out-push-new)=]
-columns --spread=1 -I4 -S, --end=' };' <<_EOF_
-[=(. len-list)=]
-_EOF_
-
-printf '\nstatic char const * const flag_names[] = {\n'
-columns --spread=1 -I4 -S, --end=' };' <<_EOF_
-[=(. str-list)=]
-_EOF_
-[= (shell (out-pop #t)) =]
-
-static void
-print_bits(unsigned long long v)
-{
- static char const new_line[] = "\n";
- char const * space_fmt = new_line + 1;
- int ix = 0;
- int ct = 0;
-
- if ((v & ~LDLM_FL_ALL_FLAGS_MASK) != 0) {
- unsigned long long wrong = v & ~LDLM_FL_ALL_FLAGS_MASK;
- printf("undefined bits: 0x%016llX\n", wrong);
- v &= LDLM_FL_ALL_FLAGS_MASK;
- }
-
- for (ix = 0; v != 0ULL; ix++, v >>= 1) {
- if ((v & 0x1ULL) == 0)
- continue;
-
- printf(space_fmt, "");
- if ((++ct & 0x03) == 0)
- space_fmt = new_line;
- else
- space_fmt = fill_fmts[ix];
- fputs(flag_names[ix], stdout);
- }
- putc('\n', stdout);
-}
-
-void
-cmd_ldlm_lock_flags(void)
-{
- char * p = args[1];
- char * e;
- unsigned long long v;
- bool flip_val = false;
-
- if (p == NULL) {
- printf("no argument\n");
- return;
- }
- if (*p == '~') {
- flip_val = true;
- p++;
- }
-
- v = strtoull(p, &e, 0);
- if (*e != '\0') {
- errno = 0;
- v = strtoull(p, &e, 16);
- if ((errno != 0) || (*e != '\0')) {
- printf("invalid number: %s\n", p);
- return;
- }
- }
- if (flip_val) {
- v ^= ~0ULL;
- v &= LDLM_FL_ALL_FLAGS_MASK;
- }
-
- print_bits(v);
-}
-
-char * help_ldlm_lock_flags[] = {
- "ldlm_lock_flags",
- "flag bit names for ldlm_lock",
- "<numeric-value>",
- "The names of the bits that are set in the numeric value are printed.",
- NULL
-};
-
-#ifdef LDLM_FLAGS_PROGRAM
-#include <ctype.h>
-
-char ** args = NULL;
-
-void
-usage(int ex_code, char const * msg)
-{
- int ix = 3;
- FILE * fp = (ex_code == EXIT_SUCCESS) ? stdout : stderr;
- args = help_ldlm_lock_flags;
- if (msg != NULL)
- fprintf(fp, "%s usage error: %s\n", args[0], msg);
- fprintf(fp, "%s - %s\n", args[0], args[1]);
- fprintf(fp, "Usage: %s %s\n", args[0], args[2]);
- for (;;) {
- char * txt = args[ix++];
- if (txt == NULL)
- break;
- fprintf(fp, "%s\n", txt);
- }
- exit(ex_code);
-}
-
-int
-main(int argc, char ** argv)
-{
- int ix = 1;
- char * av[3] = { argv[0], NULL, NULL };
-
- args = av;
- switch (argc) {
- case 0: case 1:
- usage(EXIT_FAILURE, "argument missing");
-
- case 2:
- {
- char * arg = argv[1];
- if (*arg != '-')
- break;
- switch (arg[1]) {
- case '-': if (arg[2] == 'h') break;
- /* FALLTHROUGH */
- case 'h': usage(EXIT_SUCCESS, NULL);
- default: break;
- }
- break;
- }
- }
-
- while (ix < argc) {
- av[1] = argv[ix++];
- cmd_ldlm_lock_flags();
- }
- return EXIT_SUCCESS;
-}
-#endif /* LDLM_FLAGS_PROGRAM */
-[= (out-pop) =][=
-
-ENDIF TESTING
-
- * Local Variables:
- * mode: C
- * c-file-style: "linux"
- * indent-tabs-mode: t
- * End:
-
-=]
/* -*- buffer-read-only: t -*- vi: set ro:
*
- * DO NOT EDIT THIS FILE (lustre_dlm_flags.h)
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
*
- * It has been AutoGen-ed
- * From the definitions lustre_dlm_flags.def
- * and the template file lustre_dlm_flags.tpl
- *
- * lustre is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * lustre is distributed in the hope that it will be useful, but
+ * Lustre is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
/**
* \file lustre_dlm_flags.h
* The flags and collections of flags (masks) for \see struct ldlm_lock.
- * This file is derived from flag definitions in lustre_dlm_flags.def.
- * The format is defined in the lustre_dlm_flags.tpl template file.
*
* \addtogroup LDLM Lustre Distributed Lock Manager
* @{