<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Data Matters - A blog about flash memory &#187; File system</title>
	<atom:link href="http://blog.datalight.com/tag/file-system/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.datalight.com</link>
	<description>Datalight's blog on flash memory, device data storage, data reliability and the embedded industry</description>
	<lastBuildDate>Mon, 23 Jan 2012 17:25:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Securely Delete Files on Flash Media</title>
		<link>http://blog.datalight.com/securely-delete-files-on-flash-media</link>
		<comments>http://blog.datalight.com/securely-delete-files-on-flash-media#comments</comments>
		<pubDate>Wed, 29 Jun 2011 22:13:24 +0000</pubDate>
		<dc:creator>Michele Pike</dc:creator>
				<category><![CDATA[Flash File System]]></category>
		<category><![CDATA[Reliability]]></category>
		<category><![CDATA[eMMC]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[JEDEC]]></category>
		<category><![CDATA[JEDEC security]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/?p=439</guid>
		<description><![CDATA[If you’ve noticed the numerous posts lately on the Datalight blog regarding JEDEC and eMMC, you might be wondering why we’re so excited about this particular standard. There are many features that this “smarter” memory will enable for OEMs; In this post I’ll focus on one of those features in the eMMC specification –secure delete. [...]]]></description>
			<content:encoded><![CDATA[<p>If you’ve noticed the numerous posts lately on the Datalight blog regarding <a href="http://blog.datalight.com/what-is-jedec">JEDEC</a> and <a href="http://blog.datalight.com/security-and-emmc">eMMC</a>, you might be wondering why we’re so excited about this particular standard. There are many features that this “smarter” memory will enable for OEMs; In this post I’ll focus on one of those features in the eMMC specification –secure delete.</p>
<p>Securely deleting information on flash memory is more complicated than it seems. For one thing, files are constantly being moved around to ensure even wear of the flash, resulting in multiple copies of file data on the media. Furthermore, when a file is marked for delete, it is typically not physically deleted, rather the space is only marked as available to be overwritten. Until that happens, the “deleted” data is still present and recoverable on the media. In fact, the University of California San Diego Non-volatile systems lab has produced an in depth study of file deletion on flash memory, where they found significant data still present on the media even after deleting the files. A copy of the report can be found at: <a href="http://cseweb.ucsd.edu/users/swanson/papers/Fast2011SecErase.pdf">http://cseweb.ucsd.edu/users/swanson/papers/Fast2011SecErase.pdf</a></p>
<p>In order to securely delete a file on raw flash, you must use a controller that will either track every block where the file has been stored, or will overwrite the space the file was stored in each time it is moved. The latter describes exactly the secure erase and secure trim features found in the eMMC 4.41 standard. This means that the hardware will finally be capable of securely deleting files –brilliant! There is just one problem: Who has software to support this functionality? As of this writing, there is no file system which supports the feature. While an application can make a call to the media to delete a file securely, the file system may have a backup copy stored somewhere. Fact is, the file system must support the secure delete capabilities of the hardware in order for these features to function correctly.</p>
<p>If an OEM wants to take advantage of the secure erase and secure trim features, their application will need to communicate with the eMMC driver, which may differ from part to part. As the only software company that is an active member of JEDEC, we are excited offer support for quite a few eMMC features. File system support for secure erase and secure trim will be coming later this summer!</p>
<h3 class="cta">Learn more about Datalight <a href="http://www.datalight.com/products/embedded-flash-file-systems/reliance-nitro">Embedded File Systems</a></h3>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/securely-delete-files-on-flash-media/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A File System Designed for Embedded</title>
		<link>http://blog.datalight.com/file-system-designed-for-embedded</link>
		<comments>http://blog.datalight.com/file-system-designed-for-embedded#comments</comments>
		<pubDate>Wed, 08 Jun 2011 21:28:29 +0000</pubDate>
		<dc:creator>Thom Denholm</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Reliability]]></category>
		<category><![CDATA[File system]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/?p=414</guid>
		<description><![CDATA[Instead of adapting a desktop or server file system for embedded use, it is far better to use a file system designed specifically for embedded use.]]></description>
			<content:encoded><![CDATA[<p>To protect against unexpected power loss, so common in the embedded world, file writes need to be atomic.</p>
<p>Linux file systems <a title="ext3 and ext4" href="http://www.datalight.com/welcome/ext3-ext4-alternatives">ext3 and ext4</a> were designed for server or desktop environments. Google developer Tim Bray <a href="http://android-developers.blogspot.com/2010/12/saving-data-safely.html">suggests</a> that appropriate use of fsync() can mitigate the risk of data loss, but I am sure that&#8217;s not the best solution. The use of delayed allocation means that metadata is committed but the data is not. Alternatively, both can be committed to the journal at a performance penalty. Performance is crucial in both desktops and devices, but not at the expense of data corruption.</p>
<p>This problem is readily demonstrated when updating files, an action which usually happens &#8220;in place&#8221;. This is quite common in database and other important system files. When power is lost, data can be overwritten only partially, or else metadata can be altered to point to where the data will be updated but has not been. Another alternative to liberal use of fsync() is a rename strategy, that is, write only new data, then rename and replace the old file. Rename is atomic, at least.</p>
<p>The best solution, and one which does not require applications to change the way they do writes, is to perform all data writes atomically. In addition to that, the file system should never overwrite live data and always retain a &#8220;known good&#8221; state on the media. This way caching does not have to be removed – either user data changes get to the disk fully or not at all. No partial writes or incorrect metadata, and no mount-time journal rebuilds or disk checks either.</p>
<p>Instead of adapting a desktop or server file system for embedded use, it is far better to use a file system designed specifically for embedded use.</p>
<p>View whitepaper: <a href="http://www.datalight.com/resources/achieving-breakthrough-performance-with-tree-based-file-systems-14-may-2009">Breakthrough Performance with Tree-based File Systems</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/file-system-designed-for-embedded/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About Fragmentation</title>
		<link>http://blog.datalight.com/about-fragmentation</link>
		<comments>http://blog.datalight.com/about-fragmentation#comments</comments>
		<pubDate>Wed, 26 Jan 2011 16:33:26 +0000</pubDate>
		<dc:creator>Thom Denholm</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Product Benefit]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[file system performance]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Reliance Nitro]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/?p=368</guid>
		<description><![CDATA[Do you need defrag? It mostly depends on your hardware and your use case. While defragmenting a file system can make the computer run faster, it&#8217;s not the only answer. Fragmentation is usually caused when modifying a file. Overwriting the file or making it larger means storing a fragment of the file in a new [...]]]></description>
			<content:encoded><![CDATA[<p>Do you need defrag? It mostly depends on your hardware and your use case. While defragmenting a file system can make the computer run faster, it&#8217;s not the only answer.</p>
<p>Fragmentation is usually caused when modifying a file. Overwriting the file or making it larger means storing a fragment of the file in a new place, unless the file system creates a complete new copy of the file. Databases are particularly susceptible here – they are usually large files and often updated in the middle.</p>
<p>Another way fragmentation happens is when the file system initially stores the file in pieces. This could happen if the file system is not configured to keep file blocks together, or if the media is fairly full and there are no spaces of sufficient size for the new file.</p>
<p>What about the impact of fragmentation? In the days of rotating media, a fragmented file meant extra head movement and platter rotation to read the file. With flash media, the extra overhead is just additional block reads – a far smaller cost.</p>
<p>Avoiding fragmentation if you&#8217;re using Reliance Nitro can be as simple as customizing your transaction points. Instead of transacting on a timed basis, create a new transaction point only when the entire file is on the media, at &#8220;file close&#8221;. Similar settings may be available on other file systems.</p>
<p>If your use case causes fragmentation, a valid workaround might be to reformat the media after backing up the database files. A fresh file format is fairly quick on modern hardware, and can be coupled with a bad block test as well.</p>
<h3 class="cta"><a title="Reliance Nitro" href="http://www.datalight.com/products/filesystems/reliance-nitro">Read more about Reliance Nitro</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/about-fragmentation/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reliance and Reliance Nitro</title>
		<link>http://blog.datalight.com/reliance-and-reliance-nitro</link>
		<comments>http://blog.datalight.com/reliance-and-reliance-nitro#comments</comments>
		<pubDate>Mon, 20 Jul 2009 20:26:46 +0000</pubDate>
		<dc:creator>Michele Pike</dc:creator>
				<category><![CDATA[Datalight Products]]></category>
		<category><![CDATA[Flash File System]]></category>
		<category><![CDATA[Flash Memory]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[file system performance]]></category>
		<category><![CDATA[flash file system]]></category>
		<category><![CDATA[flash memory performance]]></category>
		<category><![CDATA[reliability]]></category>
		<category><![CDATA[Reliance Nitro]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/reliance-and-reliance-nitro</guid>
		<description><![CDATA[Ever since we announced our high performance file system Reliance Nitro, we have been getting questions on how it compares to the original Reliance file system. Below is a quick-reference table noting some of the differences between the two. For a more detailed comparison (including performance benchmarks), please contact us. Attributes Reliance Reliance Nitro Recommendation [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since we announced our <a href="http://www.datalight.com/products/reliancenitro/">high performance file system</a> Reliance Nitro, we have been getting questions on how it compares to the original Reliance file system. Below is a quick-reference table noting some of the differences between the two. For a more detailed comparison (including performance benchmarks), please <a href="http://www.datalight.com/about/contact-us">contact us</a>.</p>
<table width="498" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="102"><strong>Attributes</strong></td>
<td valign="top" width="78"><strong>Reliance</strong></td>
<td valign="top" width="78"><strong>Reliance Nitro</strong></td>
<td valign="top" width="238"><strong>Recommendation</strong></td>
</tr>
<tr>
<td valign="top" width="102">High performance on large number of files  (100+)</td>
<td width="79"></td>
<td width="79"><strong>√</strong></td>
<td valign="top" width="237">If your device stores a large number of files in a single directory, Nitro will perform much faster than Reliance.</td>
</tr>
<tr>
<td valign="top" width="103">High performance on large files</td>
<td width="79"></td>
<td width="79"><strong>√</strong></td>
<td valign="top" width="236">Nitro’s extent based design allows it to perform faster on larger files. For sake of this comparison, files can be considered large if they are 10+ times the block size of the device</td>
</tr>
<tr>
<td valign="top" width="104">Frequent transaction points</td>
<td width="79"></td>
<td width="79"><strong>√</strong></td>
<td valign="top" width="236">Nitro introduces a new structure called Delta transactions which speed up the time taken to conduct transaction points. Depending on how often you conduct transactions points, Nitro can provide significant advantage</td>
</tr>
<tr>
<td valign="top" width="104">Random I/O performance most critical</td>
<td width="79"><strong>√</strong></td>
<td width="79"><strong>√</strong></td>
<td valign="top" width="236">Reliance’s block based design provides an advantage on random I/O on small files. On large files both Reliance and Nitro perform equally well on this metric</td>
</tr>
<tr>
<td width="104">Sequential I/O  performance most critical</td>
<td width="79"></td>
<td width="79"><strong>√</strong></td>
<td width="236">Nitro outperforms Reliance on sequential I/O due to its extent based design</td>
</tr>
<tr>
<td width="104">Support for Windows Mobile</td>
<td width="79"></td>
<td width="79"><strong>√</strong></td>
<td width="236">FlashFX Pro 4.0 for Windows Mobile enables a new discard interface that allows Nitro to have much faster write speeds on flash memory</td>
</tr>
<tr>
<td width="104">File-size limit</td>
<td width="79">32-bit</td>
<td width="79">64-bit</td>
<td width="236">Nitro uses 64-bit variables for file size limits allowing for very large file sizes.</td>
</tr>
<tr>
<td width="104">Read-only version</td>
<td width="79"><strong>√</strong></td>
<td width="79"></td>
<td width="236">Reliance currently provides a read-only version called Reliance Reader. Nitro currently does not provide a reader application – this is scheduled for v2</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/reliance-and-reliance-nitro/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reliance usage in a boot code update scenario</title>
		<link>http://blog.datalight.com/reliance-usage-in-a-boot-code-update-scenario</link>
		<comments>http://blog.datalight.com/reliance-usage-in-a-boot-code-update-scenario#comments</comments>
		<pubDate>Thu, 11 Sep 2008 19:30:25 +0000</pubDate>
		<dc:creator>Michele Pike</dc:creator>
				<category><![CDATA[Flash File System]]></category>
		<category><![CDATA[Flash Memory]]></category>
		<category><![CDATA[Booting]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[Operating system]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/?p=71</guid>
		<description><![CDATA[There are two possible configurations in how boot code might be stored on a device Boot code is stored in raw flash (no file system) and directly accessed from bootloader Boot code is stored on a Reliance formatted flash volume Option 1: Raw flash If the boot image is being stored in RAW flash outside [...]]]></description>
			<content:encoded><![CDATA[<p>There are two possible configurations in how boot code might be stored on a device</p>
<ol>
<li>Boot code is stored in raw flash (no <a class="zem_slink" title="File system" rel="wikipedia" href="http://en.wikipedia.org/wiki/File_system">file system</a>) and directly accessed from bootloader</li>
<li>Boot code is stored on a Reliance formatted flash volume</li>
</ol>
<p><strong>Option 1: Raw flash<br />
</strong>If the <a class="zem_slink" title="Boot image" rel="wikipedia" href="http://en.wikipedia.org/wiki/Boot_image">boot image</a> is being stored in RAW flash outside the file system, then the only way to be able to ensure that you got an update without damaging the original would be to reserve extra RAW space such that you could simultaneously have two boot images. The bootloader now needs to be able to switch between them and/or locate both of them The process of updating the boot image to a new location would include erasing the old image after updating the new, and having some sort of checksum to ensure the image was intact in case both were still there.</p>
<p>In this case, there would be no really good way to protect the update of the file to that exact same location without compromising the boot image itself. Many customers still use this way to store their boot images, but of course this means that they can’t take advantage of disabling transactions, atomically updating the boot image, and then doing a single transaction to commit all (or none) of the changes.</p>
<p><strong>Option 2: Reliance<br />
</strong>In this case, customer would not have a bootloader that checked a physical location for a boot image – they would have a bootloader that opened a file in the Reliance file system at <a class="zem_slink" title="Booting" rel="wikipedia" href="http://en.wikipedia.org/wiki/Booting">boot time</a> instead, if they were using a file system. Datalight Reliance comes with an utility called “Datalight Loader” which includes a lightweight Reliance reader. This utility integrates seamlessly in your bootloader code and allows the bootloader to mount and read Reliance partitions. Since the bootloader is capable of “reading” a Reliance disk, it doesn’t care where in the file system Reliance stores the file – it just opens the file, and loads it.</p>
<p>In this mode, while updating the boot image, the update utility disables all transactions and initiates the boot image update. Reliance never overwrites live data and hence this new boot code is written to a free-area of the flash. Once the entire boot image code is written, the bootloader calls for a manual transaction event, in which we update the metaroots to point to the new boot code area as the committed area. Old boot code area is now marked as free and can be used for future operations.</p>
<p>If power loss occurs during this replacement process, the device still boots back using the previous boot image, which was never modified</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/reliance-usage-in-a-boot-code-update-scenario/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JFFS2 &#8211; Linux Flash File System</title>
		<link>http://blog.datalight.com/jffs2-linux-flash-file-system</link>
		<comments>http://blog.datalight.com/jffs2-linux-flash-file-system#comments</comments>
		<pubDate>Thu, 19 Jun 2008 22:08:20 +0000</pubDate>
		<dc:creator>Michele Pike</dc:creator>
				<category><![CDATA[Flash File System]]></category>
		<category><![CDATA[Flash Memory]]></category>
		<category><![CDATA[Computer data storage]]></category>
		<category><![CDATA[eMMC]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[flash file system]]></category>
		<category><![CDATA[jfs2]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.datalight.com/?p=24</guid>
		<description><![CDATA[Image via Wikipedia Linux has been slowly but surely establishing itself as the predominant OS in the embedded industry. ABI research report suggested that 23% of Smartphones will be based on Linux by 2013. High-profile industry support from Android and the LiMo foundation has put the spotlight back on embedded Linux. In a previous post, [...]]]></description>
			<content:encoded><![CDATA[<div class="zemanta-img" style="margin: 1em; float: right; display: block;"><a href="http://commons.wikipedia.org/wiki/Image:DSCN0411.JPG"><img style="border: medium none; display: block;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/DSCN0411.JPG/202px-DSCN0411.JPG" alt="A USB flash drive. The chip on the left is the flash memory. The microcontroller is on the right." /></a></div>
<p class="zemanta-img-attribution">Image via <a href="http://commons.wikipedia.org/wiki/Image:DSCN0411.JPG" target="_blank">Wikipedia</a></p>
<p>Linux has been slowly but surely establishing itself as the predominant OS in the embedded industry. ABI research report suggested <a href="http://gigaom.com/2008/06/03/the-mobile-linux-war/">that 23% of Smartphones</a> will be based on Linux by 2013. High-profile industry support from Android and the LiMo foundation has put the spotlight back on embedded Linux.</p>
<p>In a <a href="http://blog.datalight.com/?p=11">previous post</a>, we talked about flash memory and the various layers of flash management. In this post, I will talk about <a class="zem_slink" title="JFFS2" rel="wikipedia" href="http://en.wikipedia.org/wiki/JFFS2">JFFS2</a>, the most popular flash <a class="zem_slink" title="File system" rel="wikipedia" href="http://en.wikipedia.org/wiki/File_system">file systems</a> available on the Linux platform</p>
<p><strong>JFFS2</strong></p>
<p>The Journaling Flash File System version 2 (JFFS2) is a log-structured file system that was originally designed in 1999. The original <a class="zem_slink" title="JFFS" rel="wikipedia" href="http://en.wikipedia.org/wiki/JFFS">JFFS</a> was developed by Axis Communications (and later enhanced by Red Hat) to provide support for NOR flash devices. The current version has been updated to include support for <a class="zem_slink" title="Flash memory" rel="wikipedia" href="http://en.wikipedia.org/wiki/Flash_memory">NAND flash</a>. JFFS2 is open-source software, distributed under the terms of GPL license.</p>
<p><strong> </strong></p>
<p><strong>JFFS2 Strengths</strong></p>
<p><strong> </strong></p>
<p>1. Portability to Development Environments: Included with the Linux kernel since version 2.4.10, JFFS2 has become a de facto standard flash file system for Linux developers. Today, it is included in most commercial Linux distributions (such as MontaVista and Wind River Linux). Because of this wide distribution and use, it has been integrated into many varying environments and is known to be relatively easy to build.</p>
<p>2. Reliability: As changes are made to the file system, a “log” is built; this log provides information about where a file and its associated metadata are located on the flash chip.<a name="_ftnref1_5511" href="#_ftn1_5511"><sup><sup>[1]</sup></sup></a> As the log is consistently maintained, it will be read back in the event of an unexpected power loss to determine the location of a missing file. Although the log structure provides a level of data reliability, this is accomplished at a cost to performance</p>
<p>3. Support for disk-wide compression: The benefit, or cost, of using compression depends on each specific use case. Compression will be useful in making efficient use of disk space when several text-only or code data (OS, etc.) files are being stored. Media files are already compressed (in *.jpg, *.mpg, or other formats), so the time used to attempt data compression is wasted. It is even possible that media files may take up more space after an unnecessary compression than originally needed. Disk usage and performance for the type and number of files to be maintained must be considered by the device designer in order to determine whether compression will yield a benefit or not</p>
<p><strong>JFFS2 Shortcomings</strong></p>
<p>1. Resource usage: <a class="zem_slink" title="Computer data storage" rel="wikipedia" href="http://en.wikipedia.org/wiki/Computer_data_storage">RAM</a> usage by JFFS2 increases in linear proportion to the number of nodes. Hence on large flash volumes, the system resources required by JFFS2 can be very significant</p>
<p>2. System performance: For devices that primarily use the file system for read operations, JFFS2 performance may be acceptable. However, for multi-functional devices whose applications perform a continuous mix of read and write operations, it is likely that the performance of a system using JFFS2 will not pass a rigorous standard. In addition to slow writes, the flash disk mount times of JFFS2 are exceptionally slow and worsen as the amount of data stored increases. Upon start-up after an unexpected power failure, JFFS2 must reconstruct the file system structure from the log. This is a costly operation that requires several seconds – more for volumes that are large or near-capacity. The device will be halted during this check operation, as any data that is stored on the disk will not be ready for use until the start-up completes</p>
<p>Informative links on JFFS2</p>
<p>1. <a href="http://sources.redhat.com/jffs2/jffs2.pdf">JFFS2 Technical paper [PDF]</a></p>
<p>2. <a href="http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations?action=AttachFile&amp;do=get&amp;target=ELC-E-JFFS2_RAM_Usage_impr.ppt">JFFS2 RAM usage</a> [ppt] – Presentation at Embedded Linux Conf 2007</p>
<p>In the next post in this series, we will look at another popular Linux flash file system – YAFFS.</p>
<hr size="1" />
<p><a name="_ftn1_5511" href="#_ftnref1_5511">[1]</a> Details on JFFS2 log structure can be found here <a href="http://sourceware.org/jffs2/jffs2-slides-transformed.pdf">http://sourceware.org/jffs2/jffs2-slides-transformed.pdf</a></p>
<p>&nbsp;</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Zemified by Zemanta" href="http://reblog.zemanta.com/zemified/11432df7-9231-4922-bcc6-a4e3d82b0aa1/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=11432df7-9231-4922-bcc6-a4e3d82b0aa1" alt="Zemanta Pixie" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.datalight.com/jffs2-linux-flash-file-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

