1. 15 Feb, 2012 3 commits
    • Tejun Heo's avatar
      block: exit_io_context() should call elevator_exit_icq_fn() · 621032ad
      Tejun Heo authored
      While updating locking, b2efa052 "block, cfq: unlink
      cfq_io_context's immediately" moved elevator_exit_icq_fn() invocation
      from exit_io_context() to the final ioc put.  While this doesn't cause
      catastrophic failure, it effectively removes task exit notification to
      elevator and cause noticeable IO performance degradation with CFQ.
      
      On task exit, CFQ used to immediately expire the slice if it was being
      used by the exiting task as no more IO would be issued by the task;
      however, after b2efa052, the notification is lost and disk could sit
      idle needlessly, leading to noticeable IO performance degradation for
      certain workloads.
      
      This patch renames ioc_exit_icq() to ioc_destroy_icq(), separates
      elevator_exit_icq_fn() invocation into ioc_exit_icq() and invokes it
      from exit_io_context().  ICQ_EXITED flag is added to avoid invoking
      the callback more than once for the same icq.
      
      Walking icq_list from ioc side and invoking elevator callback requires
      reverse double locking.  This may be better implemented using RCU;
      unfortunately, using RCU isn't trivial.  e.g. RCU protection would
      need to cover request_queue and queue_lock switch on cleanup makes
      grabbing queue_lock from RCU unsafe.  Reverse double locking should
      do, at least for now.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-and-bisected-by: default avatarShaohua Li <shli@kernel.org>
      LKML-Reference: <CANejiEVzs=pUhQSTvUppkDcc2TNZyfohBRLygW5zFmXyk5A-xQ@mail.gmail.com>
      Tested-by: default avatarShaohua Li <shaohua.li@intel.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      621032ad
    • Tejun Heo's avatar
      block: simplify ioc_release_fn() · 2274b029
      Tejun Heo authored
      Reverse double lock dancing in ioc_release_fn() can be simplified by
      just using trylock on the queue_lock and back out from ioc lock on
      trylock failure.  Simplify it.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Tested-by: default avatarShaohua Li <shaohua.li@intel.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      2274b029
    • Tejun Heo's avatar
      block: replace icq->changed with icq->flags · d705ae6b
      Tejun Heo authored
      icq->changed was used for ICQ_*_CHANGED bits.  Rename it to flags and
      access it under ioc->lock instead of using atomic bitops.
      ioc_get_changed() is added so that the changed part can be fetched and
      cleared as before.
      
      icq->flags will be used to carry other flags.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Tested-by: default avatarShaohua Li <shaohua.li@intel.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d705ae6b
  2. 14 Feb, 2012 34 commits
  3. 13 Feb, 2012 3 commits
    • Linus Torvalds's avatar
      Merge tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent · 3b582f39
      Linus Torvalds authored
      Just a few small fixes for a bunch of drivers. Nothing noteworthy.
      
      * tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent:
        lp8727_charger: Add terminating entry for i2c_device_id table
        power_supply: Fix modalias for charger-manager
        lp8727_chager: Fix permissions on a header file
        bq27x00_battery: Fix flag register read
        Revert "bq27x00_battery: Fix reporting status value for bq27500 battery"
      3b582f39
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 19be13cf
      Linus Torvalds authored
      Two bugfixes in XFS for 3.3: one fix passes KMEM_SLEEP to kmem_realloc
      instead of 0, and the other resolves a possible deadlock in xfs quotas.
      
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        xfs: use a normal shrinker for the dquot freelist
        xfs: pass KM_SLEEP flag to kmem_realloc() in xlog_recover_add_to_cnt_trans()
      19be13cf
    • Linus Torvalds's avatar
      Merge branch 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm · b14a2998
      Linus Torvalds authored
      This set of changes are fixing various section mismatch warnings which
      look to be completely valid.  Primerily, those which are fixed are those
      which can cause oopses by manipulation of driver binding via sysfs.  For
      example: calling code marked __init from driver probe __devinit
      functions.
      
      Some of these changes will be reworked at the next merge window when the
      underlying reasons are sorted out.  In the mean time, I think it's
      important to have this fixed for correctness.
      
      Also included in this set are fixes to various error messages in OMAP -
      including making them gramatically correct, fixing a few spelling
      errors, and more importantly, making them greppable by unwrapping them.
      
      Tony Lindgren has acked all these patches, put them out for testing a
      week ago, and I've tested them on the platforms I have.
      
      * 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: omap: resolve nebulous 'Error setting wl12xx data'
        ARM: omap: fix wrapped error messages in omap_hwmod.c
        ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c
        ARM: omap: fix section mismatch warning for sdp3430_twl_gpio_setup()
        ARM: omap: fix section mismatch error for omap_4430sdp_display_init()
        ARM: omap: fix section mismatch warning for omap_secondary_startup()
        ARM: omap: preemptively fix section mismatch in omap4_sdp4430_wifi_mux_init()
        ARM: omap: fix section mismatch warning in mux.c
        ARM: omap: fix section mismatch errors in TWL PMIC driver
        ARM: omap: fix uninformative vc/i2c configuration error message
        ARM: omap: fix vc.c PMIC error message
        ARM: omap: fix prm44xx.c OMAP44XX_IRQ_PRCM build error
      b14a2998