<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 dev-modular 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/2feaff78045a9cc32af586c7358d353c25ff1fdf">2feaff78</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-04T09:19:52Z</i>
</div>
<pre class='commit-message'>update runtime docs to give info on upgrading</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/64978d11e35bbe4dc0cbf077115705a6179928ff">64978d11</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-04T09:50:41Z</i>
</div>
<pre class='commit-message'>bug fix for resolving mpi_gather in shared lib</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/86533a49dbde4a80f2d2c153d61580e03d6cd914">86533a49</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-04T12:46:33Z</i>
</div>
<pre class='commit-message'>fix typos in counter descriptions</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/d4413b4e774ce98123c003419dec380c2b9bf629">d4413b4e</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-04T13:36:29Z</i>
</div>
<pre class='commit-message'>better error handling for opening old log files</pre>
</li>
<li>
<strong><a href="https://xgitlab.cels.anl.gov/darshan/darshan/commit/72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b">72937c9a</a></strong>
<div>
<span>by Shane Snyder</span>
<i>at 2016-01-04T15:05:02Z</i>
</div>
<pre class='commit-message'>more doc updates</pre>
</li>
</ul>
<h4>10 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
darshan-runtime/darshan-dynamic.h
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
darshan-runtime/doc/darshan-runtime.txt
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
darshan-runtime/lib/darshan-core-init-finalize.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
darshan-util/darshan-bgq-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
darshan-util/darshan-hdf5-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-5'>
darshan-util/darshan-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-6'>
darshan-util/darshan-mpiio-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-7'>
darshan-util/darshan-null-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-8'>
darshan-util/darshan-pnetcdf-logutils.c
</a>
</li>
<li class='file-stats'>
<a href='#diff-9'>
darshan-util/darshan-posix-logutils.c
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-0'>
<strong>
darshan-runtime/darshan-dynamic.h
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/darshan-dynamic.h
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/darshan-dynamic.h
</span><span style="color: #aaaaaa">@@ -114,10 +114,22 @@ DARSHAN_EXTERN_DECL(PMPI_Type_get_envelope, int, (MPI_Datatype datatype, int *nu
</span> DARSHAN_EXTERN_DECL(PMPI_Type_size, int, (MPI_Datatype datatype, int *size));
 DARSHAN_EXTERN_DECL(PMPI_Op_create, int, (MPI_User_function *function, int commute, MPI_Op *op));
 DARSHAN_EXTERN_DECL(PMPI_Op_free, int, (MPI_Op *op));
<span style="color: #000000;background-color: #ddffdd">+#ifdef HAVE_MPIIO_CONST
+DARSHAN_EXTERN_DECL(PMPI_Reduce, int, (const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm));
+#else
</span> DARSHAN_EXTERN_DECL(PMPI_Reduce, int, (void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm));
<span style="color: #000000;background-color: #ddffdd">+#endif
+#ifdef HAVE_MPIIO_CONST
+DARSHAN_EXTERN_DECL(PMPI_Send, int, (const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm));
+#else
</span> DARSHAN_EXTERN_DECL(PMPI_Send, int, (void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm));
<span style="color: #000000;background-color: #ddffdd">+#endif
</span> DARSHAN_EXTERN_DECL(PMPI_Recv, int, (void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status));
<span style="color: #000000;background-color: #ddffdd">+#ifdef HAVE_MPIIO_CONST
</span> DARSHAN_EXTERN_DECL(PMPI_Gather, int, (const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm));
<span style="color: #000000;background-color: #ddffdd">+#else
+DARSHAN_EXTERN_DECL(PMPI_Gather, int, (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm));
+#endif
</span> 
 #endif
 
</code></pre>

<br>
</li>
<li id='diff-1'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-1'>
<strong>
darshan-runtime/doc/darshan-runtime.txt
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-runtime/doc/darshan-runtime.txt
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-runtime/doc/darshan-runtime.txt
</span><span style="color: #aaaaaa">@@ -466,6 +466,40 @@ older versions of Open MPI, please refer to the following mailing list discussio
</span> 
 http://www.open-mpi.org/community/lists/devel/2013/01/11907.php
 
<span style="color: #000000;background-color: #ddffdd">+== Upgrading to Darshan 3.x from 2.x
+
+Beginning with Darshan 3.0.0, Darshan has been rewritten to modularize its runtime environment
+and log file format to simplify the addition of new I/O characterization data. The process of
+compiling and installing the Darshan 3.x source code should essentially be identical to this
+process on Darshan 2.x. Therefore, the installation recipes given in the previous section
+should work irrespective of the Darshan version being used. Similarly, the manner in which
+Darshan is used should be the same across versions -- the sections in this document regarding
+Darshan link:darshan-runtime.html#_environment_preparation[environment preparation],
+instrumenting link:darshan-runtime.html#_instrumenting_statically_linked_applications[statically
+linked applications] and link:darshan-runtime.html#_instrumenting_dynamically_linked_applications[
+dynamically linked applications], and using link:darshan-runtime.html#_runtime_environment_variables[
+runtime environment variables] are equally applicable to both versions.
+
+However, we do provide some suggestions and expectations for system administrators to keep in
+mind when upgrading to Darshan 3.x:
+
+* Log file compatibility was broken in the upgrade, and thus 3.x log utilities do not
+work directly with logs generated by 2.x versions of Darshan (and vice versa).
+    - There is currently no tool for converting 2.x logs into the 3.x log format.
+    - The `darshan-logutils` library will provide error messages to indicate whether a given
+log file is incompatible with the correspnonding library version. 
+
+* The darshan log file extension has been changed from `.darshan.gz` (or `.darshan.bz2` for
+log files converted to use bzip2 compression) to `.darshan`.
+    - A field in the Darshan log header is used to indicate whether a log is compressed using
+libz or bzip2 compression.
+
+* We encourage administrators to use the same log file directory for version 3.x as had been
+used for version 2.x.
+    - Within this directory, the determination on which set of log utilities (version 2.x
+or version 3.x) to use can be based on the file extension for a given log (as explained
+above).
+
</span> == Runtime environment variables
 
 The Darshan library honors the following environment variables to modify
</code></pre>

<br>
</li>
<li id='diff-2'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-2'>
<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">@@ -120,9 +120,22 @@ DARSHAN_FORWARD_DECL(PMPI_Type_get_envelope, int, (MPI_Datatype datatype, int *n
</span> DARSHAN_FORWARD_DECL(PMPI_Type_size, int, (MPI_Datatype datatype, int *size));
 DARSHAN_FORWARD_DECL(PMPI_Op_create, int, (MPI_User_function *function, int commute, MPI_Op *op));
 DARSHAN_FORWARD_DECL(PMPI_Op_free, int, (MPI_Op *op));
<span style="color: #000000;background-color: #ddffdd">+#ifdef HAVE_MPIIO_CONST
+DARSHAN_FORWARD_DECL(PMPI_Reduce, int, (const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm));
+#else
</span> DARSHAN_FORWARD_DECL(PMPI_Reduce, int, (void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm));
<span style="color: #000000;background-color: #ddffdd">+#endif
+#ifdef HAVE_MPIIO_CONST
+DARSHAN_FORWARD_DECL(PMPI_Send, int, (const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm));
+#else
</span> DARSHAN_FORWARD_DECL(PMPI_Send, int, (void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm));
<span style="color: #000000;background-color: #ddffdd">+#endif
</span> DARSHAN_FORWARD_DECL(PMPI_Recv, int, (void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status));
<span style="color: #000000;background-color: #ddffdd">+#ifdef HAVE_MPIIO_CONST
+DARSHAN_FORWARD_DECL(PMPI_Gather, int, (const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm));
+#else
+DARSHAN_FORWARD_DECL(PMPI_Gather, int, (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm));
+#endif
</span> 
 void resolve_mpi_symbols (void)
 {
<span style="color: #aaaaaa">@@ -182,6 +195,7 @@ void resolve_mpi_symbols (void)
</span>     MAP_OR_FAIL(PMPI_Reduce);
     MAP_OR_FAIL(PMPI_Send);
     MAP_OR_FAIL(PMPI_Recv);
<span style="color: #000000;background-color: #ddffdd">+    MAP_OR_FAIL(PMPI_Gather);
</span> 
     return;
 }
</code></pre>

<br>
</li>
<li id='diff-3'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-3'>
<strong>
darshan-util/darshan-bgq-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-bgq-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-bgq-logutils.c
</span><span style="color: #aaaaaa">@@ -116,7 +116,7 @@ static void darshan_log_print_bgq_rec(void *file_rec, char *file_name,
</span> 
 static void darshan_log_print_bgq_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of BGQ counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of BGQ counters:\n");
</span>     printf("#   BGQ_CSJOBID: BGQ control system job ID.\n");
     printf("#   BGQ_NNODES: number of BGQ compute nodes for this job.\n");
     printf("#   BGQ_RANKSPERNODE: number of MPI ranks per compute node.\n");
</code></pre>

<br>
</li>
<li id='diff-4'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-4'>
<strong>
darshan-util/darshan-hdf5-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-hdf5-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-hdf5-logutils.c
</span><span style="color: #aaaaaa">@@ -116,7 +116,7 @@ static void darshan_log_print_hdf5_file(void *file_rec, char *file_name,
</span> 
 static void darshan_log_print_hdf5_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of HDF5 counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of HDF5 counters:\n");
</span>     printf("#   HDF5_OPENS: HDF5 file open operation counts.\n");
     printf("#   HDF5_F_OPEN_TIMESTAMP: timestamp of first HDF5 file open.\n");
     printf("#   HDF5_F_CLOSE_TIMESTAMP: timestamp of last HDF5 file close.\n");
</code></pre>

<br>
</li>
<li id='diff-5'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-5'>
<strong>
darshan-util/darshan-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-logutils.c
</span><span style="color: #aaaaaa">@@ -133,6 +133,7 @@ darshan_fd darshan_log_open(const char *name)
</span>     ret = darshan_log_getheader(tmp_fd);
     if(ret < 0)
     {
<span style="color: #000000;background-color: #ddffdd">+        fprintf(stderr, "Error: failed to read darshan log file header.\n");
</span>         close(tmp_fd->state->fildes);
         free(tmp_fd->state);
         free(tmp_fd);
<span style="color: #aaaaaa">@@ -845,6 +846,30 @@ static int darshan_log_getheader(darshan_fd fd)
</span>         return(-1);
     }
 
<span style="color: #000000;background-color: #ddffdd">+    /* read the version number so we know how to process this log */
+    ret = darshan_log_read(fd, &fd->version, 8);
+    if(ret < 8)
+    {
+        fprintf(stderr, "Error: invalid log file (failed to read version).\n");
+        return(-1);
+    }
+
+    /* other log file versions can be detected and handled here */
+    if(strcmp(fd->version, "3.00"))
+    {
+        fprintf(stderr, "Error: incompatible darshan file.\n");
+        fprintf(stderr, "Error: expected version %s\n", DARSHAN_LOG_VERSION);
+        return(-1);
+    }
+
+    /* seek back so we can read the entire header */
+    ret = darshan_log_seek(fd, 0);
+    if(ret < 0)
+    {
+        fprintf(stderr, "Error: unable to seek in darshan log file.\n");
+        return(-1);
+    }
+
</span>     /* read uncompressed header from log file */
     ret = darshan_log_read(fd, &header, sizeof(header));
     if(ret != sizeof(header))
<span style="color: #aaaaaa">@@ -853,9 +878,6 @@ static int darshan_log_getheader(darshan_fd fd)
</span>         return(-1);
     }
 
<span style="color: #000000;background-color: #ffdddd">-    /* save the version string */
-    strncpy(fd->version, header.version_string, 8);
</span>-
     if(header.magic_nr == DARSHAN_MAGIC_NR)
     {
         /* no byte swapping needed, this file is in host format already */
</code></pre>

<br>
</li>
<li id='diff-6'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-6'>
<strong>
darshan-util/darshan-mpiio-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-mpiio-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-mpiio-logutils.c
</span><span style="color: #aaaaaa">@@ -116,7 +116,7 @@ static void darshan_log_print_mpiio_file(void *file_rec, char *file_name,
</span> 
 static void darshan_log_print_mpiio_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of MPIIO counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of MPIIO counters:\n");
</span>     printf("#   MPIIO_INDEP_*: MPI independent operation counts.\n");
     printf("#   MPIIO_COLL_*: MPI collective operation counts.\n");
     printf("#   MPIIO_SPLIT_*: MPI split collective operation counts.\n");
</code></pre>

<br>
</li>
<li id='diff-7'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-7'>
<strong>
darshan-util/darshan-null-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-null-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-null-logutils.c
</span><span style="color: #aaaaaa">@@ -139,7 +139,7 @@ static void darshan_log_print_null_record(void *file_rec, char *file_name,
</span> /* print out a description of the NULL module record fields */
 static void darshan_log_print_null_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of NULL counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of NULL counters:\n");
</span>     printf("#   NULL_BARS: number of 'bar' function calls.\n");
     printf("#   NULL_BAR_DAT: value set by last call to function 'bar'.\n");
     printf("#   NULL_F_BAR_TIMESTAMP: timestamp of the first call to function 'bar'.\n");
</code></pre>

<br>
</li>
<li id='diff-8'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-8'>
<strong>
darshan-util/darshan-pnetcdf-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-pnetcdf-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-pnetcdf-logutils.c
</span><span style="color: #aaaaaa">@@ -116,7 +116,7 @@ static void darshan_log_print_pnetcdf_file(void *file_rec, char *file_name,
</span> 
 static void darshan_log_print_pnetcdf_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of PNETCDF counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of PNETCDF counters:\n");
</span>     printf("#   PNETCDF_INDEP_OPENS: PNETCDF independent file open operation counts.\n");
     printf("#   PNETCDF_COLL_OPENS: PNETCDF collective file open operation counts.\n");
     printf("#   PNETCDF_F_OPEN_TIMESTAMP: timestamp of first PNETCDF file open.\n");
</code></pre>

<br>
</li>
<li id='diff-9'>
<a href='https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b#diff-9'>
<strong>
darshan-util/darshan-posix-logutils.c
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/darshan-util/darshan-posix-logutils.c
</span><span style="color: #000000;background-color: #ddffdd">+++ b/darshan-util/darshan-posix-logutils.c
</span><span style="color: #aaaaaa">@@ -116,7 +116,7 @@ static void darshan_log_print_posix_file(void *file_rec, char *file_name,
</span> 
 static void darshan_log_print_posix_description()
 {
<span style="color: #000000;background-color: #ffdddd">-    printf("\n# desription of POSIX counters:\n");
</span><span style="color: #000000;background-color: #ddffdd">+    printf("\n# description of POSIX counters:\n");
</span>     printf("#   POSIX_*: posix operation counts.\n");
     printf("#   READS,WRITES,OPENS,SEEKS,STATS, and MMAPS are types of operations.\n");
     printf("#   POSIX_MODE: mode that file was opened in.\n");
</code></pre>

<br>
</li>

</div>
<div class='footer' style='margin-top: 10px;'>
<p>

<br>
<a href="https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b">View it on GitLab</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":["merge_requests","issues","commit"],"url":"https://xgitlab.cels.anl.gov/darshan/darshan/compare/31079257caf824b5a78ac9daf4ba22d7d7ce6502...72937c9a125bcbb5e5c71f17e1fffb5e2f0d8b2b"}}</script>
</p>
</div>
</body>
</html>