<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>lost in volumes</title>
	<atom:link href="http://blogs.freebsdish.org/lulf/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.freebsdish.org/lulf</link>
	<description>Just another FreeBSD Committers Blogs weblog</description>
	<pubDate>Tue, 16 Sep 2008 11:23:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Csup status</title>
		<link>http://blogs.freebsdish.org/lulf/2008/09/16/csup-status/</link>
		<comments>http://blogs.freebsdish.org/lulf/2008/09/16/csup-status/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 11:23:37 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/?p=14</guid>
		<description><![CDATA[	Finally, I have been able to resolve all current known issues with cvsmode support in csup. I just sent out a new announcement with the patch, and I hope to get some more testing and perhaps some reviews soon, but it is a big patch and few people are familiar with the code base.

	Remaining issues [...]]]></description>
			<content:encoded><![CDATA[	<p>Finally, I have been able to resolve all current known issues with cvsmode support in csup. I just sent out a new announcement with the patch, and I hope to get some more testing and perhaps some reviews soon, but it is a big patch and few people are familiar with the code base.</p>

	<p>Remaining issues with the patch is support for using the status file when reading (but this is not critical at all), as well as rsync support (which is only significant for a few files in the freebsd repository).</p>

	<p>I hope as many as possible are able to test it:</p>

	<p>http://people.freebsd.org/~lulf/patches/csup/csup_09_16_2008.diff</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2008/09/16/csup-status/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Testing csup</title>
		<link>http://blogs.freebsdish.org/lulf/2008/03/06/testing-csup/</link>
		<comments>http://blogs.freebsdish.org/lulf/2008/03/06/testing-csup/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 12:21:43 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[csup]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2008/03/06/testing-csup/</guid>
		<description><![CDATA[	The last couple of weeks I&#8217;ve been very busy with school (and I expected this to be a quiet semester). However, I&#8217;ve found some of the last few bugs lurking around in csup:

	

 Deltas that had a &#8216;hand-hacked&#8217; date would have deltatexts that would be misplaced in the rcsfile.

	When adding a new diff, a &#8216;..&#8217; [...]]]></description>
			<content:encoded><![CDATA[	<p>The last couple of weeks I&#8217;ve been very busy with school (and I expected this to be a quiet semester). However, I&#8217;ve found some of the last few bugs lurking around in csup:</p>

	<p><ul></p>

 <li>Deltas that had a &#8216;hand-hacked&#8217; date would have deltatexts that would be misplaced in the rcsfile.</li>

	<p><li>When adding a new diff, a &#8216;..&#8217; would be converted to &#8216;.&#8217; twice, meaning it disappeared.</li><br />
</ul></p>



	<p>Now, there are only these issues left, but I&#8217;m not sure if I really want to fix this:<br />
<ul></p>

	<p><li>Some <span class="caps">RCS</span> files have an extra space between desc and the deltas. CVSup fixes this by <em>counting</em> the lines and then write them out when writing out the <span class="caps">RCS</span> file. I think this is silly, since it doesn&#8217;t really matter according to the <span class="caps">RCS</span> standard.<br />
</li></p>

	<p><li>Some files appear to display garbage values, such as src/share/examples/kld/firmware/fwimage/firmware.img,v<br />
This disappears for some reasons in csup, but I&#8217;m not sure how to handle this. Comments are welcome.<br />
</li><br />
<li>It has a quite high memory usage, and this might be due to some leaks that<br />
I&#8217;ve been unable to find. I&#8217;ll do a much better audit of the code and run<br />
valgrind to investigate this further.<br />
</li></p>

	<p><li>Does not support md5 of <span class="caps">RCS</span> stream, so it can&#8217;t detect errors yet.</li></p>


	<p><li>Statusfile file attributes might not be correct.</li></p>


	<p><li>Some <span class="caps">RCS</span> parts such as newphrases (man rcsfile) is not supported yet.</li></p>


	<p><li>Some hardcoded limits that may break it.</li></p>


	<p><li>Things done a silly way such as sorting and comparing, which I have plans to<br />
improve later.<br />
</li></p>


	<p></ul></p>
	<p>So, finally, you can try out patches if you&#8217;d like:<br />
http://people.freebsd.org/~lulf/patches/csup/cvsmode</p>

	<p>Currently, I&#8217;m including the tokenizer generated by flex, since the flex file itself can&#8217;t be compiled with csup.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2008/03/06/testing-csup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Improving csup</title>
		<link>http://blogs.freebsdish.org/lulf/2008/01/31/improving-csup/</link>
		<comments>http://blogs.freebsdish.org/lulf/2008/01/31/improving-csup/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 09:25:34 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[csup]]></category>

		<category><![CDATA[gvinum]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2008/01/31/improving-csup/</guid>
		<description><![CDATA[	Hello there!

	&#160;It&#8217;s been a while. Partially because I&#8217;ve become a FreeBSD committer and had more productive stuff to do than writing in my weblog, and partially because my account was disabled after Google Summer of Code (Also, thanks to Google for SoC).

	&#160;Since last time, I&#8217;ve been working on getting my gvinum work of this summer [...]]]></description>
			<content:encoded><![CDATA[	<p>Hello there!</p>

	<p>&nbsp;It&#8217;s been a while. Partially because I&#8217;ve become a FreeBSD committer and had more productive stuff to do than writing in my weblog, and partially because my account was disabled after Google Summer of Code (Also, thanks to Google for SoC).</p>

	<p>&nbsp;Since last time, I&#8217;ve been working on getting my gvinum work of this summer into the tree, but since this has to be reviewed before going into the tree, and 7.0-RELEASE is much more important right now, it&#8217;s sort of on hold. In the meantime I&#8217;ve been working on implementing CVSmode for csup. This is something I&#8217;ve been meaning to do for a long time, but never found the big motivation until my exam-period before last christmas. So, I&#8217;ll tell you a bit of what I&#8217;ve done here. For those of you unfamiliar with cvsup,&nbsp;it&#8217;s a network <span class="caps">CVS</span> file synchronization tool which is heavily used in FreeBSD. However, it is written in Modula-3 and is therefore not very easy to maintain and it doesn&#8217;t integrate into the FreeBSD base system very well. So, Maxime Henrion started a C rewrite of cvsup called csup.</p>

	<p>First, a bit on how csup works (or the cvsup protocol). The client runs three threads performing these tasks:<br />
<ul></p>
	<p><li>The lister, which examines the clients files, and sends information about them to the server.</li><br />
<li>The detailer, which recieves commands from server on what needs to be done (&#8220;this file needs updating, send me the details of it&#8217;s revisions).</li><br />
<li>The updater, which recieves the actual updates from the server (&#8220;add this delta to the RCSfile&#8221;).</li><br />
</ul></p>
	<p>More details on how the protocol works can be found on <a href="http://www.cvsup.org/howsofast.html">http://www.cvsup.org/howsofast.html</a></p>

	<p>&nbsp;So, what is CVSmode anyway? In csups normal operation, csup requests the files from a specific branch, called checkout mode. This is the typical way a user would use csup, fetching the src-tree for <span class="caps">RELENG</span>_7 for instance. However, a developer would often like to have the FreeBSD <span class="caps">CVS</span> repository on his local machine, and this is where CVSmode plays a part. CVSmode means that csup will recieve the entire <span class="caps">CVS</span> repository, and also fetch updates to the actual RCSfiles. So far, csup does only support the checkout mode.</p>

	<p>So, what&#8217;s needed for <span class="caps">CVS</span>Mode to work?<br />
<ol></p>
	<p><li>Support for the protocol, so the client is able to not only act correctly on the commands from the server, but also respond correctly. This involves modifying the detailer and the updater part of csup.&nbsp; This part needs to be a bit cleaned up right now, but is in a working state.</li><br />
<li>Correctly parse <span class="caps">RCS</span>Files. Firstly, I made a lexer with flex and parser with yacc. Then I found out I needed reentrancy, and started using bison. After realizing using bison for this wasn&#8217;t really nice since bison wasn&#8217;t in base, I rewrote the parser in C.</li><br />
<li>The ability to update RCSfiles. This required a RCSfile interface. This interface is used by both the parser and the updater, to import and edit RCSfiles. Writing this interface is probably what has taken most of my time.</li><br />
<li>Writing the <span class="caps">RCS</span>Files out with the new updates. This is done internally by the RCSfile implementation.</li><br />
</ol></p>
	<p>So, this is what I&#8217;ve been working on implementing the last month or two. And I have the most parts working. What&#8217;s missing is a crucial part of (4). To write out the new <span class="caps">RCS</span>Files to disk, a correct algorithm to apply diffs <em>and</em> reverse diffs is needed. The algorithm for applying diff was already created by csups author, but the reverse diff algorithm is a bit different. The last week or so, I&#8217;ve been studying the algorithm used in cvsup, and I&#8217;ve started to implement something similar although a bit different in it&#8217;s implementation. So, hopefully I&#8217;ll have this work pretty soon, at least before people start switching over to some new version control system <img src='http://blogs.freebsdish.org/lulf/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2008/01/31/improving-csup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Huntin&#8217; them bugs</title>
		<link>http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 11:54:56 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/</guid>
		<description><![CDATA[	More status updates&#8230; I&#8217;ve been fixing many small gvinum bugs the last couple of weeks:

	The state of gvinum objects were changed after reloading. This meant that objects got the wrong state when gvinum was brought up.
Made gvinum always use the most recent configuration it finds when setting object states.
Make sure the newest drive is always [...]]]></description>
			<content:encoded><![CDATA[	<p>More status updates&#8230; I&#8217;ve been fixing many small gvinum bugs the last couple of weeks:<br />
<ul></p>
	<p><li>The state of gvinum objects were changed after reloading. This meant that objects got the wrong state when gvinum was brought up.</li><br />
<li>Made gvinum always use the most recent configuration it finds when setting object states.</li><br />
<li>Make sure the newest drive is always the newest, and not the first in the drivelist, as was previously assumed.</li><br />
<li>Add &#8220;growable&#8221;-state to be used when a plex is ready to be grown.</li><br />
<li>Allow a plex to be rebuilt even though it&#8217;s also growable.</li><br />
<li>Do not change the size of the volume until the plex is completely grown.</li><br />
<li>Add status of growing and rebuild of a plex in the list output.</li><br />
<li>Prevent rebuild to take over the I/O system increasing access-count at the start and end of the rebuild.</li><br />
</ul></p>
	<p>Probably a couple of other fixes as well. Also, I&#8217;ve updated the vinum-examples page in the handbook to reflect new features and more practical examples. I&#8217;ve posted a &#8220;call for testers&#8221; on current@, arch@ and geom@, and have received some response from people who are willing to help me test. Thanks to them. I&#8217;ve uploaded the code-sample that I&#8217;ll be delivering to google here: http://folk.ntnu.no/lulf/gvinum_soc2007.tar.gz</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cleaning up</title>
		<link>http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/#comments</comments>
		<pubDate>Mon, 06 Aug 2007 15:40:16 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/</guid>
		<description><![CDATA[	The last couple of weeks I&#8217;ve tested and  done bugfixing and cleanup of gvinum code. I refactored some parts to make the code belong where it seems logical. I also implemented growing for striped plexes, but that was quite easy since I could reuse most of the code for growing RAID-5 plexes.&#194;&#160;Unfortunately I was [...]]]></description>
			<content:encoded><![CDATA[	<p>The last couple of weeks I&#8217;ve tested and  done bugfixing and cleanup of gvinum code. I refactored some parts to make the code belong where it seems logical. I also implemented growing for striped plexes, but that was quite easy since I could reuse most of the code for growing <span class="caps">RAID</span>-5 plexes.&Acirc;&nbsp;Unfortunately I was sick for a week and unable to work.</p>

	<p>What remains now is to do more testing (can&#8217;t get enough), and write and update documenatation on gvinum. I have updated patches for gvinum at http://folk.ntnu.no/lulf/patches/freebsd/gvinum for both <span class="caps">RELENG</span>_6 and <span class="caps">CURRENT</span>. I appreciate reports from brave users who tries it out, even if it works <img src='http://blogs.freebsdish.org/lulf/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

	<p>Also, I created a new perforce-branch called gvinum_cache. I&#8217;ve currently implemented a read/write-cache to check if this would give much speed-up for gvinum. It&#8217;s not very nice for reliability, but could be an option for those who want better performance. Anyway, I&#8217;ll update more on this later.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Growing up</title>
		<link>http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 18:08:15 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/</guid>
		<description><![CDATA[	Since last post I haven&#8217;t really done that much do gvinum, but a few things.

	I added a few automated test-scripts to check if a volume behaves properly
Go through test-plan and make sure that gvinum passes the tests.
I&#8217;ve been thinking a lot on how to best implement growing RAID-5 plexes.
I&#8217;ve implemented growing of RAID-5 plexes.

	Now, the [...]]]></description>
			<content:encoded><![CDATA[	<p>Since last post I haven&#8217;t really done that much do gvinum, but a few things.<br />
<ul></p>
	<p><li>I added a few automated test-scripts to check if a volume behaves properly</li><br />
<li>Go through test-plan and make sure that gvinum passes the tests.</li><br />
<li>I&#8217;ve been thinking a lot on how to best implement growing <span class="caps">RAID</span>-5 plexes.</li><br />
<li>I&#8217;ve implemented growing of <span class="caps">RAID</span>-5 plexes.</li><br />
</ul></p>
	<p>Now, the first and second points are quite boring to do, but I had to do it. Now the last points were trickier, since I didn&#8217;t really know where I should start. Finally I decided the best way was to let the plex overwrite itself! A more detalied explanation can be found in the <span class="caps">TODO</span> of my perforce branch.  I need to test the implementation a bit now. Other than that, I&#8217;ve been a bit lazy on my own work this week, and tried to help other students with reviews etc.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bugathon-week</title>
		<link>http://blogs.freebsdish.org/lulf/2007/07/04/bugathon-week/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/07/04/bugathon-week/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 18:51:59 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/07/04/bugathon-week/</guid>
		<description><![CDATA[	Since last post, there has been many small bugfixes to gvinum. After some debating with myself on how I should implement concat/stripe/mirror, I think I got it pretty much right. The event system changed gvinum a lot, so I had to rewrite most of the code I already had on this.

	I have done a lot [...]]]></description>
			<content:encoded><![CDATA[	<p>Since last post, there has been many small bugfixes to gvinum. After some debating with myself on how I should implement concat/stripe/mirror, I think I got it pretty much right. The event system changed gvinum a lot, so I had to rewrite most of the code I already had on this.</p>

	<p>I have done a lot of testing this week, and I made a test plan that I&#8217;m going to follow. Hopefully, I&#8217;ll also be able to create som automatic tests for this.</p>

	<p>I&#8217;ve even been a good boy and updated the gvinum manpage! I added some examples to the manpage as well, so that it&#8217;s easier to get into gvinum for inexperienced users (not sure if we want gvinum to live even longer, but <img src='http://blogs.freebsdish.org/lulf/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>

	<p>A lot of small problems with weird states being set was also fixed, since this can be very confusing if you havent used gvinum much.</p>

	<p>What I&#8217;d like to do next, is create a set of testscripts that I can use to test quickly and easily with. I also noticed that it would be nice to have a similar command like &#8216;mirror&#8217; for <span class="caps">RAID</span>-5 volumes. This could be used like this: &#8216;gvinum raid5 &lt;disk1&gt; &lt;disk2&gt; &lt;disk3&gt;&#8217;. Other than that, I&#8217;ve started to think on how I&#8217;m going to implement raid-5 resizing and other goals in my proposal.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/07/04/bugathon-week/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bug-monster dying slowly</title>
		<link>http://blogs.freebsdish.org/lulf/2007/06/28/bug-monster-dying-slowly/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/06/28/bug-monster-dying-slowly/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 14:18:01 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/06/28/bug-monster-dying-slowly/</guid>
		<description><![CDATA[
	Finally, an update on what I&#8217;ve been doing since the last time. This time I have a lot of small changes that have been done: 

	
	Implement initialization of RAID5-Arrays. This basically writes zeros over everything and makes sure parity is correct. 
Fix a bug with mirror code. The  length of the completed requests got [...]]]></description>
			<content:encoded><![CDATA[
	<p><p class="line874">Finally, an update on what I&#8217;ve been doing since the last time. This time I have a lot of small changes that have been done: <span class="anchor"></span></p></p>

	<p><ul></p>
	<p><li>Implement initialization of <span class="caps">RAID5</span>-Arrays. This basically writes zeros over everything and makes sure parity is correct. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Fix a bug with mirror code. The  length of the completed requests got  doubled if you have a  mirror with two plexes, tripled if you have  a mirror with three plexes etc.<span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">When a mirrored plexes are syncing, all requests after and including the first <em>write-request</em> are delayed until syncing is finished. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Allow rebuilding a <span class="caps">RAID</span>-5 array while it is in use (e.g. mounted). Delay requests that are in conflict with the rebuild, but allow requests on the already rebuilt part to be run. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Allow subdisks to come up automagically after rebuild. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Allow stripesizes not divideable by the subdisk size. A regression in the new gvinum code prevented this. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Modify the event system to contain two intmax_t fields, so we won&#8217;t have to allocate/deallocate pointers all the time when passing args to gv_post_event. <span class="anchor"></span><span class="anchor"></span></li><br />
<li class="gap">Add support for the rename and move commands to new gvinum. The code has been rewritten for the new gvinum.</li><br />
<li class="gap">Fix a bug in the code for degraded writes to a <span class="caps">RAID5</span>-array, where only zeros were written.</li><br />
<li class="gap">Other minor bug/style fixes. <span class="anchor"></span><span class="anchor"></span></li><br />
</ul></p>
	<p>Next, I&#8217;m going to implement concat/stripe/mirror functionality. I already have some code from previous work I did, so I just need to adapt it to new gvinum, as well as change some ugly parts. There are some small facade-changes left, but I will do this after the last of the original vinum features is completed. Also, I will try write a nice status report, and get a testable patch out by the time the reports are finished.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/06/28/bug-monster-dying-slowly/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Even happier&#8230;</title>
		<link>http://blogs.freebsdish.org/lulf/2007/06/18/even-happier/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/06/18/even-happier/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 08:54:22 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/06/18/even-happier/</guid>
		<description><![CDATA[	Finally I did the initalization code for raid5 plexes, and this means I&#8217;m pretty much complete with updating old gvinum to the new event system, but it will probably need some fixes here and there as it gets tested.

	What remains in terms of needed functionality is the concat/mirror/stripe commands to easily create a concat/mirror/stripe volume [...]]]></description>
			<content:encoded><![CDATA[	<p>Finally I did the initalization code for raid5 plexes, and this means I&#8217;m pretty much complete with updating old gvinum to the new event system, but it will probably need some fixes here and there as it gets tested.</p>

	<p>What remains in terms of needed functionality is the concat/mirror/stripe commands to easily create a concat/mirror/stripe volume out of three disks. I also have noted some issues that I think could need an improvement. More on this next time.</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/06/18/even-happier/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Subdisks now live happy in raid5-town&#8230;</title>
		<link>http://blogs.freebsdish.org/lulf/2007/06/13/subdisks-now-live-happy-in-raid5-town/</link>
		<comments>http://blogs.freebsdish.org/lulf/2007/06/13/subdisks-now-live-happy-in-raid5-town/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 23:13:04 +0000</pubDate>
		<dc:creator>lulf</dc:creator>
		
		<category><![CDATA[Soc2007]]></category>

		<guid isPermaLink="false">http://blogs.freebsdish.org/lulf/2007/06/13/subdisks-now-live-happy-in-raid5-town/</guid>
		<description><![CDATA[	So, finally the exams are over, and I&#8217;ve been able to work sort of full-time on my project the last days. What I&#8217;ve done is (a bit technical this time perhaps, but this stuff tends to&#194;&#160;become&#194;&#160;that):

	Implemented attach/detach routines. This makes it possible to attach a subdisk/plex to a plex/volume, or detach a plex/subdisk from a [...]]]></description>
			<content:encoded><![CDATA[	<p>So, finally the exams are over, and I&#8217;ve been able to work sort of full-time on my project the last days. What I&#8217;ve done is (a bit technical this time perhaps, but this stuff tends to&Acirc;&nbsp;become&Acirc;&nbsp;that):</p>

	<p>Implemented attach/detach routines. This makes it possible to attach a subdisk/plex to a plex/volume, or detach a plex/subdisk from a volume/plex. The detach routine makes sure all connections between the objects are broken correctly, and only if it&#8217;s possible (unless forced ofcourse). The attach routine makes sure the objects are correctly connected together again, and that a plex that misses subdisks includes them in the previous size when calculating the new size (so we don&#8217;t get wrong sizes on the plexes).</p>

	<p>Tested rebuild of degraded plexes. The detach/attach routines enabled me to check if the rebuild of a degraded raid5 plex could work. And it did! This means (and this is something that I really missed in old gvinum), that when a drive fails, you can detach the failed subdisk, create a new subdisk on the plex (and it will check if the plex &#8220;misses&#8221; a subdisk), and then use &#8216;start &lt;plexname&gt;&#8217; to rebuild the plex (The state of the plex must be degraded and the subdisk you wish to rebuild must be stale) and you&#8217;re good to go!</p>

	<p>Bugfixes.</p>

	<p>Implement syncing of plexes.  This means one can now add a mirror to a volume, and have the new plex to be synced from the original. After a couple of tests, it seems to work, but I did get a bug I need to reproduce.</p>

	<p>I&Acirc;&nbsp;also&Acirc;&nbsp;discovered&Acirc;&nbsp;some&Acirc;&nbsp;bugs&Acirc;&nbsp;regarding&Acirc;&nbsp;mirrored&Acirc;&nbsp;plexes&Acirc;&nbsp;that&Acirc;&nbsp;I&Acirc;&nbsp;will&Acirc;&nbsp;address&Acirc;&nbsp;in<br />
the&Acirc;&nbsp;near&Acirc;&nbsp;future.&Acirc;&nbsp;This&Acirc;&nbsp;probably&Acirc;&nbsp;came&Acirc;&nbsp;with&Acirc;&nbsp;the&Acirc;&nbsp;change&Acirc;&nbsp;with&Acirc;&nbsp;the&Acirc;&nbsp;new&Acirc;&nbsp;gvinum<br />
event&Acirc;&nbsp;system.</p>

	<p>Next on my schedule is to hunt some weird state bugs where the state is not correctly set, as well as the mirrored plex problems I&#8217;ve seen. Also, I need to guarantee that a plex sync is up-to-date (that no data is written to the synced plex in the meantime).</p>
 ]]></content:encoded>
			<wfw:commentRss>http://blogs.freebsdish.org/lulf/2007/06/13/subdisks-now-live-happy-in-raid5-town/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
