Skip to content
Snippets Groups Projects
  1. Aug 14, 2009
    • Tejun Heo's avatar
      percpu: generalize first chunk allocator selection · f58dc01b
      Tejun Heo authored
      
      Now that all first chunk allocators are in mm/percpu.c, it makes sense
      to make generalize percpu_alloc kernel parameter.  Define PCPU_FC_*
      and set pcpu_chosen_fc using early_param() in mm/percpu.c.  Arch code
      can use the set value to determine which first chunk allocator to use.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      f58dc01b
    • Tejun Heo's avatar
      percpu: build first chunk allocators selectively · 08fc4580
      Tejun Heo authored
      
      There's no need to build unused first chunk allocators in.  Define
      CONFIG_NEED_PER_CPU_*_FIRST_CHUNK and let archs enable them
      selectively.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      08fc4580
    • Tejun Heo's avatar
      percpu: rename 4k first chunk allocator to page · 00ae4064
      Tejun Heo authored
      
      Page size isn't always 4k depending on arch and configuration.  Rename
      4k first chunk allocator to page.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: David Howells <dhowells@redhat.com>
      00ae4064
    • Tejun Heo's avatar
      percpu: improve boot messages · 004018e2
      Tejun Heo authored
      
      Improve percpu boot messages such that they're uniform and contain
      more information.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      004018e2
    • Tejun Heo's avatar
      percpu: fix pcpu_reclaim() locking · 971f3918
      Tejun Heo authored
      
      pcpu_reclaim() calls pcpu_depopulate_chunk() which makes use of pages
      array and bitmap returned by pcpu_get_pages_and_bitmap() and thus
      should be called under pcpu_alloc_mutex.  pcpu_reclaim() released the
      mutex before calling depopulate leading to double free and other
      strange problems caused by the unexpected concurrent usages of pages
      array and bitmap.  Fix it.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      971f3918
    • Tejun Heo's avatar
      Merge branch 'percpu-for-linus' into percpu-for-next · 384be2b1
      Tejun Heo authored
      
      Conflicts:
      	arch/sparc/kernel/smp_64.c
      	arch/x86/kernel/cpu/perf_counter.c
      	arch/x86/kernel/setup_percpu.c
      	drivers/cpufreq/cpufreq_ondemand.c
      	mm/percpu.c
      
      Conflicts in core and arch percpu codes are mostly from commit
      ed78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many
      num_possible_cpus() with nr_cpu_ids.  As for-next branch has moved all
      the first chunk allocators into mm/percpu.c, the changes are moved
      from arch code to mm/percpu.c.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      384be2b1
    • Amerigo Wang's avatar
      percpu: use the right flag for get_vm_area() · 142d44b0
      Amerigo Wang authored
      
      get_vm_area() only accepts VM_* flags, not GFP_*.
      
      And according to the doc of get_vm_area(), here should be
      VM_ALLOC.
      
      Signed-off-by: default avatarWANG Cong <amwang@redhat.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      142d44b0
    • Tejun Heo's avatar
      percpu, sparc64: fix sparse possible cpu map handling · 74d46d6b
      Tejun Heo authored
      
      percpu code has been assuming num_possible_cpus() == nr_cpu_ids which
      is incorrect if cpu_possible_map contains holes.  This causes percpu
      code to access beyond allocated memories and vmalloc areas.  On a
      sparc64 machine with cpus 0 and 2 (u60), this triggers the following
      warning or fails boot.
      
       WARNING: at /devel/tj/os/work/mm/vmalloc.c:106 vmap_page_range_noflush+0x1f0/0x240()
       Modules linked in:
       Call Trace:
        [00000000004b17d0] vmap_page_range_noflush+0x1f0/0x240
        [00000000004b1840] map_vm_area+0x20/0x60
        [00000000004b1950] __vmalloc_area_node+0xd0/0x160
        [0000000000593434] deflate_init+0x14/0xe0
        [0000000000583b94] __crypto_alloc_tfm+0xd4/0x1e0
        [00000000005844f0] crypto_alloc_base+0x50/0xa0
        [000000000058b898] alg_test_comp+0x18/0x80
        [000000000058dad4] alg_test+0x54/0x180
        [000000000058af00] cryptomgr_test+0x40/0x60
        [0000000000473098] kthread+0x58/0x80
        [000000000042b590] kernel_thread+0x30/0x60
        [0000000000472fd0] kthreadd+0xf0/0x160
       ---[ end trace 429b268a213317ba ]---
      
      This patch fixes generic percpu functions and sparc64
      setup_per_cpu_areas() so that they handle sparse cpu_possible_map
      properly.
      
      Please note that on x86, cpu_possible_map() doesn't contain holes and
      thus num_possible_cpus() == nr_cpu_ids and this patch doesn't cause
      any behavior difference.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Ingo Molnar <mingo@elte.hu>
      74d46d6b
    • Tejun Heo's avatar
      init: set nr_cpu_ids before setup_per_cpu_areas() · d6647bdf
      Tejun Heo authored
      
      nr_cpu_ids is dependent only on cpu_possible_map and
      setup_per_cpu_areas() already depends on cpu_possible_map and will use
      nr_cpu_ids.  Initialize nr_cpu_ids before setting up percpu areas.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      d6647bdf
  2. Aug 13, 2009
  3. Aug 12, 2009
    • NeilBrown's avatar
      md: never advance 'events' counter by more than 1. · 51d5668c
      NeilBrown authored
      
      When assembling arrays, md allows two devices to have different event
      counts as long as the difference is only '1'.  This is to cope with
      a system failure between updating the metadata on two difference
      devices.
      
      However there are currently times when we update the event count by
      2.  This was done to keep the event count even when the array is clean
      and odd when it is dirty, which allows us to avoid writing common
      update to spare devices and so allow those spares to go to sleep.
      
      This is bad for the above reason.  So change it to never increase by
      two.  This means that the alignment between 'odd/even' and
      'clean/dirty' might take a little longer to attain, but that is only a
      small cost.  The spares will get a few more updates but that will
      still be spared (;-) most updates and can still go to sleep.
      
      Prior to this patch there was a small chance that after a crash an
      array would fail to assemble due to the overly large event count
      mismatch.
      
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      51d5668c
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · a3620f75
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
        Remove double removal of blktrace directory
      a3620f75
    • Alan D. Brunelle's avatar
      Remove double removal of blktrace directory · 39cbb602
      Alan D. Brunelle authored
      
      commit fd51d251
      Author: Stefan Raspl <raspl@linux.vnet.ibm.com>
      Date:   Tue May 19 09:59:08 2009 +0200
      
          blktrace: remove debugfs entries on bad path
      
      added in an explicit invocation of debugfs_remove for bt->dir, in
      blk_remove_buf_file_callback we are also getting the directory removed. On
      occasion I am seeing memory corruption that I have bisected down to
      this commit. [The testing involves a (long) series of I/O benchmarks
      with blktrace invoked around the actual runs.] I believe that this
      committed patch is correct, but the problem actually lies in the code
      in blk_remove_buf_file_callback.
      
      With this patch I am able to consistently get complete runs whereas
      previously I could not get a single run to complete.
      
      The first part of the patch simply moves the debugfs_remove below the
      relay_close: the relay_close call will remove files under bt->dir, and
      so we should not remove the directory until all the files we created
      have been removed. (Note: This is not sufficient to fix the problem -
      the file system code has ref counts on the directoy, so our invocation
      does not cause the directory to actually be removed. Nonetheless, we
      should not rely upon that feature.)
      
      Signed-off-by: default avatarAlan D. Brunelle <alan.brunelle@hp.com>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      39cbb602
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 78efd1dd
      Linus Torvalds authored
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        xfs: fix spin_is_locked assert on uni-processor builds
        xfs: check for dinode realtime flag corruption
        use XFS_CORRUPTION_ERROR in xfs_btree_check_sblock
        xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get
        xfs: switch to NOFS allocation under i_lock in xfs_readlink_bmap
        xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_set
        xfs: switch to NOFS allocation under i_lock in xfs_buf_associate_memory
        xfs: switch to NOFS allocation under i_lock in xfs_dir_cilookup_result
        xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make
        xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc
        xfs: switch to NOFS allocation under i_lock in xfs_getbmap
        xfs: avoid memory allocation under m_peraglock in growfs code
      78efd1dd
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 · b637dc0d
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
        ALSA: hda - Don't override ADC definitions for ALC codecs
        ALSA: hda - Add missing vmaster initialization for ALC269
        ASoC: Add missing DRV_NAME definitions for fsl/* drivers
      b637dc0d
    • Linus Torvalds's avatar
      42c5c843
Loading