1'st alpha of inode-indexing buffers now available...

Chad Page (cpage@shell1.best.com)
Mon, 7 Aug 1995 16:06:10 -0700 (PDT)


(Note : this patch works for me. YMMV, since this is dealing with
a very volatile area of the kernel. If you find a bug in here I don't,
you will probably get an 'OOPS', a panic, or something else bad.)

What I've done is add inode-based indexing to the buffer_head
structure, and an i_buffer variable to the inode structure. These allow
me to add various derivative functions (with an i prefix) which use
inode/block addressing rather than device/block addressing.

Right now, the patch works on two different areas : the minix
filesystem, and executable loading/mmaping. The latter is possible
because I've written a ibread_page function, and I've rewritten
mm/filemap.c to use it rather than going through it's own mapping
functions and eventually calling bread_page. This should speed up
repeated executable load times slightly.

A lot of work still has to be done in optimizing the filesystems
to use the new addressing. When this is done, buffer performance should
rise considerable, but the I/O performance will still have some room for
improvment...

Since linux-kernel isin't working too great as is, I'm not going
to post the patch here (it's 7K or so...). It's available at
ftp.best.com:/pub/cpage/buffer_01.gz. I'd like people to run performance
benchmarks on it (using the *minix* filesystem - ext2 hasn't been done
yet, and seems resistant to igetblk. Executable tests should also go
faster now, I hope, so test those too please!)

Enjoy the patches!

- Chad