On 02/08/2012 08:40 PM, Marcin Baczyński wrote:
W dniu 8 stycznia 2012 14:53 użytkownik Edward Shishkin
On 01/05/2012 08:33 PM, Marcin Baczyński wrote:
2012/1/5 Edward Shishkin<edward.shishkin@xxxxxxxxx>:
On 01/05/2012 11:51 AM, doiggl@xxxxxxxxxxxxxxxxxx wrote:
- Are there any plans for a reiser4 patch for Linux kernel 3.2/3.1/3.0
Maybe for 3.2, but not sure..
fs-writeback has been changed a lot and I don't have a time to adjust
reiser4 to every stupid VFS change. Anybody care to? I'll provide the
Well, if you have patience to provide the hints for somebody with little
kernel experience and who is just learning how the internals of VFS
work than I think I can do it :]
Ok, I think that adjusting reiser4 to 3.2 would be a good start.
Unlike other file systems reiser4's ->writepages() address space
operation doesn't actually write pages to disk. Instead
reiser4_writepages() puts them into a transaction (actually it
takes place for so-called "anonymous" pages, dirtied via mmap).
So with every portion of writeback-ed inodes we also need in addition
to call reiser4_writeout().
Such slight inconsistency with VFS semantic was fixed via introducing
a new super operation ->writeback_inodes(), so that
reiser4_writeback_inodes() makes sure that everything is written
properly (see patches 0-7 for details):
The following 6 patches adjusts reiser4 to further changes in
And now (in 3.1) fs-writeback.c got changed again. Specifically,
semantic of writeback_sb_inodes(), the "implicit" ->writeback_inodes()
super operation, has been changed: now it writes not necessarily all
inodes of a superblock. As a result It'll break reiser4_sync_fs() and
reiser4's entd worker semantic, which require _all_ inodes of reiser4
superblock to be writeback-ed.
So I guess we need a version of writeback_sb_inodes(), which writes
(optionally) _all_ inodes of a superblock.
Note, that fs-writeback is a single pain in the ass: in other bits
reiser4 is perfectly coherent with VFS.
Ok, so attached is my attempt to port the 2.6.39-1 path to the 3.2 kernel.
I'll take a look for details a bit later..
I'm not sure if I got the writeback parts right, so please take a closer look
at them and tell me if I missed or misunderstood something.
The code is probably closer to ugly than to pretty around converting
struct wb_writeback_work to writeback_control and back again right now.
I'll clean this up if that code does what it should.
Another thing I don't know what to do with are the new start and end
arguments to reiser4_sync_common. Currently they are ignored, which
I think results in always syncing everything.
You are right: we can not fsync specified range, at least in the current
The best we can do is figure out what atom contains specified page
and commit it (that is exactly what the entd worker tries to do).
With this patch, Reiser4 compiles as a module or builtin, and is able to
do some simple operations on a filesystem. I tried copying some rather
large directories to and on the filesystem, but that's pretty much all the
testing I have done, so if the kconfig option was marked as 'experimental',
it probably should be 'highly experimental' by now :)
To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html