<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
img {
max-width: 100%;
height: auto;
}
p.details {
font-style:italic;
color:#777
}
.footer p {
font-size:small;
color:#777
}
pre.commit-message {
white-space: pre-wrap;
}
.file-stats a {
text-decoration: none;
}
.file-stats .new-file {
color: #090;
}
.file-stats .deleted-file {
color: #B00;
}
</style>
<body>
<div class='content'>
<h3>
Shane Snyder pushed to branch lustre-mod
at <a href="https://xgitlab.cels.anl.gov/darshan/darshan">darshan / darshan</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/62ed332ac6657fb3241e8e31c9fdc0e6ad5f00de">62ed332a</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-02-23T16:55:27-06:00</i>
</div>
<pre class='commit-message'>add stubbed out lustre source and header files</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/1eecb3b1dcb46a10a3ae1511a35489dbff79a828">1eecb3b1</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-02-23T16:55:27-06:00</i>
</div>
<pre class='commit-message'>clean up headers for some modules</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/ffeeed89b904d01c077a8b2bbe9adc99a37b2edb">ffeeed89</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-02-23T16:56:24-06:00</i>
</div>
<pre class='commit-message'>some initial luste mod logic and makefile changes</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/21c1b5d01d78a5709494e3ff3d2fa1d8a2f53a7b">21c1b5d0</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-02-24T22:27:10-06:00</i>
</div>
<pre class='commit-message'>cleanup bgq module to use fs_info struct</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/657c5b565dd8c7b847c956a39c61f8711ce21833">657c5b56</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-02-24T22:28:58-06:00</i>
</div>
<pre class='commit-message'>initial runtime lustre module implementation
the POSIX module will call into the Lustre module for each file
record created that corresponds to a file from a Lustre FS. No
counters are currently stored but most of the module strucutre
has been stubbed.</pre>
</li>
</ul>
<h4>13 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
darshan-bgq-log-format.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
darshan-log-format.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
<span class='new-file'>
+
darshan-lustre-log-format.h
</span>
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
darshan-runtime/Makefile.in
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
darshan-runtime/darshan.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-5'>
darshan-runtime/lib/darshan-bgq.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-6'>
darshan-runtime/lib/darshan-core-init-finalize.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-7'>
darshan-runtime/lib/darshan-core.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-8'>
darshan-runtime/lib/darshan-hdf5.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-9'>
<span class='new-file'>
+
darshan-runtime/lib/darshan-lustre.c
</span>
</a>
</li>
<li class='file-stats'>
<a href='#diff-10'>
darshan-runtime/lib/darshan-mpiio.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-11'>
darshan-runtime/lib/darshan-pnetcdf.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-12'>
darshan-runtime/lib/darshan-posix.c
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-0'>
<strong>
darshan-bgq-log-format.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-bgq-log-format.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-bgq-log-format.h
</span><span style="color: #aaaaaa">@@ -69,7 +69,6 @@ struct darshan_bgq_record
</span> {
darshan_record_id f_id;
int64_t rank;
<span style="color: #000000;background-color: #ffdddd">- int alignment;
</span> int64_t counters[BGQ_NUM_INDICES];
double fcounters[BGQ_F_NUM_INDICES];
};
</code></pre>
<br>
</li>
<li id='diff-1'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-1'>
<strong>
darshan-log-format.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-log-format.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-log-format.h
</span><span style="color: #aaaaaa">@@ -103,6 +103,7 @@ struct darshan_record
</span> #include "darshan-hdf5-log-format.h"
#include "darshan-pnetcdf-log-format.h"
#include "darshan-bgq-log-format.h"
<span style="color: #000000;background-color: #ddffdd">+#include "darshan-lustre-log-format.h"
</span>
/* X-macro for keeping module ordering consistent */
/* NOTE: first val used to define module enum values,
<span style="color: #aaaaaa">@@ -120,7 +121,8 @@ struct darshan_record
</span> X(DARSHAN_MPIIO_MOD, "MPI-IO", DARSHAN_MPIIO_VER, &mpiio_logutils) \
X(DARSHAN_HDF5_MOD, "HDF5", DARSHAN_HDF5_VER, &hdf5_logutils) \
X(DARSHAN_PNETCDF_MOD, "PNETCDF", DARSHAN_PNETCDF_VER, &pnetcdf_logutils) \
<span style="color: #000000;background-color: #ffdddd">- X(DARSHAN_BGQ_MOD, "BG/Q", DARSHAN_BGQ_VER, &bgq_logutils)
</span><span style="color: #000000;background-color: #ddffdd">+ X(DARSHAN_BGQ_MOD, "BG/Q", DARSHAN_BGQ_VER, &bgq_logutils) \
+ X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, NULL)
</span>
/* unique identifiers to distinguish between available darshan modules */
/* NOTES: - valid ids range from [0...DARSHAN_MAX_MODS-1]
</code></pre>
<br>
</li>
<li id='diff-2'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-2'>
<strong>
darshan-lustre-log-format.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- /dev/null
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-lustre-log-format.h
</span><span style="color: #aaaaaa">@@ -0,0 +1,40 @@
</span><span style="color: #000000;background-color: #ddffdd">+/*
+ * Copyright (C) 2015 University of Chicago.
+ * See COPYRIGHT notice in top-level directory.
+ *
+ */
+
+#ifndef __DARSHAN_LUSTRE_LOG_FORMAT_H
+#define __DARSHAN_LUSTRE_LOG_FORMAT_H
+
+/* current Lustre log format version */
+#define DARSHAN_LUSTRE_VER 1
+
+/* TODO: add integer counters here (e.g., counter for stripe width, stripe size, etc etc) */
+#define LUSTRE_COUNTERS \
+ /* end of counters */\
+ X(LUSTRE_NUM_INDICES)
+
+#define X(a) a,
+/* integer statistics for Lustre file records */
+enum darshan_lustre_indices
+{
+ LUSTRE_COUNTERS
+};
+#undef X
+
+/* record structure for the Lustre module. a record is created and stored for
+ * every file opened that belongs to a Lustre file system. This record includes:
+ * - a corresponding record identifier (created by hashing the file path)
+ * - the rank of the process which opened the file (-1 for shared files)
+ * - integer file I/O statistics (stripe size, width, # of OSTs, etc.)
+ */
+struct darshan_lustre_record
+{
+ darshan_record_id rec_id;
+ int64_t rank;
+ int64_t counters[LUSTRE_NUM_INDICES];
+};
+
+#endif /* __DARSHAN_LUSTRE_LOG_FORMAT_H */
+
</span></code></pre>
<br>
</li>
<li id='diff-3'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-3'>
<strong>
darshan-runtime/Makefile.in
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/Makefile.in
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/Makefile.in
</span><span style="color: #aaaaaa">@@ -36,6 +36,10 @@ LIBS = -lz @LIBBZ2@
</span> DARSHAN_STATIC_MOD_OBJS = lib/darshan-posix.o lib/darshan-mpiio.o lib/darshan-hdf5.o lib/darshan-pnetcdf.o
DARSHAN_DYNAMIC_MOD_OBJS = lib/darshan-posix.po lib/darshan-mpiio.po lib/darshan-hdf5.po lib/darshan-pnetcdf.po
<span style="color: #000000;background-color: #ddffdd">+# TODO: make the lustre module enabled using config options
+DARSHAN_STATIC_MOD_OBJS += lib/darshan-lustre.o
+DARSHAN_DYNAMIC_MOD_OBJS += lib/darshan-lustre.po
+
</span> ifdef DARSHAN_USE_BGQ
DARSHAN_STATIC_MOD_OBJS += lib/darshan-bgq.o
DARSHAN_DYNAMIC_MOD_OBJS += lib/darshan-bgq.po
<span style="color: #aaaaaa">@@ -49,63 +53,69 @@ lib::
</span> lib/darshan-core-init-finalize.o: lib/darshan-core-init-finalize.c darshan.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
$(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-core-init-finalize.po: lib/darshan-core-init-finalize.c darshan.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-core-init-finalize.po: lib/darshan-core-init-finalize.c darshan.h darshan-dynamic.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
lib/darshan-core.o: lib/darshan-core.c darshan.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
$(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-core.po: lib/darshan-core.c darshan.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-core.po: lib/darshan-core.c darshan.h darshan-dynamic.h darshan-core.h $(DARSHAN_LOG_FORMAT) | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-common.o: lib/darshan-common.c darshan.h $(DARSHAN_LOG_FORMAT) | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-common.o: lib/darshan-common.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-common.po: lib/darshan-common.c darshan.h $(DARSHAN_LOG_FORMAT) | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-common.po: lib/darshan-common.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-null.o: lib/darshan-null.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-null-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-null.o: lib/darshan-null.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-null-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-null.po: lib/darshan-null.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-null-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-null.po: lib/darshan-null.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-null-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-posix.o: lib/darshan-posix.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-posix-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-posix.o: lib/darshan-posix.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-posix-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-posix.po: lib/darshan-posix.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-posix-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-posix.po: lib/darshan-posix.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-posix-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-mpiio.o: lib/darshan-mpiio.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-mpiio.o: lib/darshan-mpiio.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-mpiio.po: lib/darshan-mpiio.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-mpiio.po: lib/darshan-mpiio.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-bgq.o: lib/darshan-bgq.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-bgq.o: lib/darshan-bgq.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-bgq.po: lib/darshan-bgq.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-bgq.po: lib/darshan-bgq.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-mpiio-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-hdf5.o: lib/darshan-hdf5.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-hdf5-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-hdf5.o: lib/darshan-hdf5.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-hdf5-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-hdf5.po: lib/darshan-hdf5.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-hdf5-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-hdf5.po: lib/darshan-hdf5.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-hdf5-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
lib/darshan-hdf5-stubs.o: lib/darshan-hdf5-stubs.c darshan.h $(DARSHAN_LOG_FORMAT) | lib
$(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-pnetcdf.o: lib/darshan-pnetcdf.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-pnetcdf-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-pnetcdf.o: lib/darshan-pnetcdf.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-pnetcdf-log-format.h | lib
</span> $(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ffdddd">-lib/darshan-pnetcdf.po: lib/darshan-pnetcdf.c darshan.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-pnetcdf-log-format.h | lib
</span><span style="color: #000000;background-color: #ddffdd">+lib/darshan-pnetcdf.po: lib/darshan-pnetcdf.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-pnetcdf-log-format.h | lib
</span> $(CC) $(CFLAGS_SHARED) -c $< -o $@
lib/darshan-pnetcdf-stubs.o: lib/darshan-pnetcdf-stubs.c darshan.h $(DARSHAN_LOG_FORMAT) | lib
$(CC) $(CFLAGS) -c $< -o $@
<span style="color: #000000;background-color: #ddffdd">+lib/darshan-lustre.o: lib/darshan-lustre.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | lib
+ $(CC) $(CFLAGS) -c $< -o $@
+
+lib/darshan-lustre.po: lib/darshan-hdf5.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | lib
+ $(CC) $(CFLAGS_SHARED) -c $< -o $@
+
</span> lib/lookup3.o: lib/lookup3.c
$(CC) $(CFLAGS) -c $< -o $@
</code></pre>
<br>
</li>
<li id='diff-4'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-4'>
<strong>
darshan-runtime/darshan.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/darshan.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/darshan.h
</span><span style="color: #aaaaaa">@@ -80,6 +80,13 @@ struct darshan_module_funcs
</span> void (*shutdown)(void);
};
<span style="color: #000000;background-color: #ddffdd">+/* stores FS info from statfs calls for a given mount point */
+struct darshan_fs_info
+{
+ int fs_type;
+ int block_size;
+};
+
</span> /* paths that darshan will not trace */
extern char* darshan_path_exclusions[]; /* defined in lib/darshan-core.c */
<span style="color: #aaaaaa">@@ -134,7 +141,7 @@ void darshan_core_register_record(
</span> int printable_flag,
int mod_limit_flag,
darshan_record_id *rec_id,
<span style="color: #000000;background-color: #ffdddd">- int *file_alignment);
</span><span style="color: #000000;background-color: #ddffdd">+ struct darshan_fs_info *fs_info);
</span>
/* darshan_core_unregister_record()
*
</code></pre>
<br>
</li>
<li id='diff-5'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-5'>
<strong>
darshan-runtime/lib/darshan-bgq.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-bgq.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-bgq.c
</span><span style="color: #aaaaaa">@@ -48,7 +48,6 @@ static int instrumentation_disabled = 0;
</span>
/* my_rank indicates the MPI rank of this process */
static int my_rank = -1;
<span style="color: #000000;background-color: #ffdddd">-static int darshan_mem_alignment = 1;
</span>
/* internal helper functions for the BGQ module */
void bgq_runtime_initialize(void);
<span style="color: #aaaaaa">@@ -127,7 +126,7 @@ void bgq_runtime_initialize()
</span> &bgq_mod_fns,
&my_rank,
&mem_limit,
<span style="color: #000000;background-color: #ffdddd">- &darshan_mem_alignment);
</span><span style="color: #000000;background-color: #ddffdd">+ NULL);
</span>
/* return if no memory assigned by darshan-core */
if(mem_limit == 0)
<span style="color: #aaaaaa">@@ -162,7 +161,7 @@ void bgq_runtime_initialize()
</span> 1,
0,
&bgq_runtime->record.f_id,
<span style="color: #000000;background-color: #ffdddd">- &bgq_runtime->record.alignment);
</span><span style="color: #000000;background-color: #ddffdd">+ NULL);
</span>
/* if record is set to 0, darshan-core is out of space and will not
* track this record, so we should avoid tracking it, too
</code></pre>
<br>
</li>
<li id='diff-6'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-6'>
<strong>
darshan-runtime/lib/darshan-core-init-finalize.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-core-init-finalize.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-core-init-finalize.c
</span><span style="color: #aaaaaa">@@ -15,6 +15,7 @@
</span>
#include "darshan.h"
#include "darshan-core.h"
<span style="color: #000000;background-color: #ddffdd">+#include "darshan-dynamic.h"
</span>
#ifdef DARSHAN_PRELOAD
</code></pre>
<br>
</li>
<li id='diff-7'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-7'>
<strong>
darshan-runtime/lib/darshan-core.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-core.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-core.c
</span><span style="color: #aaaaaa">@@ -79,9 +79,9 @@ void (*mod_static_init_fns[])(void) =
</span> #define DARSHAN_MAX_MNT_TYPE 32
struct mnt_data
{
<span style="color: #000000;background-color: #ffdddd">- int block_size;
</span> char path[DARSHAN_MAX_MNT_PATH];
char type[DARSHAN_MAX_MNT_TYPE];
<span style="color: #000000;background-color: #ddffdd">+ struct darshan_fs_info fs_info;
</span> };
static struct mnt_data mnt_data_array[DARSHAN_MAX_MNTS];
static int mnt_data_count = 0;
<span style="color: #aaaaaa">@@ -96,8 +96,8 @@ static void darshan_get_exe_and_mounts_root(
</span> int space_left);
static char* darshan_get_exe_and_mounts(
struct darshan_core_runtime *core);
<span style="color: #000000;background-color: #ffdddd">-static void darshan_block_size_from_path(
- const char *path, int *block_size);
</span><span style="color: #000000;background-color: #ddffdd">+static void darshan_fs_info_from_path(
+ const char *path, struct darshan_fs_info *fs_info);
</span> static void darshan_get_shared_records(
struct darshan_core_runtime *core, darshan_record_id **shared_recs,
int *shared_rec_cnt);
<span style="color: #aaaaaa">@@ -952,12 +952,13 @@ static void add_entry(char* trailing_data, int* space_left, struct mntent *entry
</span> #define LL_SUPER_MAGIC 0x0BD00BD0
#endif
ret = statfs(entry->mnt_dir, &statfsbuf);
<span style="color: #000000;background-color: #ddffdd">+ mnt_data_array[mnt_data_count].fs_info.fs_type = statfsbuf.f_type;
</span> if(ret == 0 && statfsbuf.f_type != LL_SUPER_MAGIC)
<span style="color: #000000;background-color: #ffdddd">- mnt_data_array[mnt_data_count].block_size = statfsbuf.f_bsize;
</span><span style="color: #000000;background-color: #ddffdd">+ mnt_data_array[mnt_data_count].fs_info.block_size = statfsbuf.f_bsize;
</span> else if(ret == 0 && statfsbuf.f_type == LL_SUPER_MAGIC)
<span style="color: #000000;background-color: #ffdddd">- mnt_data_array[mnt_data_count].block_size = 1024*1024;
</span><span style="color: #000000;background-color: #ddffdd">+ mnt_data_array[mnt_data_count].fs_info.block_size = 1024*1024;
</span> else
<span style="color: #000000;background-color: #ffdddd">- mnt_data_array[mnt_data_count].block_size = 4096;
</span><span style="color: #000000;background-color: #ddffdd">+ mnt_data_array[mnt_data_count].fs_info.block_size = 4096;
</span>
/* store mount information for use in header of darshan log */
ret = snprintf(tmp_mnt, 256, "\n%s\t%s",
<span style="color: #aaaaaa">@@ -1097,16 +1098,17 @@ static char* darshan_get_exe_and_mounts(struct darshan_core_runtime *core)
</span> return(trailing_data);
}
<span style="color: #000000;background-color: #ffdddd">-static void darshan_block_size_from_path(const char *path, int *block_size)
</span><span style="color: #000000;background-color: #ddffdd">+static void darshan_fs_info_from_path(const char *path, struct darshan_fs_info *fs_info)
</span> {
int i;
<span style="color: #000000;background-color: #ffdddd">- *block_size = -1;
</span><span style="color: #000000;background-color: #ddffdd">+ fs_info->fs_type = -1;
+ fs_info->block_size = -1;
</span>
for(i=0; i<mnt_data_count; i++)
{
if(!(strncmp(mnt_data_array[i].path, path, strlen(mnt_data_array[i].path))))
{
<span style="color: #000000;background-color: #ffdddd">- *block_size = mnt_data_array[i].block_size;
</span><span style="color: #000000;background-color: #ddffdd">+ *fs_info = mnt_data_array[i].fs_info;
</span> return;
}
}
<span style="color: #aaaaaa">@@ -1695,7 +1697,7 @@ void darshan_core_register_record(
</span> int printable_flag,
int mod_limit_flag,
darshan_record_id *rec_id,
<span style="color: #000000;background-color: #ffdddd">- int *file_alignment)
</span><span style="color: #000000;background-color: #ddffdd">+ struct darshan_fs_info *fs_info)
</span> {
darshan_record_id tmp_rec_id;
struct darshan_core_record_ref *ref;
<span style="color: #aaaaaa">@@ -1743,10 +1745,10 @@ void darshan_core_register_record(
</span> DARSHAN_MOD_FLAG_SET(ref->mod_flags, mod_id);
DARSHAN_CORE_UNLOCK();
<span style="color: #000000;background-color: #ffdddd">- if(file_alignment)
- darshan_block_size_from_path(name, file_alignment);
-
</span> *rec_id = tmp_rec_id;
<span style="color: #000000;background-color: #ddffdd">+ if(fs_info)
+ darshan_fs_info_from_path(name, fs_info);
+
</span> return;
}
</code></pre>
<br>
</li>
<li id='diff-8'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-8'>
<strong>
darshan-runtime/lib/darshan-hdf5.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-hdf5.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-hdf5.c
</span><span style="color: #aaaaaa">@@ -4,6 +4,9 @@
</span> *
*/
<span style="color: #000000;background-color: #ddffdd">+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+
</span> #include "darshan-runtime-config.h"
#include <stdio.h>
#include <unistd.h>
<span style="color: #aaaaaa">@@ -16,7 +19,6 @@
</span> #include <errno.h>
#include <search.h>
#include <assert.h>
<span style="color: #000000;background-color: #ffdddd">-#define __USE_GNU
</span> #include <pthread.h>
#include "uthash.h"
</code></pre>
<br>
</li>
<li id='diff-9'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-9'>
<strong>
darshan-runtime/lib/darshan-lustre.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- /dev/null
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-lustre.c
</span><span style="color: #aaaaaa">@@ -0,0 +1,223 @@
</span><span style="color: #000000;background-color: #ddffdd">+/*
+ * Copyright (C) 2015 University of Chicago.
+ * See COPYRIGHT notice in top-level directory.
+ *
+ */
+
+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+
+#include "darshan-runtime-config.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <pthread.h>
+
+#include "uthash.h"
+
+#include "darshan.h"
+#include "darshan-dynamic.h"
+
+/* TODO: once mmap merge is complete, we can just use an array
+ * to store record data rather than a hash table -- in that
+ * branch, register_record() returns whether the record
+ * already exists, at which point we won't need to instrument
+ * more data, since the Lustre record data is immutable. records
+ * could just be appended to the array if there is no need to
+ * search for a specific record.
+ */
+struct lustre_record_ref
+{
+ struct darshan_lustre_record *record;
+ UT_hash_handle hlink;
+};
+
+struct lustre_runtime
+{
+ struct lustre_record_ref *ref_array;
+ struct darshan_lustre_record *record_array;
+ int record_array_size;
+ int record_array_ndx;
+ struct lustre_record_ref *record_hash;
+};
+
+static struct lustre_runtime *lustre_runtime = NULL;
+static pthread_mutex_t lustre_runtime_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+static int instrumentation_disabled = 0;
+static int my_rank = -1;
+
+static void lustre_runtime_initialize(void);
+
+static void lustre_begin_shutdown(void);
+static void lustre_get_output_data(MPI_Comm mod_comm, darshan_record_id *shared_recs,
+ int shared_rec_count, void **lustre_buf, int *lustre_buf_sz);
+static void lustre_shutdown(void);
+
+#define LUSTRE_LOCK() pthread_mutex_lock(&lustre_runtime_mutex)
+#define LUSTRE_UNLOCK() pthread_mutex_unlock(&lustre_runtime_mutex)
+
+/* TODO: is there any way we can further compact Lustre data to save space?
+ * e.g., are all files in the same directory guaranteed same striping parameters?
+ * if so, can we store stripe parameters on per-directory basis and the OST
+ * list on a per-file basis? maybe the storage savings are small enough this isn't
+ * worth it, but nice to keep in mind
+ */
+
+void darshan_instrument_lustre_file(char *filepath)
+{
+ struct lustre_record_ref *lustre_ref;
+ darshan_record_id rec_id;
+ int limit_flag;
+
+ LUSTRE_LOCK();
+ /* make sure the lustre module is already initialized */
+ lustre_runtime_initialize();
+
+ limit_flag = (lustre_runtime->record_array_ndx >= lustre_runtime->record_array_size);
+
+ /* register a Lustre file record with Darshan */
+ darshan_core_register_record(
+ (void *)filepath,
+ strlen(filepath),
+ DARSHAN_LUSTRE_MOD,
+ 1,
+ limit_flag,
+ &rec_id,
+ NULL);
+
+ /* if record id is 0, darshan has no more memory for instrumenting */
+ if(rec_id == 0)
+ return;
+
+ HASH_FIND(hlink, lustre_runtime->record_hash, &rec_id,
+ sizeof(darshan_record_id), lustre_ref);
+ if(!lustre_ref)
+ {
+ /* no existing record, allocate a new one and add it to the hash */
+ lustre_ref = &(lustre_runtime->ref_array[lustre_runtime->record_array_ndx]);
+ lustre_ref->record = &(lustre_runtime->record_array[lustre_runtime->record_array_ndx]);
+ lustre_ref->record->rec_id = rec_id;
+ lustre_ref->record->rank = my_rank;
+
+ /* TODO: gather lustre data, store in record hash */
+ /* counters in lustre_ref->record->counters */
+
+ HASH_ADD(hlink, lustre_runtime->record_hash, record->rec_id,
+ sizeof(darshan_record_id), lustre_ref);
+ lustre_runtime->record_array_ndx++;
+ }
+
+ LUSTRE_UNLOCK();
+ return;
+}
+
+static void lustre_runtime_initialize()
+{
+ int mem_limit;
+ struct darshan_module_funcs lustre_mod_fns =
+ {
+ .begin_shutdown = &lustre_begin_shutdown,
+ .get_output_data = &lustre_get_output_data,
+ .shutdown = &lustre_shutdown
+ };
+
+ /* don't do anything if already initialized or instrumenation is disabled */
+ if(lustre_runtime || instrumentation_disabled)
+ return;
+
+ /* register the lustre module with darshan-core */
+ darshan_core_register_module(
+ DARSHAN_LUSTRE_MOD,
+ &lustre_mod_fns,
+ &my_rank,
+ &mem_limit,
+ NULL);
+
+ /* return if no memory assigned by darshan core */
+ if(mem_limit == 0)
+ return;
+
+ lustre_runtime = malloc(sizeof(*lustre_runtime));
+ if(!lustre_runtime)
+ return;
+ memset(lustre_runtime, 0, sizeof(*lustre_runtime));
+
+ /* allocate array of Lustre records according to the amount of memory
+ * assigned by Darshan
+ */
+ lustre_runtime->record_array_size = mem_limit / sizeof(struct darshan_lustre_record);
+
+ lustre_runtime->ref_array = malloc(lustre_runtime->record_array_size *
+ sizeof(struct lustre_record_ref));
+ lustre_runtime->record_array = malloc(lustre_runtime->record_array_size *
+ sizeof(struct darshan_lustre_record));
+ if(!lustre_runtime->ref_array || !lustre_runtime->record_array)
+ {
+ lustre_runtime->record_array_size = 0;
+ return;
+ }
+ memset(lustre_runtime->ref_array, 0, lustre_runtime->record_array_size *
+ sizeof(struct lustre_record_ref));
+ memset(lustre_runtime->record_array, 0, lustre_runtime->record_array_size *
+ sizeof(struct darshan_lustre_record));
+
+ return;
+}
+
+/**************************************************************************
+ * Functions exported by Lustre module for coordinating with darshan-core *
+ **************************************************************************/
+
+static void lustre_begin_shutdown(void)
+{
+ assert(lustre_runtime);
+
+ LUSTRE_LOCK();
+ /* disable further instrumentation while Darshan shuts down */
+ instrumentation_disabled = 1;
+ LUSTRE_UNLOCK();
+
+ return;
+}
+
+static void lustre_get_output_data(
+ MPI_Comm mod_comm,
+ darshan_record_id *shared_recs,
+ int shared_rec_count,
+ void **lustre_buf,
+ int *lustre_buf_sz)
+{
+ assert(lustre_runtime);
+
+ /* TODO: determine lustre record shared across all processes,
+ * and have only rank 0 write these records out. No shared
+ * reductions should be necessary as the Lustre data for a
+ * given file should be the same on each process
+ */
+
+ return;
+}
+
+static void lustre_shutdown(void)
+{
+ assert(lustre_runtime);
+
+ /* TODO: free data structures */
+
+ lustre_runtime = NULL;
+
+ return;
+}
+
+/*
+ * Local variables:
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ *
+ * vim: ts=8 sts=4 sw=4 expandtab
+ */
</span></code></pre>
<br>
</li>
<li id='diff-10'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-10'>
<strong>
darshan-runtime/lib/darshan-mpiio.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-mpiio.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-mpiio.c
</span><span style="color: #aaaaaa">@@ -4,6 +4,9 @@
</span> *
*/
<span style="color: #000000;background-color: #ddffdd">+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+
</span> #include "darshan-runtime-config.h"
#include <stdio.h>
#include <unistd.h>
<span style="color: #aaaaaa">@@ -17,7 +20,6 @@
</span> #include <errno.h>
#include <search.h>
#include <assert.h>
<span style="color: #000000;background-color: #ffdddd">-#define __USE_GNU
</span> #include <pthread.h>
#include "uthash.h"
</code></pre>
<br>
</li>
<li id='diff-11'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-11'>
<strong>
darshan-runtime/lib/darshan-pnetcdf.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-pnetcdf.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-pnetcdf.c
</span><span style="color: #aaaaaa">@@ -4,6 +4,9 @@
</span> *
*/
<span style="color: #000000;background-color: #ddffdd">+#define _XOPEN_SOURCE 500
+#define _GNU_SOURCE
+
</span> #include "darshan-runtime-config.h"
#include <stdio.h>
#include <unistd.h>
<span style="color: #aaaaaa">@@ -16,7 +19,6 @@
</span> #include <errno.h>
#include <search.h>
#include <assert.h>
<span style="color: #000000;background-color: #ffdddd">-#define __USE_GNU
</span> #include <pthread.h>
#include "uthash.h"
</code></pre>
<br>
</li>
<li id='diff-12'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833#diff-12'>
<strong>
darshan-runtime/lib/darshan-posix.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/lib/darshan-posix.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/lib/darshan-posix.c
</span><span style="color: #aaaaaa">@@ -176,6 +176,11 @@ struct posix_runtime
</span> struct posix_file_runtime_ref* fd_hash;
};
<span style="color: #000000;background-color: #ddffdd">+/* XXX modules don't expose an API for other modules, so use extern to get
+ * Lustre instrumentation function
+ */
+extern void darshan_instrument_lustre_file(char *filepath);
+
</span> static struct posix_runtime *posix_runtime = NULL;
static pthread_mutex_t posix_runtime_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
static int instrumentation_disabled = 0;
<span style="color: #aaaaaa">@@ -1505,7 +1510,7 @@ static struct posix_file_runtime* posix_file_by_name(const char *name)
</span> struct posix_file_runtime *file = NULL;
char *newname = NULL;
darshan_record_id file_id;
<span style="color: #000000;background-color: #ffdddd">- int file_alignment;
</span><span style="color: #000000;background-color: #ddffdd">+ struct darshan_fs_info fs_info;
</span> int limit_flag;
if(!posix_runtime || instrumentation_disabled)
<span style="color: #aaaaaa">@@ -1525,7 +1530,7 @@ static struct posix_file_runtime* posix_file_by_name(const char *name)
</span> 1,
limit_flag,
&file_id,
<span style="color: #000000;background-color: #ffdddd">- &file_alignment);
</span><span style="color: #000000;background-color: #ddffdd">+ &fs_info);
</span>
/* the file record id is set to 0 if no memory is available for tracking
* new records -- just fall through and ignore this record
<span style="color: #aaaaaa">@@ -1552,12 +1557,19 @@ static struct posix_file_runtime* posix_file_by_name(const char *name)
</span> file->file_record->f_id = file_id;
file->file_record->rank = my_rank;
file->file_record->counters[POSIX_MEM_ALIGNMENT] = darshan_mem_alignment;
<span style="color: #000000;background-color: #ffdddd">- file->file_record->counters[POSIX_FILE_ALIGNMENT] = file_alignment;
</span><span style="color: #000000;background-color: #ddffdd">+ file->file_record->counters[POSIX_FILE_ALIGNMENT] = fs_info.block_size;
</span>
/* add new record to file hash table */
HASH_ADD(hlink, posix_runtime->file_hash, file_record->f_id, sizeof(darshan_record_id), file);
posix_runtime->file_array_ndx++;
<span style="color: #000000;background-color: #ddffdd">+ /* XXX: check for lustre and call in */
+#ifndef LL_SUPER_MAGIC
+#define LL_SUPER_MAGIC 0x0BD00BD0
+#endif
+ if(fs_info.fs_type == LL_SUPER_MAGIC)
+ darshan_instrument_lustre_file(newname);
+
</span> if(newname != name)
free(newname);
return(file);
</code></pre>
<br>
</li>
</div>
<div class='footer' style='margin-top: 10px;'>
<p>
—
<br>
<a href="https://xgitlab.cels.anl.gov/darshan/darshan/compare/d14cd7589d20f229ff43daebd79c980677592e54...657c5b565dd8c7b847c956a39c61f8711ce21833">View it on GitLab</a>.
<br>
You're receiving this email because of your account on xgitlab.cels.anl.gov.
If you'd like to receive fewer emails, you can
adjust your notification settings.
</p>
</div>
</body>
</html>