1. 01 May, 2008 2 commits
  2. 23 Apr, 2008 1 commit
  3. 22 Apr, 2008 1 commit
  4. 03 Feb, 2008 1 commit
  5. 28 Nov, 2007 1 commit
  6. 21 Nov, 2007 1 commit
  7. 23 Sep, 2007 1 commit
  8. 02 Aug, 2007 2 commits
  9. 10 Jul, 2007 1 commit
  10. 05 Jul, 2007 1 commit
  11. 04 Jul, 2007 1 commit
  12. 03 Jul, 2007 1 commit
  13. 29 Jun, 2007 1 commit
  14. 01 Jun, 2007 2 commits
  15. 07 May, 2007 2 commits
  16. 06 May, 2007 1 commit
    • David Woodhouse's avatar
      [JFFS2] Remove broken insert_point optimisation in jffs2_add_tn_to_tree() · 96dd8d25
      David Woodhouse authored
      
      The original code would remember, during the first pass over the tree,
      a suitable place to start the insertion from when we eventually come
      to add a new node.
      
      The optimisation was broken, and we sometimes ended up inserting a new
      node in the wrong place because we started the insertion from the wrong
      point.
      
      Just ditch the optimisation and start the insertion from the root of the
      tree, for now. I'll try it again when I'm feeling cleverer.
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      96dd8d25
  17. 05 May, 2007 1 commit
  18. 25 Apr, 2007 2 commits
  19. 24 Apr, 2007 2 commits
    • Joakim Tjernlund's avatar
      [JFFS2] Better fix for all-zero node headers · 0dec4c8b
      Joakim Tjernlund authored
      
      No need to check for all-zero header since the header cannot
      be zero due to other checks.
      
      Replace the all-zero header check in readinode.c with a
      check for the magic word.
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      0dec4c8b
    • David Woodhouse's avatar
      [JFFS2] Improve read_inode memory usage, v2. · df8e96f3
      David Woodhouse authored
      
      We originally used to read every node and allocate a jffs2_tmp_dnode_info
      structure for each, before processing them in (reverse) version order
      and discarding the ones which are obsoleted by later nodes.
      
      With huge logfiles, this behaviour caused memory problems. For example, a
      file involved in OLPC trac #1292 has 1822391 nodes, and would cause the XO
      machine to run out of memory during the first stage of read_inode().
      
      Instead of just inserting nodes into a tree in version order as we find
      them, we now put them into a tree in order of their offset within the
      file, which allows us to immediately discard nodes which are completely
      obsoleted.
      
      We don't use a full tree with 'fragments' pointing to the real data
      structure, as we do in the normal fragtree. We sort only on the start
      address, and add an 'overlapped' flag to the tmp_dnode_info to indicate
      that the node in question is (partially) overlapped by another.
      
      When the scan is complete, we start at the end of the file, adding each
      node to a real fragtree as before. Where the node is non-overlapped, we
      just add it (it doesn't matter that it's not the latest version; there is
      no overlap). When the node at the end of the tree _is_ overlapped, we sort
      it and all its overlapping nodes into version order and then add them to
      the fragtree in that order.
      
      This 'early discard' reduces the peak allocation of tmp_dnode_info
      structures from 1.8M to a mere 62872 (3.5%) in the degenerate case
      referenced above.
      
      This version of the patch also correctly rememembers the highest node
      version# seen for an inode when it's scanned.
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      df8e96f3
  20. 17 Apr, 2007 1 commit
    • Artem Bityutskiy's avatar
      [JFFS2] fix buffer sise calculations in jffs2_get_inode_nodes() · 10731f83
      Artem Bityutskiy authored
      
      In read inode we have an optimization which prevents one
      min. I/O unit (e.g. NAND page) to be read more then once.
      
      Namely, at the beginning we do not know which node type we read,
      so we read so we assume we read the directory entry, because it
      has the smallest node header. When we read it, we read up to the
      next min. I/O unit, just because if later we'll need to read more,
      we already have this data.
      
      If it turns out to be that the node is not directory entry, and
      we need more data, and we did not read it because it sits in the
      next min. I/O unit, we read the whole next (or several next)
      min. I/O unit(s). And if it happens to be that we read a data node,
      and we've read part of its data, we calculate partial CRC.
      So if later we need to check data CRC, we'll only read the rest
      of the data from further min. I/O units and continue CRC checking.
      
      This code was a bit messy and buggy. The bug was that it assumed
      relatively large min. I/O unit, so that the largest node header
      could overlap only one min. I/O unit boundary.
      
      This parch clean-ups the code a bit and fixes this bug.
      The patch was not tested on flash with small min. I/O unit, like
      NOR-ECC, nut it was tested on NAND with 512 bytes NAND page, so
      it at least does not break NAND. It was also tested with mtdram
      so it should not break NOR.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      10731f83
  21. 09 Mar, 2007 1 commit
  22. 10 Dec, 2006 1 commit
  23. 02 Jul, 2006 1 commit
  24. 27 Jun, 2006 1 commit
  25. 18 Jun, 2006 1 commit
  26. 17 Jun, 2006 1 commit
  27. 13 May, 2006 2 commits
    • KaiGai Kohei's avatar
      [JFFS2][XATTR] Remove 'struct list_head ilist' from jffs2_inode_cache. · 8f2b6f49
      KaiGai Kohei authored
      
      This patch can reduce 4-byte of memory usage per inode_cache.
      
      [4/10] jffs2-xattr-v5.1-04-remove_ilist_from_ic.patch
      Signed-off-by: default avatarKaiGai Kohei <kaigai@ak.jp.nec.com>
      8f2b6f49
    • KaiGai Kohei's avatar
      [JFFS2][XATTR] XATTR support on JFFS2 (version. 5) · aa98d7cf
      KaiGai Kohei authored
      
      This attached patches provide xattr support including POSIX-ACL and
      SELinux support on JFFS2 (version.5).
      
      There are some significant differences from previous version posted
      at last December.
      The biggest change is addition of EBS(Erase Block Summary) support.
      Currently, both kernel and usermode utility (sumtool) can recognize
      xattr nodes which have JFFS2_NODETYPE_XATTR/_XREF nodetype.
      
      In addition, some bugs are fixed.
      - A potential race condition was fixed.
      - Unexpected fail when updating a xattr by same name/value pair was fixed.
      - A bug when removing xattr name/value pair was fixed.
      
      The fundamental structures (such as using two new nodetypes and exclusion
      mechanism by rwsem) are unchanged. But most of implementation were reviewed
      and updated if necessary.
      Espacially, we had to change several internal implementations related to
      load_xattr_datum() to avoid a potential race condition.
      
      [1/2] xattr_on_jffs2.kernel.version-5.patch
      [2/2] xattr_on_jffs2.utils.version-5.patch
      Signed-off-by: default avatarKaiGai Kohei <kaigai@ak.jp.nec.com>
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      aa98d7cf
  28. 21 Apr, 2006 1 commit
  29. 11 Apr, 2006 1 commit
  30. 09 Mar, 2006 1 commit
  31. 07 Nov, 2005 2 commits
  32. 06 Nov, 2005 1 commit