<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet FreeBSD Summer of Code 2007</title>
	<!--<link rel="self" type="text/atom" href=""/>-->
	<link rel="alternate" type="text/html" href="http://planet.freebsdish.org/soc2007"/>
	<id></id>
	<updated>2007-10-19T13:41:37+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry>
		<title>Ivan Voras: VirtualBox</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/10/15/virtualbox/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/10/15/virtualbox/</id>
		<updated>2007-10-15T19:14:36+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m trying out &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt; VM software and so far I&amp;#8217;m pleased. It seems to have significantly better performance then VMWare Server, and it&amp;#8217;s maybe better than VMWare &lt;span class=&quot;caps&quot;&gt;ESX 3&lt;/span&gt;:&lt;/p&gt;

                     &lt;span class=&quot;caps&quot;&gt;INDEX VALUES&lt;/span&gt;&lt;br /&gt;
TEST                                        &lt;span class=&quot;caps&quot;&gt;BASELINE     RESULT      INDEX&lt;/span&gt;

	&lt;p&gt;Dhrystone 2 using register variables        116700.0  6479416.5      555.2&lt;br /&gt;
Double-Precision Whetstone                      55.0     1636.4      297.5&lt;br /&gt;
Execl Throughput                                43.0      355.2       82.6&lt;br /&gt;
File Copy 1024 bufsize 2000 maxblocks         3960.0    71113.0      179.6&lt;br /&gt;
File Copy 256 bufsize 500 maxblocks           1655.0    29474.0      178.1&lt;br /&gt;
File Copy 4096 bufsize 8000 maxblocks         5800.0   114875.0      198.1&lt;br /&gt;
Pipe Throughput                              12440.0   244627.7      196.6&lt;br /&gt;
Pipe-based Context Switching                  4000.0     9561.1       23.9&lt;br /&gt;
Process Creation                               126.0      926.1       73.5&lt;br /&gt;
Shell Scripts (8 concurrent)                     6.0       23.0       38.3&lt;br /&gt;
System Call Overhead                         15000.0   117599.8       78.4&lt;/p&gt;
                                                                 =====
     &lt;span class=&quot;caps&quot;&gt;FINAL SCORE                                                     122&lt;/span&gt;.1

	&lt;p&gt;(these results are comparable with the VMWare Server benchmark from a few days ago; the VMWare &lt;span class=&quot;caps&quot;&gt;ESX&lt;/span&gt; benchmark in the same post was done on a slower hardware)&lt;/p&gt;

	&lt;p&gt;I&amp;#8217;s only shortcoming is that it doesn&amp;#8217;t seem to support &amp;#8220;background&amp;#8221; VM instances &lt;img src=&quot;http://blogs.freebsdish.org/ivoras/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; If that gets implemented, VirtualBox could become the best very best VM choice for FreeBSD.&lt;/p&gt;

	&lt;p&gt;There were some noncommittal talks about maybe porting VirtualBox to FreeBSD (in &amp;#8220;host&amp;#8221; mode) so the product is becoming very exciting.&lt;/p&gt;

	&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; It might be fast but apparently it doesn&amp;#8217;t work yet. The guest OS doesn&amp;#8217;t survive a buildworld. After some time the kernel complained four times about unexpected eflags in sigreturn (like 0&amp;#215;80283), and I had four unrelated processes stuck in a tight &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt;-using loop.&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: Unionfs patches are in the tree!</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/10/14/unionfs-patches-are-in-the-tree/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/10/14/unionfs-patches-are-in-the-tree/</id>
		<updated>2007-10-14T19:30:06+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;Finally!&lt;/strong&gt;&lt;/p&gt;

	&lt;p&gt;Unionfs was unusable (at least for me) without these patches and today they were finally committed to 8-CURRENT. They should be &lt;span class=&quot;caps&quot;&gt;MFC&lt;/span&gt;-ed to 7-STABLE after a week.&lt;/p&gt;

	&lt;p&gt;(If you didn&amp;#8217;t know 7-STABLE was branched, then&amp;#8212;surprise!)&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: Bounties?</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/10/07/bounties/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/10/07/bounties/</id>
		<updated>2007-10-07T22:44:56+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m wondering how open are FreeBSD users to the idea of providing funding for some FreeBSD-specific development. I&amp;#8217;m specifically interested about &amp;#8220;bounties&amp;#8221; such as those from &lt;a href=&quot;http://www.rsync.net/resources/notices/2007cb.html&quot;&gt;rsync.net&lt;/a&gt; for certain specific projects. The FreeBSD Foundation always accepts donations, but this is something different and more targeted.&lt;/p&gt;

	&lt;p&gt;Let&amp;#8217;s give an example (nothing definite right now, no obligations, even the main developer(s) aren&amp;#8217;t contacted about the idea): are there any people or organizations that would fund &lt;a href=&quot;http://2007.asiabsdcon.org/papers/P11-slides.pdf&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BLUFFS&lt;/span&gt;&lt;/a&gt;? The motivation is clear: a clean journaling file system compatible with &lt;span class=&quot;caps&quot;&gt;UFS&lt;/span&gt;. Though &lt;span class=&quot;caps&quot;&gt;ZFS&lt;/span&gt; is nice, it&amp;#8217;s still not stable enough (and requires so much memory it&amp;#8217;s not suitable for smaller machines) and softupdates is in bad shape anyway.&lt;/p&gt;

	&lt;p&gt;If you&amp;#8217;re interested, have an idea or actually anything to contribute to this topic, please post a reply.&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: How slow is VMWare (Server)?</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/09/29/how-slow-is-vmware/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/09/29/how-slow-is-vmware/</id>
		<updated>2007-09-29T21:47:43+00:00</updated>
		<content type="html">&lt;p&gt;VMWare is slow. But how slow is it? Here&amp;#8217;s two runs of benchmarks/unixbench on the same machine, first in a VMWare guest under VMWare Server 1.0 on Windows XP, the second under the native OS on the same machine.&lt;/p&gt;

	&lt;p&gt;Here are the results on VMWare:&lt;/p&gt;

	&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
                     INDEX VALUES&lt;br /&gt;
TEST                                        BASELINE     RESULT      INDEX

	&lt;p&gt;Dhrystone 2 using register variables        116700.0  6330202.6      542.4&lt;br /&gt;
Double-Precision Whetstone                      55.0     1606.8      292.1&lt;br /&gt;
Execl Throughput                                43.0      468.4      108.9&lt;br /&gt;
File Copy 1024 bufsize 2000 maxblocks         3960.0    36722.0       92.7&lt;br /&gt;
File Copy 256 bufsize 500 maxblocks           1655.0    11696.0       70.7&lt;br /&gt;
File Copy 4096 bufsize 8000 maxblocks         5800.0    49643.0       85.6&lt;br /&gt;
Pipe Throughput                              12440.0    95945.5       77.1&lt;br /&gt;
Pipe-based Context Switching                  4000.0    21320.3       53.3&lt;br /&gt;
Process Creation                               126.0     1209.9       96.0&lt;br /&gt;
Shell Scripts (8 concurrent)                     6.0        1.0        1.7&lt;br /&gt;
System Call Overhead                         15000.0    47093.0       31.4&lt;/p&gt;
                                                                 =====
     &lt;span class=&quot;caps&quot;&gt;FINAL SCORE                                                      70&lt;/span&gt;.1&lt;br /&gt;


	&lt;p&gt;And here on the raw hardware:&lt;/p&gt;

	&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

                     INDEX VALUES&lt;br /&gt;
TEST                                        BASELINE     RESULT      INDEX

	&lt;p&gt;Dhrystone 2 using register variables        116700.0  6467105.1      554.2&lt;br /&gt;
Double-Precision Whetstone                      55.0     1633.7      297.0&lt;br /&gt;
Execl Throughput                                43.0     2030.9      472.3&lt;br /&gt;
File Copy 1024 bufsize 2000 maxblocks         3960.0    63783.0      161.1&lt;br /&gt;
File Copy 256 bufsize 500 maxblocks           1655.0    57489.0      347.4&lt;br /&gt;
File Copy 4096 bufsize 8000 maxblocks         5800.0    53476.0       92.2&lt;br /&gt;
Pipe Throughput                              12440.0   930715.9      748.2&lt;br /&gt;
Pipe-based Context Switching                  4000.0   204248.8      510.6&lt;br /&gt;
Process Creation                               126.0     5373.3      426.5&lt;br /&gt;
Shell Scripts (8 concurrent)                     6.0      563.7      939.5&lt;br /&gt;
System Call Overhead                         15000.0   720641.0      480.4&lt;/p&gt;
                                                                 =====
     &lt;span class=&quot;caps&quot;&gt;FINAL SCORE                                                     387&lt;/span&gt;.4&lt;br /&gt;


	&lt;p&gt;Both guests are FreeBSD 7-CURRENT with debugging disabled. The results are not 100% comparable since the VMWare image was run without &lt;span class=&quot;caps&quot;&gt;SMP&lt;/span&gt;, but on this benchmark, &lt;span class=&quot;caps&quot;&gt;SMP&lt;/span&gt; positively influences only &amp;#8220;shell scripts&amp;#8221; results (parallel execution) &amp;#8211; other results are either comparable, or negatively influenced by &lt;span class=&quot;caps&quot;&gt;SMP &lt;/span&gt;(the &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; is a dual-core Athlon 64, i386 mode).&lt;/p&gt;

	&lt;p&gt;Make your own conclusions, but I consider the IO and context switch performance so bad they&amp;#8217;re making the whole system unusable in production (at least where performance is important).&lt;/p&gt;

	&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/p&gt;

	&lt;p&gt;In defense of VMWare I&amp;#8217;ve run unixbench on VMWare &lt;span class=&quot;caps&quot;&gt;ESX3&lt;/span&gt; server (though on a system not at all comparable to the one in above benchmarks &amp;#8211; a 3 GHz Xeon from the NetBurst era, running 6.2-RELEASE as a guest) and the results are better:&lt;/p&gt;

	&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
                     INDEX VALUES&lt;br /&gt;
TEST                                        BASELINE     RESULT      INDEX

	&lt;p&gt;Dhrystone 2 using register variables        116700.0  5113310.0      438.2&lt;br /&gt;
Double-Precision Whetstone                      55.0      935.0      170.0&lt;br /&gt;
Execl Throughput                                43.0      555.5      129.2&lt;br /&gt;
File Copy 1024 bufsize 2000 maxblocks         3960.0    55662.0      140.6&lt;br /&gt;
File Copy 256 bufsize 500 maxblocks           1655.0    17818.0      107.7&lt;br /&gt;
File Copy 4096 bufsize 8000 maxblocks         5800.0    66604.0      114.8&lt;br /&gt;
Pipe Throughput                              12440.0   132556.6      106.6&lt;br /&gt;
Pipe-based Context Switching                  4000.0    18074.1       45.2&lt;br /&gt;
Process Creation                               126.0     1414.9      112.3&lt;br /&gt;
Shell Scripts (8 concurrent)                     6.0      130.7      217.8&lt;br /&gt;
System Call Overhead                         15000.0    62919.9       41.9&lt;/p&gt;
                                                                 =====
     &lt;span class=&quot;caps&quot;&gt;FINAL SCORE                                                     121&lt;/span&gt;.2&lt;br /&gt;


	&lt;p&gt;I still wouldn&amp;#8217;t use it where performance is important, but at least these results look half-usable. The major improvement seems to be in context switching and parallel execution.&lt;/p&gt;

	&lt;p&gt;&lt;b&gt;Second update:&lt;/b&gt;&lt;/p&gt;

	&lt;p&gt;Here&amp;#8217;s the same setup as in the first VMWare Server benchmark (same machine, Windows XP host, 7-CURRENT), with QEmu+kqemu (kernel+user code acceleration):&lt;/p&gt;

	&lt;p&gt;&lt;code&gt;&lt;br /&gt;
TEST                                        BASELINE     RESULT      INDEX&lt;/code&gt;&lt;/p&gt;

	&lt;p&gt;Dhrystone 2 using register variables        116700.0  5456588.4      467.6&lt;br /&gt;
Double-Precision Whetstone                      55.0     1492.1      271.3&lt;br /&gt;
Execl Throughput                                43.0      166.5       38.7&lt;br /&gt;
File Copy 1024 bufsize 2000 maxblocks         3960.0    13744.0       34.7&lt;br /&gt;
File Copy 256 bufsize 500 maxblocks           1655.0     4426.0       26.7&lt;br /&gt;
File Copy 4096 bufsize 8000 maxblocks         5800.0    23832.0       41.1&lt;br /&gt;
Pipe Throughput                              12440.0    23079.7       18.6&lt;br /&gt;
Pipe-based Context Switching                  4000.0     2159.5        5.4&lt;br /&gt;
Process Creation                               126.0      409.8       32.5&lt;br /&gt;
Shell Scripts (8 concurrent)                     6.0        8.6       14.3&lt;br /&gt;
System Call Overhead                         15000.0     9728.4        6.5&lt;/p&gt;
                                                                 =====
     &lt;span class=&quot;caps&quot;&gt;FINAL SCORE                                                      33&lt;/span&gt;.3&lt;br /&gt;


	&lt;p&gt;Compared to this, VMWare server doesn&amp;#8217;t look bad at all &lt;img src=&quot;http://blogs.freebsdish.org/ivoras/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Andrew Turner: FreeBSD update front end update</title>
		<link rel="alternate" type="text/html" href="http://fubar.geek.nz/blog/2007/07/22/freebsd-update-front-end-update/"/>
		<id>http://fubar.geek.nz/blog/2007/07/22/freebsd-update-front-end-update/</id>
		<updated>2007-09-22T10:46:40+00:00</updated>
		<content type="html">My work towards creating a front end for freebsd-update is progressing. I have it at the point where it is exchanging dummy information about the patches on a machine. I've added signal handlers to shut down the back end correctly. The network code is fixed when the back end attempts ...</content>
		<author>
			<name>Andrew Turner</name>
			<uri>http://fubar.geek.nz/blog</uri>
		</author>
	</entry>

	<entry>
		<title>Andrew Turner: FreeBSD update front end first cut</title>
		<link rel="alternate" type="text/html" href="http://fubar.geek.nz/blog/2007/06/10/freebsd-update-front-end-first-cut/"/>
		<id>http://fubar.geek.nz/blog/2007/06/10/freebsd-update-front-end-first-cut/</id>
		<updated>2007-09-22T10:46:40+00:00</updated>
		<content type="html">I've managed to get my front and back ends talking to each other. The front-end is written in Python. It loads a Glade file and uses that to generate the window to display.

To run it you need a copy of //depot/projects/soc2007/andrew-update/ from perforce. Run 'make' to build it. Next, from ...</content>
		<author>
			<name>Andrew Turner</name>
			<uri>http://fubar.geek.nz/blog</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Tarasov: Time to stop relaxing</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/taleks/2007/09/12/time-to-stop-relaxing/"/>
		<id>http://blogs.freebsdish.org/taleks/2007/09/12/time-to-stop-relaxing/</id>
		<updated>2007-09-12T12:28:27+00:00</updated>
		<content type="html">&lt;p&gt;About half of month I was doing nothing (actually vacations were planned, but they shifted once and shifted totally away at second time :)) I gave my second testing computer to brother, so I&amp;#8217;m waiting when ordered notebook will come to doors of my home to continue developing.&lt;/p&gt;

	&lt;p&gt;There are several major tasks to perform:&lt;/p&gt;

	&lt;p&gt;1. Check  why  gziped version of modules are not loaded correctly (rc and forth scripts&amp;#160; e.g. loaded correctly). I&amp;#8217;ve unwinded call stack from interact() to working with file systems, it seems there is no nothing criminal, but non-compressed versions of modules are not loaded after first 512 bytes read by file_read(). May be I&amp;#8217;ve made somewhere incorrect define of macro.&lt;/p&gt;

	&lt;p&gt;2.  To implement directory listing (parse html result of  server-reply). Main purpose to use same code for different listing types (detect numbers anf filenames between tags without actual parsing of html). After first view &amp;#8211; this task seems solvable.&lt;/p&gt;

	&lt;p&gt;3. To comment more accurately commits, that were changing libstand. May be I&amp;#8217;ll add also another function there strnstr(), which behaviour is &amp;#8220;emulated&amp;#8221; now in not very good fashion in pxe_http module with usage of strstr() and manual adding of zero byte at end of readed from socket data.&lt;/p&gt;

	&lt;p&gt;4. Work a little bit with assembler source. There is now unused code here and there is working, but may be not very correct &lt;span class=&quot;caps&quot;&gt;ISR&lt;/span&gt; here. So, change it. Also, &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; call trap is duplicated  &amp;#8211; so there may be small optimization.&lt;/p&gt;

	&lt;p&gt;5.  Added to loader functions must be revised (some of them really useless, after testing is completed). Comment them.&lt;/p&gt;

	&lt;p&gt;6. Write more solid documentation. And upgrade existing in some parts.&lt;/p&gt;

	&lt;p&gt;I hope, I&amp;#8217;ll start working at the end of week. After completing of this tasks earlier mentioned telnet client module will be started (may be this will need to make &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; sockets &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; more similar to common sockets, then it&amp;#8217;ll be possible to use common telnet client code,  but without advanced terminal settings and signals support).&lt;/p&gt;</content>
		<author>
			<name>taleks</name>
			<uri>http://blogs.freebsdish.org/taleks</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: finstall alpha version</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/08/29/finstall-alpha-version/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/08/29/finstall-alpha-version/</id>
		<updated>2007-08-29T08:17:01+00:00</updated>
		<content type="html">&lt;p&gt;As some of you might now, I&amp;#8217;ve been working on a &lt;a href=&quot;http://wiki.freebsd.org/finstall&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; installer for FreeBSD&lt;/a&gt; as a &lt;a href=&quot;http://code.google.com/&quot;&gt;Google Summer of Code 2007&lt;/a&gt; project that would one day, with some luck, replace the aging sysinstall. The SoC is now officially over and it&amp;#8217;s time to make a public release of what&amp;#8217;s been done so far.&lt;/p&gt;

	&lt;p&gt;But first, I&amp;#8217;d like to write a bit about the project itself. Here are some of the more important ideas planned for the project, in no particular order:&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt; Make a modern installer for a modern FreeBSD system, with support for advanced features not present in sysinstall.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Make the installer run directly of a FreeBSD Live CD&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Separate the installer (as a tool) into the front-end and the back-end.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Make both the front-end and the back-end extensible enough so new features can be easily added.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Make the front-end and the back-end interchangeable so people can write their own replacements.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Make the back-end network-aware so it can support network (remote) installations. Use a service announcement and configuration technology such as &lt;a href=&quot;http://en.wikipedia.org/wiki/Zeroconf&quot;&gt;Zeroconf&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; Eventually, make the back-end a part of FreeBSD base to be used for regular system configuration.&lt;/li&gt;&lt;br /&gt;
&lt;/p&gt;

	&lt;p&gt;I&amp;#8217;m happy to say the project is going on nicely, and that I&amp;#8217;ve created infrastructure that can support the above features (as well as some other goodies discussed at the recent &lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;Can). The project itself is hosted in the &lt;a href=&quot;http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/ivoras%5ffinstall&amp;HIDEDEL=NO&quot;&gt;FreeBSD&amp;#8217;s Perforce depot&lt;/a&gt;. It consists of three parts / subprojects:&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt; &lt;i&gt;installer&lt;/i&gt; &amp;#8211; the installer application, created in Python with PyGTK as the &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; library&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; &lt;i&gt;pybackend&lt;/i&gt; &amp;#8211; the backend daemon. For speedy coding, it was also implemented in Python, but if the project gains popularity, a C version that can be included in FreeBSD base system is planned.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt; &lt;i&gt;makeimage&lt;/i&gt; &amp;#8211; a Python script that creates a LiveCD &lt;span class=&quot;caps&quot;&gt;ISO&lt;/span&gt; image with the installer. It can be customized to produce generic FreeBSD LiveCDs.&lt;br /&gt;
&lt;/li&gt;&lt;/p&gt;

	&lt;p&gt;The back-end is a mostly stateless &lt;a href=&quot;http://www.xmlrpc.com/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;-RPC&lt;/a&gt; server that provides two kind of services: synchronous &lt;span class=&quot;caps&quot;&gt;RPC&lt;/span&gt; calls and asynchronous &amp;#8220;jobs&amp;#8221; (that can take a long time and have progress checking infrastructure). The front-end is a modular PyGTK application that provides the user interface and uses the back-end for all &amp;#8220;real&amp;#8221; work.&lt;/p&gt;

	&lt;p&gt;I&amp;#8217;ve created an &lt;span class=&quot;caps&quot;&gt;ISO&lt;/span&gt; image with the installer embedded in it that can be used primarily for testing. The LiveCD is a fully working FreeBSD 7-CURRENT installation (i386) with X.Org 7.0, Xfce 4.2 desktop environment, Firefox, Thunderbird and a couple of supporting utilities. The image was built with &lt;a href=&quot;http://gcc.gnu.org/gcc-4.2/changes.html&quot;&gt;mtune=generic&lt;/a&gt; CPU optimizations (pentium-m, pentium-4 and others). The installer version included in this LiveCD is a &lt;i&gt;test version&lt;/i&gt;, more like a technology preview than a usable application. It can only install the system on a blank, unpartitioned drive and has only been tested on VMWare so far. I&amp;#8217;ve disabled features that I know will not work (yet) but there&amp;#8217;s still a chance there are bugs in the existing/enabled options.&lt;/p&gt;

	&lt;p&gt;Speaking of bugs, the overall state of FreeBSD 7-CURRENT is not very stable right now, and there are several known bugs and panics that will hopefully be resolved before 7.0. The system on the LiveCD (that is also used for the new installation) is &lt;strong&gt;not&lt;/strong&gt; the &amp;#8220;official&amp;#8221; system that can be downloaded from FreeBSD source repositories. It contains several local patches I&amp;#8217;ve made (or found from other developers and applied) to resolve some of the bugs and instabilities. I&amp;#8217;ve submitted the patches to re@ some time ago, but they have still not been applied to the official source tree. Even so, there are several more-or-less known problems in the kernel I&amp;#8217;m using, so you can expect random panics (you can imagine it&amp;#8217;s hard do develop something like this with random panics happening all the time &lt;img src=&quot;http://blogs.freebsdish.org/ivoras/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; ). In particular, the LiveCD kernel might panic during the last phase (configuration), which is a problem I currently can&amp;#8217;t solve.&lt;/p&gt;

	&lt;p&gt;I think that&amp;#8217;s all that needs to be said. Download the &lt;a href=&quot;http://ivoras.sharanet.org/stuff/freebsd7-finstall-alpha.iso.bz2&quot;&gt;installer image&lt;/a&gt;, try it out and see for yourself how it works. As I&amp;#8217;ve said, there&amp;#8217;s still a lot to be done and some planned features are not present in this release &amp;#8211; but have fun trying it out. I won&amp;#8217;t make an official announcement on current@ because I think it&amp;#8217;s too early for that, so if you have any suggestions or questions you can post them as comments to this blog post. Please post both successes and failures (but keep the reports short &lt;img src=&quot;http://blogs.freebsdish.org/ivoras/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; ). (n.b. I&amp;#8217;ll delete all comments that don&amp;#8217;t have something useful to say, e.g. &amp;#8220;I&amp;#8217;m downloading it and I&amp;#8217;ll try it tomorrow&amp;#8221; type of posts).&lt;/p&gt;

	&lt;p&gt;P.S. If you don&amp;#8217;t want to try it yet, I&amp;#8217;ve created &lt;a href=&quot;http://wiki.freebsd.org/finstall/Amnesiac&quot;&gt;several screenshots of finstall&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: RAID flash</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/08/24/raid-for-fast-flash-drives/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/08/24/raid-for-fast-flash-drives/</id>
		<updated>2007-08-24T11:00:24+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;ve just had a sort-of shock about how cheap the &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; flash drives have become (vs. how pricey they used to be a long time ago). I didn&amp;#8217;t look at their prices for a long time (since I didn&amp;#8217;t need any new flash drives) so I was pleasantly surprised with the per/MB prices that have become &amp;#8220;normal&amp;#8221;. On the other hand, capacity of consumer &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; drives hasn&amp;#8217;t gone up much &amp;#8211; it seems 8 GB is the top of the range now, and speed is still not great &amp;#8211; it seems 8-10 MB/s is the norm. But it&amp;#8217;s relatively cheap technology now.&lt;/p&gt;

	&lt;p&gt;It seems that now is a good time to start experimenting with flash memory even in production, especially where seek times are important (flash drives have no seek latency that&amp;#8217;s present in mechanical drives). Having no seek time has a nice side-effect when drives are used in &lt;span class=&quot;caps&quot;&gt;RAID1&lt;/span&gt; with gmirror, which can be configured to split large read requests over the mirrored drives. With mechanical drives this mode couldn&amp;#8217;t produce significant performance because the drive heads still needed to seek through the unread portions (for sequential requests) but the situation is ideal for seek-less drives.&lt;/p&gt;

	&lt;p&gt;I think the ideal solution here would be &lt;span class=&quot;caps&quot;&gt;RAID 1&lt;/span&gt;+0 with four drives. Admittedly, this would only give 16 GB of storage space (if each individual drive is 8 GB), but the (read) performance should scale linearly to ~~ 40 MB/s (once it would double in gmirror/RAID1, then again in gstripe/RAID0), which is decent. 16 GB is relatively small, but flash memory is &lt;i&gt;much&lt;/i&gt; cheaper than server memory (e.g. FB-DIMM) and most databases are relatively small, so it might not be affordable to keep the whole database in &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt; any more.&lt;/p&gt;

	&lt;p&gt;Only one question remains now &amp;#8211; how many &lt;span class=&quot;caps&quot;&gt;IOPS&lt;/span&gt; can be had from flash memory (unconfirmed information says: around 2000), and does having all flash drives on the same host &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; bus (e.g. one &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; hub with 4 drives, connected to the motherboard port) introduce too much latency?&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Tarasov: Successfully tested</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/taleks/2007/08/19/successfully-tested/"/>
		<id>http://blogs.freebsdish.org/taleks/2007/08/19/successfully-tested/</id>
		<updated>2007-08-19T05:29:06+00:00</updated>
		<content type="html">&lt;p&gt;Since last post were added&amp;#160; loading of &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;-drive, using httpfs precaching and some other small updates and bugfixes, most of time was spent&amp;#160; for testing.&lt;/p&gt;

	&lt;p&gt;Now rootpath option is used to specify location of root on web server. Also, I&amp;#8217;ve found that bootp() doesn&amp;#8217;t sets nameip (it was not usually needed for &lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt; loader, it&amp;#8217;s enough to specify IP of server and resolving is not required. But in case of web0servers, which may use virtual servers for different domains for same &lt;span class=&quot;caps&quot;&gt;IP &lt;/span&gt;- it&amp;#8217;s needed to know domain name, and nameserver option is needed) and thus gives problems for code to work, so by default own &lt;span class=&quot;caps&quot;&gt;DHCP&lt;/span&gt; client is used. If&amp;#160; not domain name but IP is specified in rootpath, then bootp() may be used.&lt;/p&gt;

	&lt;p&gt;Loading of &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;-drive is optional, but was needed to test correct working of code. It&amp;#8217;s done simply by adding few&amp;#160; lines to loader.rc script. Actually, it&amp;#8217;s possible use for example &lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt; after loading as root file system (by setting appropriate environment variables), but as long as pxe_http library code must be a little bit independent &amp;#8211; best choice was to use &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;-drive (or additionaly to write kernel module for support httpfs. Last variant needed more time and knowledge, so it temporarily was thrown away).&lt;/p&gt;

	&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt; drive image was got from boot floppy image (mfsroot.gz). It contains needed for system installation files. So, after loading by pxe_http kernel+RAM drive&amp;#160; it&amp;#8217;s possible to install FreeBSD by choosing ftp as media source.&lt;/p&gt;

	&lt;p&gt;While testing code in &lt;span class=&quot;caps&quot;&gt;LAN I&lt;/span&gt;&amp;#8217;ve found that loader trys to get file by small portions (maximum 4096 bytes per request). It is not very optimal, so about month ago I was thinking about simple caching mechanism and now it works. For this purpose, httpfs need access to socket receive buffer (this is done to reduce memory usage, so cached information is actually stored in socket buffer, main problem is in removing from buffer header and watching when cached data is empty). Such ability breaks abstraction of code layers, but raises up connection speed and reduces load of http server. While testing it lowered downloading time from about one minute to 25-30 seconds. After setting lower waiting time in pxe_await.h, code response to incoming packets become higher, and downloading is performed in 15-25 seconds at &lt;span class=&quot;caps&quot;&gt;LAN&lt;/span&gt;.&lt;/p&gt;

	&lt;p&gt;After caching was checked, I&amp;#8217;ve started testing of code with remote server, that is really remote and situated in 12 hops from my home computer. Here was first surprise, &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt; code was working really strange: some packets were never received. During debugging also bug with resending was fixed (segments were waiting to be acked bigger aequential number, then needed).&lt;/p&gt;

	&lt;p&gt;So, packets were not receiving and code not worked in &lt;span class=&quot;caps&quot;&gt;WAN&lt;/span&gt;. I&amp;#8217;ve spent many hours trying to make it work. Ed (my mentor) said simple idea &amp;#8211; to tcpdump on server side. Well, I don&amp;#8217;t know why this idea have not appeared in my mind itself. tcpdump showed, that all is ok &amp;#8211; packets from me correctly are coming to server, and from server to me are also sent, however not acked. Debugging of pxe_core showed that they are not reaching my &lt;span class=&quot;caps&quot;&gt;NIC&lt;/span&gt;. I&amp;#8217;ve started comparing two dumps and found rather interesting thing: only packets with segment size fuly filled to 1460 (default &lt;span class=&quot;caps&quot;&gt;TCP MSS&lt;/span&gt; in pxe_http) were not transmitted correctly. I&amp;#8217;ve changed &lt;span class=&quot;caps&quot;&gt;MSS&lt;/span&gt; to 1260 (10 hops * 20 bytes is about 200 bytes&amp;#8230;) and code started working correctly. Packets were sent with Don&amp;#8217;t fragment IP flag, so I think somewhere on the path to me router dropped them cause couldn&amp;#8217;t sent it not fragmented. May be it&amp;#8217;s just my &lt;span class=&quot;caps&quot;&gt;ISP&lt;/span&gt; side problem.&lt;/p&gt;

	&lt;p&gt;After getting code working correctly in Internet, I&amp;#8217;ve tested it on two different web servers (first uses Apache, second one &amp;#8211; nginx), both worked correctly. And to make sure code is really working, I&amp;#8217;ve managed my friend to try it from his home through &lt;span class=&quot;caps&quot;&gt;ADSL&lt;/span&gt; modem (at my home, Internet is got through &lt;span class=&quot;caps&quot;&gt;VPN&lt;/span&gt; via &lt;span class=&quot;caps&quot;&gt;ISP &lt;/span&gt;Ethernet based network, so router at my home is second computer with pppoe client). It also worked.&lt;/p&gt;

	&lt;p&gt;Last check was to test again &lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt; loader after some changes in pxe_open() function. It also worked, so finally code seems ready to be tested widely and tarball of current version of code will be sent as result of GSoC.&lt;/p&gt;

	&lt;p&gt;Finally, I&amp;#8217;ve wrote simple documentation,&amp;#160; that may be useful for setting pxe_http to work or use it &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;. Well, it&amp;#8217;s not covers every function of pxe_http code, but gives main information, needed to work with it.&lt;/p&gt;

	&lt;p&gt;Next two weeks I&amp;#8217;m planning get more information about ipv6, spend summer time and do nothing usefull at all, except fixing any simple bugs found in code. Later I&amp;#8217;ll&amp;#160; try to add ipv6 support for pxe_http and may be implement some other ideas.&lt;/p&gt;</content>
		<author>
			<name>taleks</name>
			<uri>http://blogs.freebsdish.org/taleks</uri>
		</author>
	</entry>

	<entry>
		<title>Ulf Lilleengen: Huntin&#8217; them bugs</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/"/>
		<id>http://blogs.freebsdish.org/lulf/2007/08/17/huntin-them-bugs/</id>
		<updated>2007-08-17T11:54:56+00:00</updated>
		<content type="html">&lt;p&gt;More status updates&amp;#8230; I&amp;#8217;ve been fixing many small gvinum bugs the last couple of weeks:&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt;The state of gvinum objects were changed after reloading. This meant that objects got the wrong state when gvinum was brought up.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Made gvinum always use the most recent configuration it finds when setting object states.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Make sure the newest drive is always the newest, and not the first in the drivelist, as was previously assumed.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Add &amp;#8220;growable&amp;#8221;-state to be used when a plex is ready to be grown.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Allow a plex to be rebuilt even though it&amp;#8217;s also growable.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Do not change the size of the volume until the plex is completely grown.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Add status of growing and rebuild of a plex in the list output.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Prevent rebuild to take over the I/O system increasing access-count at the start and end of the rebuild.&lt;/li&gt;&lt;br /&gt;
&lt;/p&gt;
	&lt;p&gt;Probably a couple of other fixes as well. Also, I&amp;#8217;ve updated the vinum-examples page in the handbook to reflect new features and more practical examples. I&amp;#8217;ve posted a &amp;#8220;call for testers&amp;#8221; on current@, arch@ and geom@, and have received some response from people who are willing to help me test. Thanks to them. I&amp;#8217;ve uploaded the code-sample that I&amp;#8217;ll be delivering to google here: http://folk.ntnu.no/lulf/gvinum_soc2007.tar.gz&lt;/p&gt;</content>
		<author>
			<name>lulf</name>
			<uri>http://blogs.freebsdish.org/lulf</uri>
		</author>
	</entry>

	<entry>
		<title>Ivan Voras: GEOM_VIRSTOR debugged</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/ivoras/2007/08/14/geom_virstor-debugged/"/>
		<id>http://blogs.freebsdish.org/ivoras/2007/08/14/geom_virstor-debugged/</id>
		<updated>2007-08-14T17:24:28+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m pleased to announce another release candidate for &lt;a href=&quot;http://wiki.freebsd.org/gvirstor&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GEOM&lt;/span&gt;_VIRSTOR&lt;/a&gt;, A FreeBSD kernel &lt;span class=&quot;caps&quot;&gt;GEOM&lt;/span&gt; class providing storage virtualisation facility, regardless of type of underlying devices or its usage. It is a kind of &amp;#8220;virtual memory&amp;#8221; for disks &amp;#8211; you pre-allocate address space (i.e. make a large virtual drive) and worry later about where to find physical space to back it.&lt;/p&gt;

	&lt;p&gt;This is a bug fix release &amp;#8211; a bug that can cause data corruption on large-ish virtual drives (1 TB+) was fixed.&lt;/p&gt;

	&lt;p&gt;The development snapshot can be found &lt;a href=&quot;http://ivoras.sharanet.org/stuff/gvirstor-rc4.tbz&quot;&gt;here&lt;/a&gt; &amp;#8211; everyone (or, to be precise, everyone with 7-CURRENT) is invited to test it.&lt;/p&gt;</content>
		<author>
			<name>ivoras</name>
			<uri>http://blogs.freebsdish.org/ivoras</uri>
		</author>
	</entry>

	<entry>
		<title>Ulf Lilleengen: Cleaning up</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/"/>
		<id>http://blogs.freebsdish.org/lulf/2007/08/06/finishing-up/</id>
		<updated>2007-08-06T15:40:16+00:00</updated>
		<content type="html">&lt;p&gt;The last couple of weeks I&amp;#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 &lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt;-5 plexes.&amp;#160;Unfortunately I was sick for a week and unable to work.&lt;/p&gt;

	&lt;p&gt;What remains now is to do more testing (can&amp;#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 &lt;span class=&quot;caps&quot;&gt;RELENG&lt;/span&gt;_6 and &lt;span class=&quot;caps&quot;&gt;CURRENT&lt;/span&gt;. I appreciate reports from brave users who tries it out, even if it works &lt;img src=&quot;http://blogs.freebsdish.org/lulf/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;

	&lt;p&gt;Also, I created a new perforce-branch called gvinum_cache. I&amp;#8217;ve currently implemented a read/write-cache to check if this would give much speed-up for gvinum. It&amp;#8217;s not very nice for reliability, but could be an option for those who want better performance. Anyway, I&amp;#8217;ll update more on this later.&lt;/p&gt;</content>
		<author>
			<name>lulf</name>
			<uri>http://blogs.freebsdish.org/lulf</uri>
		</author>
	</entry>

	<entry>
		<title>Roman Divacky: Epoll and linuxulator bugs fixing</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/rdivacky/2007/08/02/epoll-and-linuxulator-bugs-fixing/"/>
		<id>http://blogs.freebsdish.org/rdivacky/2007/08/02/epoll-and-linuxulator-bugs-fixing/</id>
		<updated>2007-08-02T16:44:38+00:00</updated>
		<content type="html">&lt;p&gt;I have implemented epoll() subsystem in the Linuxulator based on kqueue. This was quite simple and the resulting code is about 200 lines of code. Mark Heily sent me his inotify implementation library which works in userland. I looked at the code and its a little buggy so porting to FreeBSD will take a little time. Now I am working on fixing various Linuxulator bugs in preparation for switching 2.6 emulation on default after 7.0R is released. Today I fixed java and my next target is flash9.&lt;/p&gt;

	&lt;p&gt;Please read emulation@ mailing list and help me with testing.&lt;/p&gt;</content>
		<author>
			<name>rdivacky</name>
			<uri>http://blogs.freebsdish.org/rdivacky</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Tarasov: Boot-reboot..</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/taleks/2007/08/01/boot-reboot/"/>
		<id>http://blogs.freebsdish.org/taleks/2007/08/01/boot-reboot/</id>
		<updated>2007-08-01T11:40:59+00:00</updated>
		<content type="html">&lt;p&gt;Finally I&amp;#8217;ve booted kernel on real machine without unexpected rebooting it in process of booting.&lt;/p&gt;

	&lt;p&gt;While testing code, I&amp;#8217;ve tried smaller buffers (16, 8, 4, and 2Kbytes were used) and tests figured out, that code with 4 and 2 kbytes is able to boot kernel on real machine, bigger buffers are working on virtual machines. Keeping in mind fact that memory allocation/freeing is done most probably correctly (it&amp;#8217;s done by libstand functions, that are trusted)   it was difficult to understand why smaller usage of memory for buffers gave such strange results.&lt;/p&gt;

	&lt;p&gt;First investigation showed, that loader&amp;#8217;s heap is allocated over &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; data (in base memory higher 8d000h). That was fixed (higher bound of heap was limited to address from which &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; data starts), but hadn&amp;#8217;t solved the problem. Yeah, sad moment, I had faith that problem is in heap allocation. Next suggestion was that pxeboot is rather big binary. In fact, &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; specs recommend to make download of boot images in two steps: remote.0 and remote.1. Remote.0 placed at well-known 7c00h:0000 and must not exceed 32Kbytes (cause &amp;#8220;32K size limit provides the advantage of being able to clean up and fail gracefully&amp;#8221; (c) &lt;span class=&quot;caps&quot;&gt;PXE &lt;/span&gt;Specification).  remote.0 determines if system is has adequate resources and downloads remote.1 (in specs to in extended memory at e98000h).&amp;#160; Monolithic pxeboot is about 200K, with pxe_http above 240Kb. I don&amp;#8217;t know if 32K size is strict requirement or not, pxelinux for example is about 12Kb.&lt;/p&gt;

	&lt;p&gt;Well, &amp;#8220;NFS loader works&amp;#8221; I&amp;#8217;ve thought and then reduced binary size by removing all pxe_http testing code and code related to support filesystems such as dos. It gave me nearely same size as usual for pxeboot. So, now http loaded kernel boots on my home machine.&lt;/p&gt;

	&lt;p&gt;While working with &lt;span class=&quot;caps&quot;&gt;DHCP&lt;/span&gt; client, I&amp;#8217;ve found  that I&amp;#8217;m doing same work, that was performed in bootp() call in libstand. I was not giving much attention to it, cause my code was working, but after binary reducing thought, that it&amp;#8217;s good idea to use already available function. This function mainly depends on udpread/udpsend functions, that were earlier situated in libi386/pxe.c but commented by me while rewriting it&amp;#8217;s code a little bit (commented cause it was using pxe_call and etc, that was removed by me form this file).&lt;/p&gt;

	&lt;p&gt;It was not big deal to rewrite udpread/udpwrite to use pxe_http functions to read/send data, but for this purpose was done &amp;#8220;default socket&amp;#8221; mechanism for &lt;span class=&quot;caps&quot;&gt;UDP&lt;/span&gt;. It&amp;#8217;s done with aim not use sockets while calling udpread/udpsend, cause code, which uses them, don&amp;#8217;t know about pxe_http sockets. To be more accurate, sending of udp packets doesn&amp;#8217;t require socket, it&amp;#8217;s enough to call pxe_udp_send(), but incoming packets are coming through filters mechanism and are delivered to appropriate socket buffer. Previously, all data that was filtered out &amp;#8211; was going to trash bin, now it goes to &amp;#8220;default socket&amp;#8221;. and it&amp;#8217;s possible to read from it as usual, using pxe_udp_read() function.&lt;/p&gt;

	&lt;p&gt;So, bootp() began working good (except moment with updating of gateway/nameserver information, that I&amp;#8217;ll fix in next few days). The main problem with it was, that bootp() may work only after opening of device, cause after that &lt;span class=&quot;caps&quot;&gt;NIC MAC&lt;/span&gt; is known by code, that generates &lt;span class=&quot;caps&quot;&gt;BOOTP&lt;/span&gt; packet. Normally, pxe_dhcp_query() &amp;#8211; which is now may be wrapper for bootp() &amp;#8211; is started from pxe_core_init(), and already knows own &lt;span class=&quot;caps&quot;&gt;MAC&lt;/span&gt;. Well, I&amp;#8217;ve returned pxe_dhcp_query() to pxe_open()  in case if not own &lt;span class=&quot;caps&quot;&gt;DHCP&lt;/span&gt; client used (here was bootp() originally). And all began work correctly.&lt;/p&gt;

	&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt; code also uses udpread/udpsend functions, so it was rather logical to try &lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt; loader.  It also works.  It&amp;#8217;s started working without any doubts. so it&amp;#8217; uninteresting to tell anything about it.&lt;/p&gt;

	&lt;p&gt;This made me possible to make conclusion that compatibility with old working &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt; related code in libi386 is big enough.&lt;/p&gt;

	&lt;p&gt;So, formally main goal of project is achieved. But there is more work to do:&lt;/p&gt;

	&lt;p&gt;1.  load image of &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt; drive and mount root to it, so booting process via http will be fully performed. Now it stopson stage of mounting of root file system.&lt;/p&gt;

	&lt;p&gt;2. Understand where is problem with memory when I&amp;#8217;ve used bigger buffers with big pxeboot binary. It&amp;#8217;s rather interesting moment, cause I&amp;#8217;ve no idea what might cause rebooting of prefectly loaded kernel in case of bigger buffer size for sockets earlier.&lt;/p&gt;

	&lt;p&gt;3. Test all and update some code details (well, one of them is that root path is not used by http loader now).&lt;/p&gt;

	&lt;p&gt;4. write finally whole documentation related to project. I&amp;#8217;ve started to write it few times, but it wasn&amp;#8217;t finished yet.&lt;/p&gt;

	&lt;p&gt;5. choose notebook to buy.&lt;/p&gt;

	&lt;p&gt;These are my tasks for next weeks.&lt;/p&gt;</content>
		<author>
			<name>taleks</name>
			<uri>http://blogs.freebsdish.org/taleks</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Tarasov: Kernel loaded</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/taleks/2007/07/25/kernel-loaded/"/>
		<id>http://blogs.freebsdish.org/taleks/2007/07/25/kernel-loaded/</id>
		<updated>2007-07-25T13:55:04+00:00</updated>
		<content type="html">&lt;p&gt;httpfs now works. It uses pxe_http code to  open keep-alive connections to http-server. Also it ressurects it to life if connection is dead due server&amp;#8217;s settings (e.g. timeout or exceeded max requests per connection). Need to think how to make requests optimal. Loader uses  4K buffers at request, may be I&amp;#8217;ll add some sort of caching mechanism for httpfs to reduce count of requests to server.&lt;/p&gt;

	&lt;p&gt;So, it&amp;#8217;s possible to use common commands of &lt;span class=&quot;caps&quot;&gt;BTX&lt;/span&gt; such as &amp;#8216;more&amp;#8217;, &amp;#8216;load&amp;#8217;, &amp;#8216;help&amp;#8217;. I&amp;#8217;ve played a lot with them while testing of http code, rather boring process. But after that one problem with interrupt handling in pxe_core was located. It seems, that end of interrupt is handled not correctly, so interrupt not occurs from time to time till some unrelated top pxe_core code finishes interrupt correctly. Problem is temporarily fixed by ignoring of &lt;em&gt;&lt;/em&gt;pxe_isr_occured flag and checking of available incoming frames in pxe_core_recv_packets() despite of value of this flag. Meanwhile &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt; code was simplified by rewrtting it in pxe_tcp module, reducing code lines and function count. Testing showed it works identically to previous code, except one silly misprint, that was fixed in new variant of code.&lt;/p&gt;

	&lt;p&gt;Anyway, it&amp;#8217;s possible to load modules, kernel and etc. It&amp;#8217;s interesting that loader tries to load gzipped variants of files first, so it performs four requests to server. E.g. we need &amp;#8220;loader.rc&amp;#8221;, theese files will be requested: &amp;#8220;loader.rc.gz.split&amp;#8221;, &amp;#8220;loader.rc.gz&amp;#8221;, &amp;#8220;loader.rc.split&amp;#8221;, &amp;#8220;loader.rc&amp;#8221;. It was unexpected and exceeded limits of filters and connections tables, cause connections felt to &lt;span class=&quot;caps&quot;&gt;TIME&lt;/span&gt;_WAIT state (keep-alived connection were actively closed by client. Need to try in nearest future sending of &amp;#8220;Connection: close&amp;#8221; field in header to make passive connection closing at closing of file), no new connections were possible to establish. Well, I&amp;#8217;ve added opportunity to free connections structures in this state  for establishing of new connections. It&amp;#8217;s violates &lt;span class=&quot;caps&quot;&gt;RFC&lt;/span&gt;, but helps keep relatively small amount of structures. If &lt;span class=&quot;caps&quot;&gt;PXE&lt;/span&gt;_MAX_CONNECTIONS is set to big enough number, then &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt; code behaviour is as expected in &lt;span class=&quot;caps&quot;&gt;RFC&lt;/span&gt;.&lt;/p&gt;

	&lt;p&gt;After changing loader.rc to something very simple, my home made kernel was loaded and &amp;#8216;lsmod&amp;#8217; showed a number of modules. But &amp;#8216;boot&amp;#8217; command failed (hang or panic depending on which virtual machine and real machine were used). It was frustrating &amp;#8211; result is practically visible, but yet goal not achieved. I&amp;#8217;ve tried loading of &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;-drives, but also failed.&lt;/p&gt;

	&lt;p&gt;In bad mood of me normal loader.rc was started. The first surprise is that on VMWare machine I&amp;#8217;m see normal booting process till time of mounting of root file system (which is unknown, cause not set by environment parameters in loader and /etc/fstab is empty in Apache&amp;#8217;s DocumentRoot directory). Second surprise that another virtual machine hangs during loading of support.4th (according to Apache logs it&amp;#8217;s read not completely, about 70-80%)  and my real machine just reboots while reading same file. Rather suspicous &lt;img src=&quot;http://blogs.freebsdish.org/taleks/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;br /&gt;
So next days I&amp;#8217;ll be solving quest for finding why loading of support.4th, which have no nothing criminal in it, may cause such problems and exploring issue with lost somewhere interrupt.&lt;/p&gt;</content>
		<author>
			<name>taleks</name>
			<uri>http://blogs.freebsdish.org/taleks</uri>
		</author>
	</entry>

	<entry>
		<title>Alexey Mikhailov: status updates</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/karma/2007/07/22/status-updates/"/>
		<id>http://blogs.freebsdish.org/karma/2007/07/22/status-updates/</id>
		<updated>2007-07-22T00:47:00+00:00</updated>
		<content type="html">&lt;p&gt;For recent status updates of my project, check:&lt;/p&gt;

	&lt;p&gt;&lt;a href=&quot;http://wiki.freebsd.org/DistributedLoggingDaemon&quot;&gt;http://wiki.freebsd.org/DistributedLoggingDaemon&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>karma</name>
			<uri>http://blogs.freebsdish.org/karma</uri>
		</author>
	</entry>

	<entry>
		<title>Fredrik Lindberg: Seems mdnsd has overcome its shyness</title>
		<link rel="alternate" type="text/html" href="http://www.shapeshifter.se/2007/07/22/seems-mdnsd-has-overcome-its-shyness/"/>
		<id>http://www.shapeshifter.se/2007/07/22/seems-mdnsd-has-overcome-its-shyness/</id>
		<updated>2007-07-21T22:15:54+00:00</updated>
		<content type="html">&lt;p&gt;As it does not only talk when talked to, it starts conversations too. More technically, more or less all groundwork is done in mdnsd to allow clients (local applications) to do multicast DNS queries. &lt;a href=&quot;http://www.shapeshifter.se/2007/07/22/seems-mdnsd-has-overcome-its-shyness/#more-32&quot; class=&quot;more-link&quot;&gt;(more&amp;#8230;)&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>fli</name>
			<uri>http://www.shapeshifter.se</uri>
		</author>
	</entry>

	<entry>
		<title>Ulf Lilleengen: Growing up</title>
		<link rel="alternate" type="text/html" href="http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/"/>
		<id>http://blogs.freebsdish.org/lulf/2007/07/17/growing-up/</id>
		<updated>2007-07-17T18:08:15+00:00</updated>
		<content type="html">&lt;p&gt;Since last post I haven&amp;#8217;t really done that much do gvinum, but a few things.&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/p&gt;
	&lt;p&gt;&lt;li&gt;I added a few automated test-scripts to check if a volume behaves properly&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Go through test-plan and make sure that gvinum passes the tests.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;I&amp;#8217;ve been thinking a lot on how to best implement growing &lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt;-5 plexes.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;I&amp;#8217;ve implemented growing of &lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt;-5 plexes.&lt;/li&gt;&lt;br /&gt;
&lt;/p&gt;
	&lt;p&gt;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&amp;#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 &lt;span class=&quot;caps&quot;&gt;TODO&lt;/span&gt; of my perforce branch.  I need to test the implementation a bit now. Other than that, I&amp;#8217;ve been a bit lazy on my own work this week, and tried to help other students with reviews etc.&lt;/p&gt;</content>
		<author>
			<name>lulf</name>
			<uri>http://blogs.freebsdish.org/lulf</uri>
		</author>
	</entry>

	<entry>
		<title>Fredrik Lindberg: Look who&#8217;s talking</title>
		<link rel="alternate" type="text/html" href="http://www.shapeshifter.se/2007/07/16/look-whos-talking/"/>
		<id>http://www.shapeshifter.se/2007/07/16/look-whos-talking/</id>
		<updated>2007-07-16T10:36:32+00:00</updated>
		<content type="html">&lt;p&gt;Yep, mdnsd speaks now, actually it has been able to do that for a couple of weeks but I just got probing and announcing working as I wanted it to. &lt;a href=&quot;http://www.shapeshifter.se/2007/07/16/look-whos-talking/#more-31&quot; class=&quot;more-link&quot;&gt;(more&amp;#8230;)&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>fli</name>
			<uri>http://www.shapeshifter.se</uri>
		</author>
	</entry>

</feed>
