<html dir="ltr"><head></head><body style="text-align:left; direction:ltr;"><div>This python will fail when writing to a file in a glusterfs fuse mounted directory.</div><div><br></div><div>import mmap</div><div> </div><div># write a simple example file</div><div>with open("hello.txt", "wb") as f:</div><div> f.write("Hello Python!\n")</div><div><br></div><div>with open("hello.txt", "r+b") as f:</div><div> # memory-map the file, size 0 means whole file</div><div> mm = mmap.mmap(f.fileno(), 0)</div><div> # read content via standard file methods</div><div> print mm.readline() # prints "Hello Python!"</div><div> # read content via slice notation</div><div> print mm[:5] # prints "Hello"</div><div> # update content using slice notation;</div><div> # note that new content must have same size</div><div> mm[6:] = " world!\n"</div><div> # ... and read again using standard file methods</div><div> mm.seek(0)</div><div> print mm.readline() # prints "Hello world!"</div><div> # close the map</div><div> mm.close()</div><div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>On Tue, 2019-03-19 at 12:06 -0400, Jim Kinney wrote:</div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div>Native mount issue with multiple clients (centos7 glusterfs 3.12).</div><div><br></div><div>Seems to hit python 2.7 and 3+. User tries to open file(s) for write on long process and system eventually times out.</div><div><br></div><div>Switching to NFS stops the error.</div><div><br></div><div>No bug notice yet. Too many pans on the fire :-(</div><div><br></div><div>On Tue, 2019-03-19 at 18:42 +0530, Amar Tumballi Suryanarayan wrote:</div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">Hi Jim,<div><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 19, 2019 at 6:21 PM Jim Kinney <<a href="mailto:jim.kinney@gmail.com">jim.kinney@gmail.com</a>> wrote:<br></div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<div bgcolor="#FFFFFF" for="m_7567902055063370791"><br>Issues with glusterfs fuse mounts cause issues with python file open for write. We have to use nfs to avoid this. <br><br>Really want to see better back-end tools to facilitate cleaning up of glusterfs failures. If system is going to use hard linked ID, need a mapping of id to file to fix things. That option is now on for all exports. It should be the default If a host is down and users delete files by the thousands, gluster _never_ catches up. Finding path names for ids across even a 40TB mount, much less the 200+TB one, is a slow process. A network outage of 2 minutes and one system didn't get the call to recursively delete several dozen directories each with several thousand files. <br><br></div><br></blockquote><div><br></div><div>Are you talking about some issues in geo-replication module or some other application using native mount? Happy to take the discussion forward about these issues. </div><div><br></div><div>Are there any bugs open on this?</div><div><br></div><div>Thanks,</div><div>Amar</div><div> </div><blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div bgcolor="#FFFFFF" for="m_7567902055063370791"><br><br>nfs<div class="gmail_quote">On March 19, 2019 8:09:01 AM EDT, Hans Henrik Happe <<a href="mailto:happe@nbi.dk" target="_blank">happe@nbi.dk</a>> wrote:<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<p>Hi,</p>
<p>Looking into something else I fell over this proposal. Being a
shop that are going into "Leaving GlusterFS" mode, I thought I
would give my two cents.<br>
</p>
<p>While being partially an HPC shop with a few Lustre filesystems,
we chose GlusterFS for an archiving solution (2-3 PB), because we
could find files in the underlying ZFS filesystems if GlusterFS
went sour.</p>
<p>We have used the access to the underlying files plenty, because
of the continuous instability of GlusterFS'. Meanwhile, Lustre
have been almost effortless to run and mainly for that reason we
are planning to move away from GlusterFS.</p>
<p>Reading this proposal kind of underlined that "Leaving GluserFS"
is the right thing to do. While I never understood why GlusterFS
has been in feature crazy mode instead of stabilizing mode, taking
away crucial features I don't get. With RoCE, RDMA is getting
mainstream. Quotas are very useful, even though the current
implementation are not perfect. Tiering also makes so much sense,
but, for large files, not on a per-file level.</p>
<p>To be honest we only use quotas. We got scared of trying out new
performance features that potentially would open up a new back of
issues.</p>
<p>Sorry for being such a buzzkill. I really wanted it to be
different.<br>
</p>
<p>Cheers,<br>
Hans Henrik<br>
</p>
<div class="gmail-m_7567902055063370791moz-cite-prefix">On 19/07/2018 08.56, Amar Tumballi
wrote:<br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex">
<div dir="ltr"><b style="font-weight:normal" id="gmail-m_7567902055063370791gmail-docs-internal-guid-20f1d087-b150-f265-7a7b-38310e167fab">
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Hi all,</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Over last 12 years of Gluster, we have developed many features, and continue to support most of it till now. But along the way, we have figured out better methods of doing things. Also we are not actively maintaining some of these features.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">We are now thinking of cleaning up some of these ‘unsupported’ features, and mark them as ‘SunSet’ (i.e., would be totally taken out of codebase in following releases) in next upcoming release, </span><span style="font-size:10pt;font-family:"Courier New";color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">v5.0</span><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">. The release notes will provide options for smoothly migrating to the supported configurations.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are using any of these features, do let us know, so that we can help you with ‘migration’.. Also, we are happy to guide new developers to work on those components which are not actively being maintained by current set of developers.</span></p>
<h3 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:16.5pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">List of features hitting sunset:</span></h3>
<h4 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">‘cluster/stripe’ translator:</span></h4>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">This translator was developed very early in the evolution of GlusterFS, and addressed one of the very common question of Distributed FS, which is “What happens if one of my file is bigger than the available brick. Say, I have 2 TB hard drive, exported in glusterfs, my file is 3 TB”. While it solved the purpose, it was very hard to handle failure scenarios, and give a real good experience to our users with this feature. Over the time, Gluster solved the problem with it’s ‘Shard’ feature, which solves the problem in much better way, and provides much better solution with existing well supported stack. Hence the proposal for Deprecation.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are using this feature, then do write to us, as it needs a proper migration from existing volume to a new full supported volume type before you upgrade.</span></p>
<h4 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">‘storage/bd’ translator:</span></h4>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">This feature got into the code base 5 years back with this </span><a href="http://review.gluster.org/4809" style="text-decoration:none" target="_blank"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,122,183);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">patch</span></a><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">[1]. Plan was to use a block device directly as a brick, which would help to handle disk-image storage much easily in glusterfs.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">As the feature is not getting more contribution, and we are not seeing any user traction on this, would like to propose for Deprecation.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are using the feature, plan to move to a supported gluster volume configuration, and have your setup ‘supported’ before upgrading to your new gluster version.</span></p>
<h4 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">‘RDMA’ transport support:</span></h4>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Gluster started supporting RDMA while ib-verbs was still new, and very high-end infra around that time were using Infiniband. Engineers did work with Mellanox, and got the technology into GlusterFS for better data migration, data copy. While current day kernels support very good speed with IPoIB module itself, and there are no more bandwidth for experts in these area to maintain the feature, we recommend migrating over to TCP (IP based) network for your volume.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are successfully using RDMA transport, do get in touch with us to prioritize the migration plan for your volume. Plan is to work on this after the release, so by version 6.0, we will have a cleaner transport code, which just needs to support one type.</span></p>
<h4 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">‘Tiering’ feature</span></h4>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Gluster’s tiering feature which was planned to be providing an option to keep your ‘hot’ data in different location than your cold data, so one can get better performance. While we saw some users for the feature, it needs much more attention to be completely bug free. At the time, we are not having any active maintainers for the feature, and hence suggesting to take it out of the ‘supported’ tag.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are willing to take it up, and maintain it, do let us know, and we are happy to assist you.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">If you are already using tiering feature, before upgrading, make sure to do </span><span style="font-size:10pt;font-family:"Courier New";color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">gluster volume tier detach</span><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"> all the bricks before upgrading to next release. Also, we recommend you to use features like </span><span style="font-size:10pt;font-family:"Courier New";color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">dmcache</span><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap"> on your LVM setup to get best performance from bricks.</span></p>
<h4 dir="ltr" style="line-height:1.2;margin-top:18pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">‘Quota’</span></h4>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">This is a call out for ‘Quota’ feature, to let you all know that it will be ‘no new development’ state. While this feature is ‘actively’ in use by many people, the challenges we have in accounting mechanisms involved, has made it hard to achieve good performance with the feature. Also, the amount of extended attribute get/set operations while using the feature is not very ideal. Hence we recommend our users to move towards setting quota on backend bricks directly (ie, XFS project quota), or to use different volumes for different directories etc.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">As the feature wouldn’t be deprecated immediately, the feature doesn’t need a migration plan when you upgrade to newer version, but if you are a new user, we wouldn’t recommend setting quota feature. By the release dates, we will be publishing our best alternatives guide for gluster’s current quota feature.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Note that if you want to contribute to the feature, we have </span><a href="https://github.com/gluster/glusterfs/issues/184" style="text-decoration:none" target="_blank"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,122,183);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">project quota based issue open</span></a><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">[2] Happy to get contributions, and help in getting a newer approach to Quota.</span></p>
<br>
<hr>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">These are our set of initial features which we propose to take out of ‘fully’ supported features. While we are in the process of making the user/developer experience of the project much better with providing well maintained codebase, we may come up with few more set of features which we may possibly consider to move out of support, and hence keep watching this space.</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">[1] - </span><a href="http://review.gluster.org/4809" style="text-decoration:none" target="_blank"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,122,183);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">http://review.gluster.org/4809</span></a></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">[2] - </span><span style="text-decoration:underline;font-size:12pt;font-family:Roboto;color:rgb(51,122,183);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;vertical-align:baseline;white-space:pre-wrap"><a href="https://github.com/gluster/glusterfs/issues/184" style="text-decoration:none" target="_blank">https://github.com/gluster/glusterfs/issues/184</a></span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span id="gmail-m_7567902055063370791gmail-docs-internal-guid-20f1d087-b150-f265-7a7b-38310e167fab"></span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255);display:inline"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Regards,</span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255)"><span id="gmail-m_7567902055063370791gmail-docs-internal-guid-20f1d087-b150-f265-7a7b-38310e167fab"></span></p>
<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:12pt;background-color:rgb(255,255,255);display:inline"><span style="font-size:12pt;font-family:Roboto;color:rgb(51,51,51);background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap">Vijay, Shyam, Amar</span></p>
</b>
<div><br>
</div>
<div class="gmail-m_7567902055063370791gmail_signature">
<div dir="ltr">
<div>
<div dir="ltr">
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="gmail-m_7567902055063370791mimeAttachmentHeader"></fieldset>
<pre>_______________________________________________</pre><pre>Gluster-users mailing list</pre><a class="gmail-m_7567902055063370791moz-txt-link-abbreviated" href="mailto:Gluster-users@gluster.org" target="_blank"><pre>Gluster-users@gluster.org</pre></a><br><a class="gmail-m_7567902055063370791moz-txt-link-freetext" href="https://lists.gluster.org/mailman/listinfo/gluster-users" target="_blank"><pre>https://lists.glus</pre><br><pre>-- </pre><br><pre>Sent from my Android device with K-9 Mail. All tyopes are thumb related and reflect authenticity.ter.org/mailman/listinfo/gluster-users</pre></a>
</blockquote>
</blockquote></div></div></blockquote></div><br clear="all"><div><br></div></div></blockquote><div><span><pre>-- </pre><br><pre>James P. Kinney III</pre><pre><br></pre><pre>Every time you stop a school, you will have to build a jail. What you</pre><pre>gain at one end you lose at the other. It's like feeding a dog on his</pre><pre>own tail. It won't fatten the dog.</pre><pre>- Speech 11/23/1900 Mark Twain</pre><pre><br></pre><pre>http://heretothereideas.blogspot.com/</pre></span></div>
</blockquote><div><span><pre><pre>-- <br></pre>James P. Kinney III
Every time you stop a school, you will have to build a jail. What you
gain at one end you lose at the other. It's like feeding a dog on his
own tail. It won't fatten the dog.
- Speech 11/23/1900 Mark Twain
http://heretothereideas.blogspot.com/
</pre></span></div></body></html>