Skip to content
  1. Sep 24, 2007
  2. Sep 21, 2007
  3. Sep 10, 2007
  4. Sep 06, 2007
    • Artem Bityutskiy's avatar
      [MTD] [NAND] nandsim: avoid deadlocking FS · 98b830d2
      Artem Bityutskiy authored
      
      
      Make nandsim use GFP_NOFS when allocating memory, because it might
      be used by a file-system (e.g. UBIFS2) which means, if we are short
      of memory, we may deadlock. Indee, UBIFS is holding a lock, writes
      to the media, reaches this place in NANDsim, kmalloc does not find
      the requested amount of RAM, calls memory shrinker, which decides
      to writeback inodes, calls FS, and it deadlocks on the lock which
      is already being held. Below is the UBIFS backtrace which
      demonstrates that:
      
      [<c03717dc>] __mutex_lock_slowpath+0xc8/0x2e6
      [<c0371a16>] mutex_lock+0x1c/0x1f
      [<f8b9d076>] reserve_space+0x3d/0xa9 [ubifs]
      [<f8b9d1bd>] make_one_reservation+0x2b/0x86 [ubifs]
      [<f8b9d3fc>] ubifs_jrn_write_block+0xda/0x12f [ubifs]
      [<f8b9ff3a>] ubifs_writepage+0x11d/0x1ec [ubifs]
      [<c015d6ab>] shrink_inactive_list+0x7fa/0x969
      [<c015d8c8>] shrink_zone+0xae/0x10c
      [<c015e3b4>] try_to_free_pages+0x159/0x251
      [<c015980a>] __alloc_pages+0x125/0x2f0
      [<c016ff6a>] cache_alloc_refill+0x380/0x6ba
      [<c01703f3>] __kmalloc+0x14f/0x157
      [<f885722a>] do_state_action+0xab7/0xc74 [nandsim]
      [<f885760c>] switch_state+0x225/0x402 [nandsim]
      [<f8857e7e>] ns_hwcontrol+0x3e2/0x620 [nandsim]
      [<f8862f53>] nand_command+0x2e/0x1a5 [nand]
      [<f8861ad8>] nand_write_page+0x4a/0x9a [nand]
      [<f88617b4>] nand_do_write_ops+0x1cf/0x343 [nand]
      [<f8861a70>] nand_write+0x88/0xa6 [nand]
      [<f8850b0e>] part_write+0x72/0x8b [mtd]
      [<f88e19c5>] ubi_io_write+0x189/0x29c [ubi]
      [<f88dfb98>] ubi_eba_write_leb+0xb6/0x699 [ubi]
      [<f88def93>] ubi_leb_write+0xe4/0xe9 [ubi]
      [<f8ba3b82>] ubifs_wbuf_write_nolock+0x333/0x4c9 [ubifs]
      [<f8b9d28c>] write_node+0x74/0x8e [ubifs]
      [<f8b9d422>] ubifs_jrn_write_block+0x100/0x12f [ubifs]
      [<f8b9ff3a>] ubifs_writepage+0x11d/0x1ec [ubifs]
      [<c0159e5b>] __writepage+0xb/0x26
      [<c015a318>] write_cache_pages+0x203/0x2d9
      [<c015a411>] generic_writepages+0x23/0x2d
      [<c015a452>] do_writepages+0x37/0x39
      [<c018e24a>] __writeback_single_inode+0x96/0x399
      [<c018e903>] sync_sb_inodes+0x1a3/0x274
      [<c018ebf3>] writeback_inodes+0xa6/0xd8
      [<c015a9dd>] background_writeout+0x86/0x9e
      [<c015ae9c>] pdflush+0xfb/0x1b6
      [<c01387d7>] kthread+0x37/0x59
      [<c0104dc3>] kernel_thread_helper+0x7/0x14
      
      The deadlock is funny because it starts in pdflush/writeback,
      and comes back to writeback, then deadlocks. It seems we should look
      carefully for other places in UBI and MTD and use GFP_NOFS instead
      of GFP_KERNEL.
      
      Caught-by: default avatarAdrian Hunter <ext-adrian.hunter@nokia.com>
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      98b830d2
    • David Woodhouse's avatar
      [MTD] Fix CFI build error when no map width or interleave supported · 241651d0
      David Woodhouse authored
      
      
      When building NOR flash support, you have compile-time options for the
      bus width and the number of individual chips which are interleaved
      together onto that bus. The code to deal with arbitrary geometry is a
      bit convoluted, and people want to just configure it for the specific
      hardware they have, to avoid the runtime overhead.
      
      Selecting _none_ of the available options doesn't make any sense. You
      should have at least one. This makes it build though, since people
      persist in trying.
      
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      241651d0
    • Kyungmin Park's avatar
      [MTD] [OneNAND] main read/write ops support for yaffs2 · d15057b7
      Kyungmin Park authored
      
      
      Now we can use yaffs2 on OneNAND
      
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      d15057b7
  5. Aug 30, 2007
  6. Aug 23, 2007