Welcome to the Reiser4 Wiki, the Wiki for users and developers of the ReiserFS and Reiser4 filesystems.

For now, most of the documentation is just a snapshot of the old Namesys site (archive.org, 2007-09-29).

There was also a Reiser4 Wiki (archive.org, 2007-07-06) once on pub.namesys.com.

TODO

From Reiser4 FS Wiki
(Difference between revisions)
Jump to: navigation, search
(Containers added)
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
When [[Namesys]] was still in place, there was a [http://pub.namesys.com/Reiser4/ToDo TODO list] to work on to get [[Reiser4]] into mainline. This URL is no more, but back in 08/2008, Andrew and Edward put together an [http://marc.info/?l=reiserfs-devel&m=121789281206672&w=2 updated Reiser4 TODO list]:
+
When [http://en.wikipedia.org/wiki/Namesys Namesys] was still in place, there was a [http://web.archive.org/web/*/http://pub.namesys.com/Reiser4/ToDo TODO list] (archive.org) to work on to get [[Reiser4]] into mainline. This URL is no more and a lot of changes have been made to Reiser4, the most current TODO list we have is from April 2009 and there're still enough tasks left to be done:
  
<pre>
+
* [http://marc.info/?l=reiserfs-devel&m=124069989217533&w=2 updated TODO list from 2009-04-25]
List:       reiserfs-devel
+
* [http://www.spinics.net/lists/reiserfs-devel/msg01028.html updated TODO list from 2008-08-05]
Subject:    Todo for inclusion (updated 05 Aug 2008)
+
* [[TODO/2007-11-25|original TODO list from 2007-11-25]]
From:       Edward Shishkin <edward.shishkin () gmail ! com>
+
* Storage [[Containers]]
Date:      2008-08-04 23:35:32
+
Message-ID: 48979244.3040903 () gmail ! com
+
[Download message RAW]
+
  
Todo for inclusion (updated 05 Aug 2008)
+
That being said, [http://www.nabble.com/reiser4-inclusion--p23116865.html Reiser4 inclusion] seems to be in sight, rumor has it that another attempt will be made [http://marc.info/?l=reiserfs-devel&m=124904274311847&w=2 in late 2010] or [http://www.spinics.net/lists/reiserfs-devel/msg02496.html early 2011].
 
+
 
+
The updated todo-list initially composed by Akpm is attached.
+
It makes sense to try to address the following items
+
(complexity is increased):
+
 
+
#10,11: Cleanups.
+
 
+
#3 There is a pending patch to review/merge:
+
http://marc.info/?l=reiserfs-devel&m=119316601418489&w=2
+
 
+
#9: I don't see any leaked jref there. Perhaps we need to rewrite this
+
portion of code to make it more clear.
+
 
+
#14 needs to be addressed.
+
 
+
["todo_for_inclusion_cached" (text/plain)]
+
 
+
Tasks are needed to done for getting reiser4 code into the kernel as found by AKPM
+
in 2.6.18-rc2-mm1 (# means that an issue is done)
+
 
+
1. running igrab() in the writepage() path is really going to hammer inode_lock.
+
  Something else will need to be done here.
+
 
+
2. The preferred way of solving the above would be to mark the page as
+
  PageWriteback() with set_page_writeback() prior to unlocking it. That'll pin
+
  the page and the inode. It does require that the page actually get written later on.
+
  If we cannot do that then more thought is needed.
+
 
+
3. If poss, use wake_up_process() rather than wake_up(). That'll save some locking.
+
 
+
4. Running iput() in entd() is a bit surprising. iirc there are various ways in which
+
  this can recur into the filesystem, perform I/O, etc. I guess it works.. But again,
+
  it will hammer inode_lock.
+
 
+
5. the writeout logic in entd_flush() is interesting (as in "holy cow"). It's very
+
  central and really needs some good comments describing what's going on in there -
+
  what problems are being solved, which decisions were taken and why, etc. The big
+
  comment in page_cache.c is useful. Please maintain it well. Boy, it has some old
+
  stuff in it.
+
 
+
6. reiser4_wait_page_writeback() needs commenting.
+
 
+
7. reading the comment in txnmgr.c regarding MAP_SHARED pages: a number of things
+
  have changed since then. We have page-becoming-writeable notifications and probably
+
  soon we'll always take a pagefault when a MAP_SHARED page transitions from pte-clean
+
  to pte-dirty (although I wouldn't recommend that a filesystem rely upon the latter
+
  for a while yet).
+
 
+
8. page_cache.c: yes, mpage_end_io_write() and mpage_end_io_read() are pretty generic
+
  - we might as well export them.
+
 
+
9. truncate_jnodes_range() looks wrong to me. When we populate gang[], there can be any
+
  number of NULL entries placed in it. But the loop which iterates across the
+
  now-populated gang[] will bale out when it its the _first_ NULL entry. Any following
+
  entries will have a leaked jref() against them.
+
 
+
10. Waaaaaaaaaaaaaaay too many typedefs.
+
 
+
11. There are many coding-style nits. One I will mention is very large number of unneeded braces:
+
          * if (foo) {
+
                o bar();
+
            }
+
      it'd be nice to fix these up sometime. Note: Easy to find and repair with checkpatch.pl
+
script found at http://www.kernel.org/pub/linux/kernel/people/apw/checkpatch/
+
 
+
12. General comment: the lack of support for extended attributes, access control lists and
+
    direct-io is a big problem and it's getting bigger. I don't see how a vendor could
+
    support reiser4 without these features and permanent lack of vendor support will hurt.
+
    What's the plan here?
+
 
+
13. (from CH) Another issue is the lack of support for blocksize < pagesize. This prevents it
+
    from being used across architectures. Even worse when I tried the last time it didn't allow
+
    me to create a 64k blocksize filesystem that I could actually test on ppc64.  \
+
 
+
14. set_page_dirty_internal() pokes around in VFS internals. Use set_page_dirty_no_buffers()
+
    or create a new library function in mm/page-writeback.c. In particular, it gets the
+
    radix-tree dirty tagging out of sync.
+
 
+
15. #wbq.sem should be using a completion for the "wait until entd finishes", not a semaphore.
+
    Because there's a teeny theoretical race when using semaphores this way which completions
+
    were designed to avoid. (The waker can still be playing with the semaphore when it has
+
    gone out of scope on the wakee's stack).
+
 
+
16. #write_page_by_ent(): the "spin until entd thread" thing is gross. This function is really
+
    lock-intensive.
+
 
+
17. #entd_flush(): bug:
+
      rq->wbc->range_start = rq->page->index << PAGE_CACHE_SHIFT;
+
    this can overflow on 32-bit. Need to cast rq->page->index to loff_t.
+
 
+
18. #writeout() is a poor name for a global function. Even things like "txn_restart" are a bit
+
    generic-sounding. Low-risk, but the kernel's getting bigger... If it were mine, I'd prefix
+
    all these symbols with "r4_". prepare_to_sleep(), page_io(), drop_page(), statfs_type(),
+
    pre_commit_hook(), etc, etc, etc, etc. Much namespace pollution.
+
 
+
19. #invalidate_list() is a poorly-chosen global identifier. We already have an invalidate_list()
+
    in fs/inode.c, too. Please audit all of reiser4's global identifiers (use nm *.o) for
+
    suitable naming choices.
+
 
+
20. #semaphores are deprecated. Please switch to mutexes and/or completions where appropriate
+
    and possible.
+
 
+
21. #drop_page() is a worry. Why _does_ reiser4 need to remove pages from pagecache? That
+
    isn't a filesystem function. drop_page() appears to leave the no-longer-present page tagged
+
    as dirty in the radix-tree.
+
 
+
22. #reiser4_invalidate_pages() is a mix of reiser4 things and of things-which-the-vfs-is-supposed-to-do.
+
    It is uncommented and I am unable to work out why it was necessary to do this, and hence what we
+
    can do about it.
+
 
+
23. #reiser4_readpages() shouldn't need to clean up the remaining pages on *pages. read_cache_pages()
+
    does that now.
+
 
+
24. #<wonders what formatted and unformatted nodes are> A brief glossary might help.
+
 
+
25. #REISER4_ERROR_CODE_BASE actually overlaps real errnos (see include/linux/errno.h). Suggest that
+
    it be changed to 1000000 or something.
+
 
+
26. #blocknr_set_add() modifies a list_head without any apparent locking. Certainly without any
+
    _documented_ locking... Ditto blocknr_set_destroy(). I'm sure there's locking, but it's harder than
+
    it should be to work out what it is. Given that proper locking is in place, the filesystem seems to
+
    use list_*_careful() a lot more than is necessary?
+
 
+
27. #It would be clearer to remove `struct blocknr_set' and just use list_head.
+
 
+
Last update: 02/06/2007
+
Reiser4/ToDo (last edited 2007-11-25 21:57:14 by M9132)
+
</pre>
+
 
+
----
+
[http://www.nabble.com/reiser4-inclusion--p23116865.html Reiser4 inclusion] seems to be in sight, rumor has it that another attempt will be made later this year.
+
  
  
 
[[category:Reiser4]]
 
[[category:Reiser4]]

Revision as of 21:55, 25 August 2016

When Namesys was still in place, there was a TODO list (archive.org) to work on to get Reiser4 into mainline. This URL is no more and a lot of changes have been made to Reiser4, the most current TODO list we have is from April 2009 and there're still enough tasks left to be done:

That being said, Reiser4 inclusion seems to be in sight, rumor has it that another attempt will be made in late 2010 or early 2011.

Personal tools