lit review

well, i’m working on it.

bloody thing. all this other stuff we have to do instead of the project. It really does annoy me. I’d love to be able to get rid of coursework, assignments and these ‘intermediate’ things we have to do (which reminds me, i’ve got a heap of stuff to catch up on still) and just get on with the research. i.e. stuff that actually interests me/i care about.

i’m getting there on it – trying to work out what actually to talk about, in what order and all that. Not that we really get any help from this “subject” on these things. hmmm…..

a programmers website

I’ve been told this site looks like a programmers website. Well, I guess it is true. I’m attempting to be stardards compliant around the place, I keep my site in CVS, I rsync it across (’cause I do blog entries via a web interface).

I’ve yet to add any proper photos section to it (need some decent script to downsample my images)

There are more patches than pictures.

new “stew’s kernel”

http://www.flamingspork.com/linux/kernel/debs/

Debs for 2.4.21-rc7-ac1-stew1 are up. Basically a bit of a test release this – trying to see how pany people actually like compete, nice, remotely optimized builds of the kernel in an easy to swallow .deb package. That and I want an easy package for myself to carry around and give to people :)

I’ll probably have more of my own patches into the next revision… actually.. i should really port the generic-x86 one over.

I’ve also got http://www.flamingspork.com/linux/kernel/stew-patches/ set up (or it will be when i finally rsync the site back up again) where i’ll dump any patches i have or am currently working on. I might reorganize that directory though – maby split up into v2.4/ and v2.5/.

One day soon I swear I’m going to go through the CONFIG options and replace half the descriptions with something better….. hmmm….

finally! fixed it!

From: Stewart Smith 
Date: Wed Jun 4, 2003  3:56:09  PM Australia/Melbourne
To: Linus Torvalds 
Cc: linux-kernel@vger.kernel.org, David Woodhouse , Stewart Smith 
Subject: [PATCH] fixed: CRC32=y && 8193TOO=m unresolved symbols

Linus,
please apply – this fixes unresolved symbols when CONFIG_CRC32=y and CONFIG_8139TOO=m (it also appeared on some other ethernet device drivers). I think this is the right way to fix this problem. It at least now builds, links and boots (and hey, even my ethernet works so it can’t all be bad :)

patches cleanly against 2.5.70 and 2.5.70-bk8

--- linux-2.5.70-orig/include/linux/crc32.h	2003-05-05 09:53:08.000000000 +1000
+++ linux-2.5.70-stew3/include/linux/crc32.h	2003-06-04 15:27:34.000000000 +1000
@@ -6,6 +6,7 @@
 #define _LINUX_CRC32_H

 #include 
+#include 

 extern u32  crc32_le(u32 crc, unsigned char const *p, size_t len);
 extern u32  crc32_be(u32 crc, unsigned char const *p, size_t len);
@@ -21,7 +22,16 @@
  * is in bit nr 0], thus it must be reversed before use. Except for
  * nics that bit swap the result internally...
  */
-#define ether_crc(length, data)    bitreverse(crc32_le(~0, data, length))
-#define ether_crc_le(length, data) crc32_le(~0, data, length)
+static inline u32 ether_crc(size_t length, unsigned char const *data)
+{
+  return bitreverse(crc32_le(~0, data, length));
+}
+EXPORT_SYMBOL(ether_crc);
+
+static inline u32 ether_crc_le(size_t length, unsigned char const *data)
+{
+  return crc32_le(~0, data, length);
+}
+EXPORT_SYMBOL(ether_crc_le);

 #endif /* _LINUX_CRC32_H */
--- linux-2.5.70-orig/kernel/ksyms.c	2003-06-02 23:28:32.000000000 +1000
+++ linux-2.5.70-stew3/kernel/ksyms.c	2003-06-04 15:11:37.000000000 +1000
@@ -58,6 +58,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 

 #if defined(CONFIG_PROC_FS)

meeting this weekend

Well, we’re heading towards our (second) face2face committee meeting. The first was at Linux.Conf.Au 2003 (just after we were elected).

We’re making progress and are in good spirits. Both privately and publicly we’re happy at where we are. True, we could be further, but considering our collective schedules and the fact that this is volunteer work, it’s pretty cool.

We’ve decided to take the sponsorship proposal by Kim for LinMagAU to the next level. I don’t forsee anything being rejected. This is a pretty cool project that’s nice and community oriented. Let’s face it, community is a HUGE part of open source and a part we all just love.

Information Security Drinking game

Finish your drink when the lecturer says:
– “15 year old Canadian”
– “Mafia Boy”
– “Microsoft”
– anything about a 1×1 image

Take a drink when:
– There is a spelling mistake in the notes
– When you can read one of the words written on the board
– any mention of “doubleclick.com” is made

new ipods

well, there’s new ipods out. i still want one, but haven’t yet justified spending a few hundred (read MANY hundred) dollars on what is a music player. A portable cool one at that, but it is just a beefier version of my current mp3 player…

if the ipod had a recording capability (that was properly in there, not a seemingly hidden feature as in the new ones) then i may be more inclined to get one – recording lectures/talks etc would be really cool then…. although, i could just do that with my laptop now…. urgh.

although bootlegging with an ipod would be rather cool.

tazo (yoyo the next generation)

okay, so the $HOSTNAME-ng tag is getting a bit dated, it seems like it’s the monash favourite, so tazo (the “work-in-progress” name for the new yoyo) is up and I’m helping to get it up and running.

I seem to have been the guy doing most of the stuff so far, the /root/CHANGED file is mostly me. I’ve started to bitch in it. Bitch about FreeBSD that is.

The ports system is cool, when it works. and when you don’t have stupid proxy authentication to contend with. oh, and an incomplete mirror.aarnet.edu.au

i think i’m doing things the right way, well – the way the handbook tells me and using portupgrade \*

oh, installing PHP4 has segfaulted. that’s fun. NOT!

XFS and other cool things

Been re-reading a lot of the XFS papers that are on the SGI website (http://oss.sgi.com/projects/xfs/) and thinking more about what I want out of an object store. There are a lot of similar design goals (I think) yet some very different ways of implementing things.

Having a large B+Tree full of every object could be quite nice, kinda like inodes on conventional UNIX filesystems. On the object-store layer, we’d be able to store small objects inside the inodes. Above this, the namespace layer could find out if we can pack something into an inode, and if so, optimize for that (e.g. linear list of files for directories under 1k).

The idea of having a very layered system is increasingly appealing to me.
This means we could have some very nice optimizations for some applications. Some systems would only ever care about the object-store itself (a squid like caching system for example) and others could care a lot about a namespace system (or even be one). An example of the latter could be a database.

Expandability for the future is a given, it has to be. 64bits seems like a lot now, but no doubt somebody will be pushing it in 10 years or so.

Scholarship!

Yesterday, being a Tuesday in Semester 1 for me, is a hell of a day. Long. Really long. Start at 10am. Finish about 9pm.

But, got home and opened the mail, one from monash. This time, not asking for money.

I’ve been awarded an Honours Scholarship for 2003!

I didn’t apply or anything, so I assume they have some other process:

“our school awards these scholarships to encourage the best and brightest students to stay on for additional studies in the Honours degree. We beleive that you will greatly benefit from this financial support to improve your knowledge of state-of-the-art developments in CS and IT”.

funky.

variety in allocation block sizes?

some studies have shown that for multimedia applications, a larger block size improves throughput (e.g. 256kb blocks). For large media files, the waste of an average 128kb per file is insignificant (over several megabytes to many hundred mb or indeed GB). But, for smaller files (typically occupied by configuration files or small system binaries) a smaller block size saves more space (4k block for 100byte file).

ReiserFS goes for something slightly different allowing several files to share a single block. I am unsure if the extra effort involved in implementing this is worth it, or the slower access times that reiser reports for allowing this.

Maybe different allocation groups could have different block sizes? maybe there could be some kind of block-size migration system? or would the overhead not be worth it? Could it be one of those “maintenance” tasks that you run every month/year? How often does the average usage of a disk change that we’d need something like this?

block allocation

B+Trees sorted by size and location (a-la XFS) provides:
– ability to allocate large/small objects efficiently (size)
– ability to allocate blocks near existing objects (e.g. for object expansion) by using the location B+Tree

B+Trees are good, therefor use them.

Split up into allocation groups (a-la XFS and BFS). Allows more parallel operation as different threads can work on different allocation groups (during updating).

Idea for fine grained B+Tree locking:
– each node gets an ID (which should be pretty unique… but not essential to correct operation).
– when process needs to update node, places a lock on it’s ID
– when a process accesses a node, before reading, it checks to see if a lock has been placed on that ID. IF so, we spin, waiting for the lock to be released
– when a process has finished updating a node, it releases the lock on it’s ID.
– the process waiting to read it will stop spinning and be able to read the new copy.

IF IDs overlap, there is no problem, we’ll just be spinning when a different node is being updated.

However, if we are updating a tree of nodes, then some careful locking wil have to be employed, from the BOTTOM UP! that is, update from the bottom up, locking each individual one as we go as if we only lock the root of the tree being updated, another process could have already passed it and screw us up royally.

should be doing assignments

Yes, I should be doing all these uni assignments I’ve got. But seriously, fuck the coursework. I much prefer the project. Solving a tricky problem with some research potential. Now *that’s* fun!

What’s more, there’s not only the opportunity to work on an exciting OS (Linux) but also for something that’s even newer and weirder (Walnut). Although there’s no way in hell I’m touching Walnut code for a while yet. Not until it’s rewritten remotely sanely.