This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/ozone-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 983252ec [auto] Generated docs from Apache Ozone master
f713e57b190a9d3c0216ed0a509bc7c0ccbcdfaf
983252ec is described below
commit 983252eca4f2902722f650687279e5df87688b26
Author: Github Actions <[email protected]>
AuthorDate: Wed Jun 18 12:46:51 2025 +0000
[auto] Generated docs from Apache Ozone master
f713e57b190a9d3c0216ed0a509bc7c0ccbcdfaf
---
docs/edge/design.html | 10 +
docs/edge/design/dn-usedspace-calculation.html | 585 +++++++++++++++++++++++++
docs/edge/design/index.xml | 9 +-
docs/edge/en/sitemap.xml | 5 +-
docs/edge/index.xml | 7 +
docs/edge/interface/ofs.html | 2 +-
docs/edge/sitemap.xml | 2 +-
docs/edge/zh/interface/ofs.html | 2 +-
8 files changed, 617 insertions(+), 5 deletions(-)
diff --git a/docs/edge/design.html b/docs/edge/design.html
index 31c1734b..15dfdcc4 100644
--- a/docs/edge/design.html
+++ b/docs/edge/design.html
@@ -507,6 +507,16 @@ s=d.getElementsByTagName('script')[0];
<td>implemented</td>
</tr>
+ <tr>
+ <td>2025-04-30</td>
+ <td>
+ <a
href="https://issues.apache.org/jira/browse/HDDS-12924">HDDS-12924</a>
+ </td>
+ <td><a
href="./design/dn-usedspace-calculation.html">Datanode used space
calculation</a></td>
+ <td>Describe proposal for optimization in datanode
used space calculation.</td>
+ <td>Implemented</td>
+ </tr>
+
<tr>
<td>2024-04-05</td>
<td>
diff --git a/docs/edge/design/dn-usedspace-calculation.html
b/docs/edge/design/dn-usedspace-calculation.html
new file mode 100644
index 00000000..3e6b622f
--- /dev/null
+++ b/docs/edge/design/dn-usedspace-calculation.html
@@ -0,0 +1,585 @@
+
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <meta name="description" content="Apache Ozone Documentation">
+
+ <title>Documentation for Apache Ozone</title>
+
+
+ <link href="../css/bootstrap.min.css" rel="stylesheet">
+
+
+ <link href="../css/ozonedoc.css" rel="stylesheet">
+
+
+
+ <link href="../swagger-resources/swagger-ui.css" rel="stylesheet">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+
+ _paq.push(['disableCookies']);
+
+
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '34']);
+ var d=document, g=d.createElement('script'),
+s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+
+ </head>
+
+
+ <body>
+
+<nav class="navbar navbar-inverse navbar-fixed-top">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#sidebar" aria-expanded="false"
aria-controls="navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a href="../index.html" class="navbar-left ozone-logo">
+ <img src="../ozone-logo-small.png"/>
+ </a>
+ <a class="navbar-brand hidden-xs" href="../index.html">
+ Apache Ozone/HDDS Documentation
+ </a>
+ <a class="navbar-brand visible-xs-inline" href="#">Apache Ozone</a>
+ </div>
+ <div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="https://github.com/apache/ozone">Source</a></li>
+ <li><a href="https://ozone.apache.org">Apache Ozone</a></li>
+ <li><a href="https://apache.org">ASF</a></li>
+ </ul>
+ </div>
+ </div>
+</nav>
+
+ <div class="container-fluid">
+ <div class="row">
+
+<div class="col-sm-2 col-md-2 sidebar" id="sidebar">
+ <ul class="nav nav-sidebar">
+
+
+
+ <li class="">
+
+ <a href="../index.html">
+
+
+
+ <span>Overview</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../start.html">
+
+
+
+ <span>Getting Started</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+ <a href="../concept.html">
+
+ <span>Architecture</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../concept/overview.html">Overview</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/ozonemanager.html">Ozone
Manager</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../concept/storagecontainermanager.html">Storage Container Manager</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/containers.html">Containers</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/datanodes.html">Datanodes</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/recon.html">Recon</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/networkports.html">Network
Ports</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../feature.html">
+
+ <span>Features</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a
href="../feature/decommission.html">Decommissioning</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/om-ha.html">OM High
Availability</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/erasurecoding.html">Ozone
Erasure Coding</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/snapshot.html">Ozone
Snapshot</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/scm-ha.html">SCM High
Availability</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/streaming-write-pipeline.html">Streaming Write Pipeline</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/dn-merge-rocksdb.html">Merge
Container RocksDB in DN</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/prefixfso.html">Prefix based
File System Optimization</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/topology.html">Topology
awareness</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/quota.html">Quota in Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/recon.html">Recon Server</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/observability.html">Observability</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/nonrolling-upgrade.html">Non-Rolling Upgrades and
Downgrades</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/s3-multi-tenancy.html">
+
+ <span>S3 Multi-Tenancy</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+ <a
href="../feature/s3-multi-tenancy-setup.html">Setup</a>
+ </li>
+
+ <li class="">
+ <a
href="../feature/s3-tenant-commands.html">Tenant commands</a>
+ </li>
+
+ <li class="">
+ <a
href="../feature/s3-multi-tenancy-access-control.html">Access Control</a>
+ </li>
+
+ </ul>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/reconfigurability.html">Reconfigurability</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../integration.html">
+
+ <span>Application Integrations</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../integration/distcp.html">Hadoop
DistCp</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../integration/hive.html">Hive</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../integration/impala.html">Impala</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../interface.html">
+
+ <span>Client Interfaces</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../interface/ofs.html">Ofs (Hadoop
compatible)</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/o3fs.html">O3fs (Hadoop
compatible)</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/s3.html">S3 Protocol</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/cli.html">Command Line
Interface</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/reconapi.html">Recon API</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/javaapi.html">Java API</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/python.html">Accessing Apache
Ozone from Python</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/csi.html">CSI Protocol</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/httpfs.html">HttpFS
Gateway</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../security.html">
+
+ <span>Security</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../security/secureozone.html">Securing
Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securingtde.html">Transparent
Data Encryption</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/gdpr.html">GDPR in Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securingdatanodes.html">Securing Datanodes</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securingozonehttp.html">Securing HTTP</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securings3.html">Securing
S3</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securityacls.html">Ozone
ACLs</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securitywithranger.html">Apache Ranger</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../tools.html">
+
+
+
+ <span>Tools</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../recipe.html">
+
+
+
+ <span>Recipes</span>
+ </a>
+ </li>
+
+
+ <li><a href="../design.html"><span><b>Design docs</b></span></a></li>
+ <li class="visible-xs"><a href="#">References</a>
+ <ul class="nav">
+ <li><a href="https://github.com/apache/ozone"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> Source</a></li>
+ <li><a href="https://ozone.apache.org"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> Apache Ozone</a></li>
+ <li><a href="https://apache.org"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> ASF</a></li>
+ </ul></li>
+ </ul>
+
+</div>
+
+ <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2
main-content">
+ <div class="col-md-9">
+ <h1><a
href="https://issues.apache.org/jira/browse/HDDS-12924">[HDDS-12924]</a>
Datanode used space calculation (Implemented) </h1>
+ <div><i>Authors: Sumit Agrawal</i><div
class="pull-right">2025-04-30</div></div>
+ <p> </p>
+
+ <div class="panel panel-success">
+ <div class="panel-heading">Summary</div>
+ <div class="panel-body">
+ Describe proposal for optimization in datanode used
space calculation.
+ </div>
+ </div>
+
+ <!--
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. See accompanying LICENSE file.
+-->
+<h1 id="abstract">Abstract</h1>
+<p>Datanode makes use of DU to identify disk space uses for ozone in the
volume.
+DU is a time-consuming operation if run over large occupied disk, like when
running over disk path having 10s of TB container data. This will be slow
operation.</p>
+<h2 id="approach-1-run-du-over-non-ozone-path">Approach 1: Run DU over
non-ozone path</h2>
+<p>Challenges:</p>
+<ul>
+<li>Root path is not known for the device mounted on. So this needs extra
configuration.</li>
+<li>Permission problem: du will not count the space if permission is not there
on a certain path.</li>
+</ul>
+<p>Based on the above concern, it’s <code>not feasible</code> to do du
over non-ozone path.</p>
+<h2
id="approach-2-run-du-over-meta-path-only-excluding-container-dir-path">Approach
2: Run DU over meta path only (excluding container dir path)</h2>
+<p>Ozone space usages includes summation of:</p>
+<ul>
+<li>Sum of all Container data size as present in memory</li>
+<li>DU over volume path as current (excluding container path)</li>
+</ul>
+<p><code>Used space = sum(<all containers data size>, <du over ozone
path excluding container data>)</code></p>
+<h3 id="limitation">Limitation:</h3>
+<ul>
+<li>
+<p>Space is not counted as ozone space for below cases:</p>
+<ul>
+<li>Ozone used size for duplicate containers are not counted (ignored during
startup for EC case)</li>
+<li>Ozone used size for containers corrupted are not counted, not deleted</li>
+<li>Container path meta files like container yaml, exported rocks db’s sst
files, are not counted, which might result in few GB of data in a large
cluster.</li>
+</ul>
+<p>These spaces will be added up to non-ozone used space, and especially
un-accounted containers need to be cleaned up.</p>
+</li>
+</ul>
+<p>In future, the container space (due to duplicacy or corruption) needs to be
removed based on error logs.</p>
+<h3 id="impact-of-inaccuracy-of-used-space">Impact of inaccuracy of Used
Space</h3>
+<ol>
+<li>Used space in reporting (may be few GB as per above)</li>
+<li>Adjustment between Ozone available space and Reserved available space</li>
+</ol>
+<p>This inaccuracy does not have much impact over solution (as its present in
existing) and due to nature of “du” running async and parallel write operation
being in progress.</p>
+<p>Approach to fits better in this scenario, can be provided as
<code>OptimizedDU</code> and keeping previous support as well.</p>
+<h2 id="approach-3--used-space-will-be-only-container-data">Approach 3 : Used
space will be only container data</h2>
+<p>Hadoop also have similar concept, where used space is only the actual data
blocks, and its calculation is simple,
+i.e.</p>
+<p><code>Used Space = number of blocks * block Size</code></p>
+<p>Similar to this, Ozone can also calculate Used space as,</p>
+<p><code>Used Space = Sum of all container data size</code></p>
+<h3 id="impact">Impact:</h3>
+<p>Space will <code>not</code> be counted:</p>
+<ol>
+<li>Meta space like rocks db, container yaml file and sst files of few KBs per
container, which overall result in few GB of space in large volume.</li>
+<li>duplicate container not yet deleted and corrupted container present in
container data path</li>
+<li>temp path having left over data which is not yet deleted</li>
+</ol>
+<p>These space will be counted in reserved space. And these data are small in
nature (except container data).
+Container data are corrupted / <to be deleted> containers which needs to be
removed manually or need fix in code to remove those automatic.</p>
+<p>So considering above impact, this might be one of simple solution providing
higher performance.</p>
+<h1 id="conclusion">Conclusion</h1>
+<p><code>Approach 2</code> <code>Run DU over meta path only (excluding
container dir path)</code> is preferred over other as
+it identify ozone used space more close in accuracy to DU implementation and
handle the time issue.</p>
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+
+
+<footer class="footer">
+ <div class="container">
+ <span class="small text-muted">
+ Version: 2.1.0-SNAPSHOT, Last Modified: June 18, 2025 <a
class="hide-child link primary-color"
href="https://github.com/apache/ozone/commit/b574709dd6df95e9aec250769da73969f8706b49">b574709dd6</a>
+ </span>
+ </div>
+</footer>
+
+
+
+<script src="../js/jquery-3.5.1.min.js"></script>
+<script src="../js/ozonedoc.js"></script>
+<script src="../js/bootstrap.min.js"></script>
+
+
+ </body>
+</html>
diff --git a/docs/edge/design/index.xml b/docs/edge/design/index.xml
index d0424935..2c3827f4 100644
--- a/docs/edge/design/index.xml
+++ b/docs/edge/design/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Designs on Ozone</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 10 Jun 2025 11:04:13 -0700</lastBuildDate>
+ <lastBuildDate>Wed, 18 Jun 2025 14:19:25 +0530</lastBuildDate>
<atom:link href="/design/index.xml" rel="self" type="application/rss+xml"
/>
<item>
<title>Minimum free space configuration for datanode volumes</title>
@@ -15,6 +15,13 @@
<guid>/design/dn-min-space-configuration.html</guid>
<description>Describe proposal for minimum free space configuration
which volume must have to function correctly.</description>
</item>
+ <item>
+ <title>Datanode used space calculation</title>
+ <link>/design/dn-usedspace-calculation.html</link>
+ <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
+ <guid>/design/dn-usedspace-calculation.html</guid>
+ <description>Describe proposal for optimization in datanode used space
calculation.</description>
+ </item>
<item>
<title>Overwriting an Ozone Key only if it has not changed.</title>
<link>/design/overwrite-key-only-if-unchanged.html</link>
diff --git a/docs/edge/en/sitemap.xml b/docs/edge/en/sitemap.xml
index 0300efbe..618ac7c9 100644
--- a/docs/edge/en/sitemap.xml
+++ b/docs/edge/en/sitemap.xml
@@ -629,10 +629,13 @@
<lastmod>2025-06-02T13:47:02+05:30</lastmod>
</url><url>
<loc>/design.html</loc>
- <lastmod>2025-06-10T11:04:13-07:00</lastmod>
+ <lastmod>2025-06-18T14:19:25+05:30</lastmod>
</url><url>
<loc>/design/dn-min-space-configuration.html</loc>
<lastmod>2025-05-28T10:07:28+05:30</lastmod>
+ </url><url>
+ <loc>/design/dn-usedspace-calculation.html</loc>
+ <lastmod>2025-06-18T14:19:25+05:30</lastmod>
</url><url>
<loc>/tools/debug.html</loc>
<lastmod>2024-10-30T12:13:52+05:30</lastmod>
diff --git a/docs/edge/index.xml b/docs/edge/index.xml
index 107f65b7..72ecc8b0 100644
--- a/docs/edge/index.xml
+++ b/docs/edge/index.xml
@@ -406,6 +406,13 @@
<guid>/design/dn-min-space-configuration.html</guid>
<description>Describe proposal for minimum free space configuration
which volume must have to function correctly.</description>
</item>
+ <item>
+ <title>Datanode used space calculation</title>
+ <link>/design/dn-usedspace-calculation.html</link>
+ <pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
+ <guid>/design/dn-usedspace-calculation.html</guid>
+ <description>Describe proposal for optimization in datanode used space
calculation.</description>
+ </item>
<item>
<title>Ozone Debug</title>
<link>/tools/debug.html</link>
diff --git a/docs/edge/interface/ofs.html b/docs/edge/interface/ofs.html
index 5fbd6f96..7ab94b8f 100644
--- a/docs/edge/interface/ofs.html
+++ b/docs/edge/interface/ofs.html
@@ -574,7 +574,7 @@ For example:</p>
<p>Or use the put command to write a file to the bucket.</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>For more usage, see: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="differences-from-o3fshahahugoshortcode99s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
+<h2 id="differences-from-o3fshahahugoshortcode100s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
<h3 id="creating-files">Creating files</h3>
<p>OFS doesn’t allow creating keys(files) directly under root or volumes.
Users will receive an error message when they try to do that:</p>
diff --git a/docs/edge/sitemap.xml b/docs/edge/sitemap.xml
index 0f03ed8e..e9f1e482 100644
--- a/docs/edge/sitemap.xml
+++ b/docs/edge/sitemap.xml
@@ -4,7 +4,7 @@
<sitemap>
<loc>/en/sitemap.xml</loc>
- <lastmod>2025-06-16T11:06:17-07:00</lastmod>
+ <lastmod>2025-06-18T14:19:25+05:30</lastmod>
</sitemap>
diff --git a/docs/edge/zh/interface/ofs.html b/docs/edge/zh/interface/ofs.html
index 7bc561f1..beb5f0d2 100644
--- a/docs/edge/zh/interface/ofs.html
+++ b/docs/edge/zh/interface/ofs.html
@@ -478,7 +478,7 @@ ofs://omservice/tmp/key1
<p>或者使用 put 命令向桶中写入一个文件</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>有关更多用法,请参见: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="与-o3fshahahugoshortcode98s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
+<h2 id="与-o3fshahahugoshortcode99s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
<h3 id="创建文件">创建文件</h3>
<p>OFS 不允许直接在根目录或卷下创建键(文件)。
当用户尝试这样做时,他们将收到一个错误消息:</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]