Exemple #1
0
static void lmgr_cfg_write_default(FILE *output)
{
    print_begin_block(output, 0, LMGR_CONFIG_BLOCK, NULL);
    print_line(output, 1, "commit_behavior             : transaction");
    print_line(output, 1, "connect_retry_interval_min  : 1s");
    print_line(output, 1, "connect_retry_interval_max  : 30s");
    print_line(output, 1, "accounting  : enabled");
    fprintf(output, "\n");

#ifdef _MYSQL
    print_begin_block(output, 1, MYSQL_CONFIG_BLOCK, NULL);
    print_line(output, 2, "server  :   localhost");
    print_line(output, 2, "db      :   [MANDATORY]");
    print_line(output, 2, "user    :   robinhood");
    print_line(output, 2, "password|password_file : [MANDATORY]");
    print_line(output, 2, "port    :   (MySQL default)");
    print_line(output, 2, "socket  :   NONE");
    print_line(output, 2, "engine  :   InnoDB");
    print_end_block(output, 1);
#elif defined(_SQLITE)
    print_begin_block(output, 1, SQLITE_CONFIG_BLOCK, NULL);
    print_line(output, 2,
               "db_file              :  \"/var/robinhood/robinhood_sqlite_db\"");
    print_line(output, 2, "retry_delay_microsec :  1000 (1 millisec)");
    print_end_block(output, 1);
#endif

    print_end_block(output, 0);
}
int WriteLmgrConfigDefault( FILE * output )
{
    print_begin_block( output, 0, LMGR_CONFIG_BLOCK, NULL );
    print_line( output, 1, "commit_behavior             : autocommit" );
    print_line( output, 1, "connect_retry_interval_min  : 1s" );
    print_line( output, 1, "connect_retry_interval_max  : 30s" );
    print_line( output, 1, "user_acct  : enabled" );
    print_line( output, 1, "group_acct : enabled" );
    fprintf( output, "\n" );

#ifdef _MYSQL
    print_begin_block( output, 1, MYSQL_CONFIG_BLOCK, NULL );
    print_line( output, 2, "server  :   localhost" );
    print_line( output, 2, "db      :   [MANDATORY]" );
    print_line( output, 2, "user    :   robinhood" );
    print_line( output, 2, "password|password_file : [MANDATORY]" );
    print_line( output, 2, "port    :   (MySQL default)" );
    print_line( output, 2, "socket  :   NONE" );
    print_line( output, 2, "innodb  :   disabled" );
    print_end_block( output, 1 );
#elif defined (_SQLITE)
    print_begin_block( output, 1, SQLITE_CONFIG_BLOCK, NULL );
    print_line( output, 2, "db_file              :  \"/var/robinhood/robinhood_sqlite_db\"" );
    print_line( output, 2, "retry_delay_microsec :  1000 (1 millisec)" );
    print_end_block( output, 1 );
#endif

    print_end_block( output, 0 );
    return 0;
}
int Write_EntryProc_ConfigTemplate( FILE * output )
{
    int            i;

    print_begin_block( output, 0, ENTRYPROC_CONFIG_BLOCK, NULL );

#ifndef _LUSTRE_HSM
    print_line( output, 1, "# Raise alerts for directories with too many entries" );
    print_begin_block( output, 1, ALERT_BLOCK, "Too_many_entries_in_directory" );
    print_line( output, 2, "type == directory" );
    print_line( output, 2, "and" );
    print_line( output, 2, "dircount > 10000" );
    print_end_block( output, 1 );
    fprintf( output, "\n" );
#endif
    print_line( output, 1, "# Raise alerts for large files" );
    print_begin_block( output, 1, ALERT_BLOCK, "Large_file" );
#ifndef _LUSTRE_HSM
    print_line( output, 2, "type == file" );
    print_line( output, 2, "and" );
#endif
    print_line( output, 2, "size > 100GB" );
    print_end_block( output, 1 );
    fprintf( output, "\n" );

    print_line( output, 1, "# nbr of worker threads for processing pipeline tasks" );
    print_line( output, 1, "nb_threads = 8 ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Max number of operations in the Entry Processor pipeline." );
    print_line( output, 1, "# If the number of pending operations exceeds this limit, " );
    print_line( output, 1, "# info collectors are suspended until this count decreases" );
#ifdef _SQLITE
    print_line( output, 1, "max_pending_operations = 1000 ;" );
#else
    print_line( output, 1, "max_pending_operations = 10000 ;" );
#endif
    fprintf( output, "\n" );

    print_line( output, 1,
                "# Optionnaly specify a maximum thread count for each stage of the pipeline:" );
    print_line( output, 1, "# <stagename>_threads_max = <n> (0: use default)" );
    for ( i = 0; i < PIPELINE_STAGE_COUNT; i++ )
    {
        if ( entry_proc_pipeline[i].stage_flags & STAGE_FLAG_PARALLEL )
            print_line( output, 1, "# %s_threads_max\t= 8 ;", entry_proc_pipeline[i].stage_name );
        else if ( entry_proc_pipeline[i].stage_flags & STAGE_FLAG_MAX_THREADS )
            print_line( output, 1, "%s_threads_max\t= %u ;", entry_proc_pipeline[i].stage_name,
                        entry_proc_pipeline[i].max_thread_count );
    }
    fprintf( output, "\n" );

    print_line( output, 1, "# if set to FALSE, classes will only be matched");
    print_line( output, 1, "# at policy application time (not during a scan or reading changelog)" );
    print_line( output, 1, "match_classes = TRUE;");

    print_end_block( output, 0 );
    return 0;
}
Exemple #4
0
int FSScan_WriteConfigTemplate( FILE * output )
{
    print_begin_block( output, 0, FSSCAN_CONFIG_BLOCK, NULL );

    print_line( output, 1, "# simple scan interval (fixed)" );
#ifdef HAVE_CHANGELOGS
    print_line( output, 1, "scan_interval      =   2d ;" );
#else
    print_line( output, 1, "scan_interval      =   6h ;" );
#endif
    fprintf( output, "\n" );

    print_line( output, 1, "# min/max for adaptive scan interval:" );
    print_line( output, 1, "# the more the filesystem is full, the more frequently it is scanned." );
#ifdef HAVE_CHANGELOGS
    print_line( output, 1, "#min_scan_interval      =   24h ;" );
    print_line( output, 1, "#max_scan_interval      =    7d ;" );
#else
    print_line( output, 1, "#min_scan_interval      =    2h ;" );
    print_line( output, 1, "#max_scan_interval      =   12h ;" );
#endif
    fprintf( output, "\n" );
    print_line( output, 1, "# number of threads used for scanning the filesystem" );
    print_line( output, 1, "nb_threads_scan        =     2 ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# when a scan fails, this is the delay before retrying" );
    print_line( output, 1, "scan_retry_delay       =    1h ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# timeout for operations on the filesystem" );
    print_line( output, 1, "scan_op_timeout        =    1h ;" );
    print_line( output, 1, "# exit if operation timeout is reached?" );
    print_line( output, 1, "exit_on_timeout        =    TRUE ;" );
    print_line( output, 1, "# external command called on scan termination");
    print_line( output, 1, "# special arguments can be specified: {cfg} = config file path,");
    print_line( output, 1, "# {fspath} = path to managed filesystem");
    print_line( output, 1, "#completion_command     =    \"/path/to/my/script.sh -f {cfg} -p {fspath}\" ;" );
    fprintf( output, "\n" );

    print_line( output, 1,
                "# Internal scheduler granularity (for testing and of scan, hangs, ...)" );
    print_line( output, 1, "spooler_check_interval =  1min ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Memory preallocation parameters" );
    print_line( output, 1, "nb_prealloc_tasks      =   256 ;" );
    fprintf( output, "\n" );
    print_begin_block( output, 1, IGNORE_BLOCK, NULL );
    print_line( output, 2,
                "# ignore \".snapshot\" and \".snapdir\" directories (don't scan them)" );
    print_line( output, 2, "type == directory" );
    print_line( output, 2, "and" );
    print_line( output, 2, "( name == \".snapdir\" or name == \".snapshot\" )" );
    print_end_block( output, 1 );
    print_end_block( output, 0 );
    return 0;

}
int WriteLmgrConfigTemplate( FILE * output )
{
    print_begin_block( output, 0, LMGR_CONFIG_BLOCK, NULL );

    print_line( output, 1, "# Method for committing information to database." );
    print_line( output, 1, "# Possible values are:" );
    print_line( output, 1,
                "# - \"autocommit\": weak transactions (more efficient, but database inconsistencies may occur)" );
    print_line( output, 1,
                "# - \"transaction\": manage operations in transactions (best consistency, lower performance)" );
    print_line( output, 1,
                "# - \"periodic(<nb_transaction>)\": periodically commit (every <n> transactions)." );
#ifdef _MYSQL
    print_line( output, 1, "commit_behavior = autocommit ;" );
#elif defined (_SQLITE)
    print_line( output, 1, "commit_behavior = transaction ;" );
#endif
    fprintf( output, "\n" );
    print_line( output, 1,
                "# Minimum time (in seconds) to wait before trying to reestablish a lost connection." );
    print_line( output, 1,
                "# Then this time is multiplied by 2 until reaching connect_retry_interval_max" );
    print_line( output, 1, "connect_retry_interval_min = 1 ;" );
    print_line( output, 1, "connect_retry_interval_max = 30 ;" );

    print_line( output, 1, "# disable the following options if your are not interested in" );
    print_line( output, 1, "# user or group stats (to speed up scan)" );
    print_line( output, 1, "user_acct  = enabled ;" );
    print_line( output, 1, "group_acct = enabled ;" );
    fprintf( output, "\n" );
#ifdef _MYSQL
    print_begin_block( output, 1, MYSQL_CONFIG_BLOCK, NULL );
    print_line( output, 2, "server = \"localhost\" ;" );
    print_line( output, 2, "db     = \"robinhood_db\" ;" );
    print_line( output, 2, "user   = \"robinhood\" ;" );
    print_line( output, 2, "password_file = \"/etc/robinhood.d/.dbpassword\" ;" );
    print_line( output, 2, "port   = 3306 ;" );
    print_line( output, 2, "socket = \"/tmp/mysql.sock\" ;" );
    print_line( output, 2, "innodb = enabled ;" );
    print_end_block( output, 1 );
#elif defined (_SQLITE)
    print_begin_block( output, 1, SQLITE_CONFIG_BLOCK, NULL );
    print_line( output, 2, "db_file = \"/var/robinhood/robinhood_sqlite_db\" ;" );
    print_line( output, 2, "retry_delay_microsec = 1000 ;" );
    print_end_block( output, 1 );
#endif

    print_end_block( output, 0 );

    return 0;
}
Exemple #6
0
static void dump_msft_header(void)
{
    print_begin_block("Header");

    print_hex("magic1");
    print_hex("magic2");
    print_hex("posguid");
    print_hex("lcid");
    print_hex("lsid2");
    header_flags = print_hex("varflags");
    print_hex("version");
    print_hex("flags");
    typeinfo_cnt = print_dec("ntypeinfos");
    print_hex("helpstring");
    print_hex("helpstringcontext");
    print_hex("helpcontext");
    print_dec("nametablecont");
    print_dec("nametablechars");
    print_hex("NameOffset");
    print_hex("helpfile");
    print_hex("CustomDataOffset");
    print_hex("res44");
    print_hex("res48");
    print_hex("dispatchpos");
    print_hex("res50");

    print_end_block();
}
Exemple #7
0
static BOOL dump_msft_custdata(seg_t *seg)
{
    unsigned short vt;
    unsigned i, n;

    print_begin_block("CustData");

    for(i=0; offset < seg->offset+seg->length; i++) {
        print_offset();

        vt = tlb_read_short();
        printf("vt %d", vt);
        n = tlb_read_int();

        switch(vt) {
        case 8 /* VT_BSTR */:
            printf(" len %d: ", n);
            dump_string(n, 2);
            printf("\n");
            break;
        default:
            printf(": %x ", n);
            printf("\\%2.2x \\%2.2x\n", tlb_read_byte(), tlb_read_byte());
        }
    }

    print_end_block();
    return TRUE;
}
Exemple #8
0
int WriteLogConfigTemplate( FILE * output )
{
    print_begin_block( output, 0, RBH_LOG_CONFIG_BLOCK, NULL );

    print_line( output, 1, "# Log verbosity level" );
    print_line( output, 1, "# Possible values are: CRIT, MAJOR, EVENT, VERB, DEBUG, FULL" );
    print_line( output, 1, "debug_level = EVENT ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Log file" );
    print_line( output, 1, "log_file = \"/var/log/robinhood.log\" ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# File for reporting purge events" );
    print_line( output, 1, "report_file = \"/var/log/robinhood_reports.log\" ;" );
    fprintf( output, "\n" );
    print_line( output, 1,
                "# set alert_file, alert_mail or both depending on the alert method you wish" );
    print_line( output, 1, "alert_file = \"/var/log/robinhood_alerts.log\" ;" );
    print_line( output, 1, "alert_mail = \"root@localhost\" ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Interval for dumping stats (to logfile)" );
    print_line( output, 1, "stats_interval = 20min ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Alert batching (to send a digest instead of 1 alert per file)" );
    print_line( output, 1, "# 0: unlimited batch size, 1: no batching (1 alert per file)," ); 
    print_line( output, 1, "# N>1: batch N alerts per digest" );
    print_line( output, 1, "batch_alert_max = 5000 ;" );
    print_line( output, 1, "# Give the detail of entry attributes for each alert?" );
    print_line( output, 1, "alert_show_attrs = FALSE ;" );

    print_end_block( output, 0 );
    return 0;
}
Exemple #9
0
static int dump_msft_res0f(seg_t *seg)
{
    print_begin_block("res0f");
    dump_binary(seg->length);
    print_end_block();

    return -1;
}
Exemple #10
0
static BOOL dump_msft_res0e(seg_t *seg)
{
    print_begin_block("res0e");
    dump_binary(seg->length);
    print_end_block();

    return TRUE;
}
Exemple #11
0
static int dump_msft_res07(seg_t *seg)
{
    print_begin_block("res07");

    dump_binary(seg->length); /* FIXME */

    print_end_block();
    return -1;
}
Exemple #12
0
static BOOL dump_msft_namehashtab(seg_t *seg)
{
    print_begin_block("NameHashTab");

    dump_binary(seg->length); /* FIXME */

    print_end_block();
    return TRUE;
}
Exemple #13
0
static int dump_msft_custdata(seg_t *seg)
{
    print_begin_block("CustData");

    dump_binary(seg->length); /* FIXME */

    print_end_block();
    return -1;
}
Exemple #14
0
static int dump_msft_arraydescs(seg_t *seg)
{
    print_begin_block("ArrayDescriptions");

    dump_binary(seg->length); /* FIXME */

    print_end_block();
    return -1;
}
Exemple #15
0
static int dump_msft_stringtab(seg_t *seg)
{
    print_begin_block("StringTab");

    dump_binary(seg->length); /* FIXME */

    print_end_block();

    return -1;
}
Exemple #16
0
static int dump_msft_reftabs(seg_t *seg)
{
    print_begin_block("RefTab");

    dump_binary(seg->length); /* FIXME */

    print_end_block();

    return -1;
}
int Write_EntryProc_ConfigDefault( FILE * output )
{
    print_begin_block( output, 0, ENTRYPROC_CONFIG_BLOCK, NULL );
    print_line( output, 1, "nb_threads             :  8" );
    print_line( output, 1, "max_pending_operations :  10000" );
    print_line( output, 1, "match_classes          :  TRUE" );
    print_line( output, 1, "alert                  :  NONE" );
    print_end_block( output, 0 );
    return 0;
}
Exemple #18
0
int Write_Rmdir_ConfigDefault( FILE * output )
{
    print_begin_block( output, 0, RMDIR_PARAM_BLOCK, NULL );
    print_line( output, 1, "runtime_interval      : 6h" );
    print_line( output, 1, "nb_threads_rmdir      : 4" );
    print_line( output, 1, "rmdir_queue_size      : 256" );
    print_end_block( output, 0 );

    return 0;
}
Exemple #19
0
static int dump_msft_libtab(seg_t *seg)
{
    print_begin_block("LibTab");

    dump_binary(seg->length); /* FIXME */

    print_end_block();

    assert(offset == seg->offset+seg->length);
    return -1;
}
Exemple #20
0
static void dump_msft_segdir(void)
{
    int i;

    print_begin_block("SegDir");

    for(i=0; i < sizeof(segdir)/sizeof(segdir[0]); i++)
        dump_msft_seg(segdir+i);

    print_end_block();
}
Exemple #21
0
static BOOL dump_msft_guidhashtab(seg_t *seg)
{
    print_begin_block("GuidHashTab");

    dump_binary(seg->length); /* FIXME */

    print_end_block();

    assert(offset == seg->offset+seg->length);
    return TRUE;
}
Exemple #22
0
static void dump_msft_seg(seg_t *seg)
{
    print_begin_block(seg->name);

    seg->offset = print_hex("offset");
    seg->length = print_dec("length");
    print_hex("res08");
    print_hex("res0c");

    print_end_block();
}
Exemple #23
0
int WriteLogConfigDefault( FILE * output )
{
    print_begin_block( output, 0, RBH_LOG_CONFIG_BLOCK, NULL );
    print_line( output, 1, "debug_level    :   EVENT" );
    print_line( output, 1, "log_file       :   \"/var/log/robinhood.log\"" );
    print_line( output, 1, "report_file    :   \"/var/log/robinhood_reports.log\"" );
    print_line( output, 1, "alert_file     :   \"/var/log/robinhood_alerts.log\"" );
    print_line( output, 1, "syslog_facility:   local1.info" );
    print_line( output, 1, "stats_interval :   15min" );
    print_line( output, 1, "batch_alert_max:   1 (no batching)" );
    print_line( output, 1, "alert_show_attrs: FALSE" );
    print_end_block( output, 0 );
    return 0;
}
Exemple #24
0
int Write_Rmdir_ConfigTemplate( FILE * output )
{
    print_begin_block( output, 0, RMDIR_PARAM_BLOCK, NULL );
    print_line( output, 1, "# Interval for performing empty directory removal" );
    print_line( output, 1, "runtime_interval = 12h ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Number of threads for performing rmdir operations" );
    print_line( output, 1, "nb_threads_rmdir = 4 ;" );
    fprintf( output, "\n" );
    print_line( output, 1, "# Queue size (for leveraging rmdir threads load)" );
    print_line( output, 1, "rmdir_queue_size = 256 ;" );
    print_end_block( output, 0 );
    return 0;
}
Exemple #25
0
static int dump_msft_typedesctab(seg_t *seg)
{
    int i;

    print_begin_block("TypedescTab");

    for(i = 0; offset < seg->offset+seg->length; i++)
        dump_msft_typedesc(i);

    print_end_block();

    assert(offset == seg->offset+seg->length);
    return -1;
}
Exemple #26
0
static void log_cfg_write_default(FILE *output)
{
    print_begin_block(output, 0, RBH_LOG_CONFIG_BLOCK, NULL);
    print_line(output, 1, "debug_level    :   EVENT");
    print_line(output, 1, "log_file       :   \"/var/log/robinhood.log\"");
    print_line(output, 1,
               "report_file    :   \"/var/log/robinhood_actions.log\"");
    print_line(output, 1,
               "alert_file     :   \"/var/log/robinhood_alerts.log\"");
    print_line(output, 1, "syslog_facility:   local1.info");
    print_line(output, 1, "stats_interval :   15min");
    print_line(output, 1, "batch_alert_max:   1 (no batching)");
    print_line(output, 1, "alert_show_attrs: no");
    print_line(output, 1, "log_procname: no");
    print_line(output, 1, "log_hostname: no");
    print_end_block(output, 0);
}
Exemple #27
0
static void log_cfg_write_template(FILE *output)
{
    print_begin_block(output, 0, RBH_LOG_CONFIG_BLOCK, NULL);

    print_line(output, 1, "# Log verbosity level");
    print_line(output, 1,
               "# Possible values are: CRIT, MAJOR, EVENT, VERB, DEBUG, FULL");
    print_line(output, 1, "debug_level = EVENT ;");
    fprintf(output, "\n");
    print_line(output, 1, "# Log file");
    print_line(output, 1, "log_file = \"/var/log/robinhood.log\" ;");
    fprintf(output, "\n");
    print_line(output, 1, "# File for reporting purge events");
    print_line(output, 1, "report_file = \"/var/log/robinhood_actions.log\" ;");
    fprintf(output, "\n");
    print_line(output, 1,
               "# set alert_file, alert_mail or both depending on the alert method you wish");
    print_line(output, 1, "alert_file = \"/var/log/robinhood_alerts.log\" ;");
    print_line(output, 1, "alert_mail = \"root@localhost\" ;");
    fprintf(output, "\n");
#ifdef HAVE_CHANGELOGS
    print_line(output, 1, "# File to dump changelogs into");
    print_line(output, 1, "changelogs_file = \"/var/log/robinhood_cl.log\" ;");
#endif
    fprintf(output, "\n");
    print_line(output, 1, "# Interval for dumping stats (to logfile)");
    print_line(output, 1, "stats_interval = 20min ;");
    fprintf(output, "\n");
    print_line(output, 1,
               "# Alert batching (to send a digest instead of 1 alert per file)");
    print_line(output, 1,
               "# 0: unlimited batch size, 1: no batching (1 alert per file),");
    print_line(output, 1, "# N>1: batch N alerts per digest");
    print_line(output, 1, "batch_alert_max = 5000 ;");
    print_line(output, 1,
               "# Give the detail of entry attributes for each alert?");
    print_line(output, 1, "alert_show_attrs = no ;");
    fprintf(output, "\n");
    print_line(output, 1, "# whether the process name appears in the log line");
    print_line(output, 1, "log_procname = yes;");
    print_line(output, 1, "# whether the host name appears in the log line");
    print_line(output, 1, "log_hostname = yes;");
    print_end_block(output, 0);
}
Exemple #28
0
int Write_ResourceMon_ConfigDefault(FILE * output)
{
    print_begin_block(output, 0, PURGE_PARAM_BLOCK, NULL);
    print_line(output, 1, "nb_threads_purge      : 4");
    print_line(output, 1, "post_purge_df_latency : 1min");
    print_line(output, 1, "purge_queue_size      : 4096");
    print_line(output, 1, "db_result_size_max    : 100000");
#ifdef ATTR_INDEX_status
    print_line(output, 1, "check_purge_status_on_startup: TRUE");
#endif
    print_line(output, 1, "recheck_ignored_classes: TRUE");
#ifdef _TMP_FS_MGR
    print_line(output, 1, "purge_command          : <built-in: unlink>");
#endif
    print_end_block(output, 0);

    fprintf(output, "\n");

    return 0;
}
Exemple #29
0
int FSScan_WriteDefaultConfig( FILE * output )
{
    print_begin_block( output, 0, FSSCAN_CONFIG_BLOCK, NULL );
#ifdef _LUSTRE_HSM
    print_line( output, 1, "min_scan_interval      :   24h" );
    print_line( output, 1, "max_scan_interval      :    7d" );
#else
    print_line( output, 1, "min_scan_interval      :    2h" );
    print_line( output, 1, "max_scan_interval      :   12h" );
#endif
    print_line( output, 1, "scan_retry_delay       :    1h" );
    print_line( output, 1, "nb_threads_scan        :     2" );
    print_line( output, 1, "scan_op_timeout        :     0 (disabled)" );
    print_line( output, 1, "exit_on_timeout        : FALSE" );
    print_line( output, 1, "spooler_check_interval :  1min" );
    print_line( output, 1, "nb_prealloc_tasks      :   256" );
    print_line( output, 1, "ignore                 :  NONE" );
    print_line( output, 1, "completion_command     :  NONE" );
    print_end_block( output, 0 );
    return 0;
}
Exemple #30
0
int WriteGlobalConfigDefault( FILE * output )
{
    print_begin_block( output, 0, GLOBAL_CONFIG_BLOCK, NULL );
    print_line( output, 1, "fs_path       :  [MANDATORY]" );
#ifdef _HAVE_FID
    print_line( output, 1, "fs_type       :  lustre" );
#else
    print_line( output, 1, "fs_type       :  [MANDATORY]" );
#endif
    print_line( output, 1, "fs_key        :  fsname" );
    print_line( output, 1, "lock_file     :  \"/var/locks/robinhood.lock\"" );
    print_line( output, 1, "stay_in_fs    :  TRUE" );
    print_line( output, 1, "check_mounted :  TRUE" );

#if defined( _LUSTRE ) && defined( _MDS_STAT_SUPPORT )
    print_line( output, 1, "direct_mds_stat :   FALSE" );
#endif

    print_end_block( output, 0 );
    return 0;
}