1. 08 Dec, 2009 1 commit
  2. 04 Dec, 2009 1 commit
    • Sebastian Andrzej Siewior's avatar
      UBI: flush wl before clearing update marker · 6afaf8a4
      Sebastian Andrzej Siewior authored
      ubiupdatevol -t does the following:
      - ubi_start_update()
        - set_update_marker()
        - for all LEBs ubi_eba_unmap_leb()
        - clear_update_marker()
        - ubi_wl_flush()
      
      ubi_wl_flush() physically erases all PEB, once it returns all PEBs are
      empty. clear_update_marker() has the update marker written after return.
      If there is a power cut between the last two functions then the UBI
      volume has no longer the "update" marker set and may have some valid
      LEBs while some of them may be gone.
      If that volume in question happens to be a UBIFS volume, then mount
      will fail with
      
      |UBIFS error (pid 1361): ubifs_read_node: bad node type (255 but expected 6)
      |UBIFS error (pid 1361): ubifs_read_node: bad node at LEB 0:0
      |Not a node, first 24 bytes:
      |00000000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      
      if there is at least one valid LEB and the wear-leveling worker managed
      to clear LEB 0.
      
      The patch waits for the wl worker to finish prior clearing the "update"
      marker on flash. The two new LEB which are scheduled for erasing after
      clear_update_marker() should not matter because they are only visible to
      UBI.
      Signed-off-by: default avatarSebastian Andrzej Siewior <sebastian@breakpoint.cc>
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: stable@kernel.org
      6afaf8a4
  3. 24 Nov, 2009 4 commits
  4. 19 Nov, 2009 9 commits
  5. 18 Nov, 2009 25 commits