04 Jan, 2012

4 commits


29 Dec, 2011

7 commits

  • ext4_{set,clear}_bit() is defined as __test_and_{set,clear}_bit_le() for
    ext4. Only two ext4_{set,clear}_bit() calls check the return value. The
    rest of calls ignore the return value and they can be replaced with
    __{set,clear}_bit_le().

    This changes ext4_{set,clear}_bit() from __test_and_{set,clear}_bit_le()
    to __{set,clear}_bit_le() and introduces ext4_test_and_{set,clear}_bit()
    for the two places where old bit needs to be returned.

    This ext4_{set,clear}_bit() change is considered safe, because if someone
    uses these macros without noticing the change, new ext4_{set,clear}_bit
    don't have return value and causes compiler errors where the return value
    is used.

    This also removes unused ext4_find_first_zero_bit().

    Signed-off-by: Akinobu Mita
    Signed-off-by: Andrew Morton
    Signed-off-by: "Theodore Ts'o"

    Akinobu Mita
     
  • The functions ext4_block_truncate_page() and ext4_block_zero_page_range()
    are no longer used, so remove them.

    Signed-off-by: Zheng Liu
    Signed-off-by: "Theodore Ts'o"

    Zheng Liu
     
  • Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     
  • Fix ext4_debug format in ext4_ext_handle_uninitialized_extents() and
    ext4_end_io_dio().

    Signed-off-by: Zheng Liu
    Signed-off-by: "Theodore Ts'o"

    Zheng Liu
     
  • Currently, we clear revoked flag only when a block is reused. However,
    this can tigger a false journal error. Consider a situation when a block
    is used as a meta block and is deleted(revoked) in ordered mode, then the
    block is allocated as a data block to a file. At this moment, user changes
    the file's journal mode from ordered to journaled and truncates the file.
    The block will be considered re-revoked by journal because it has revoked
    flag still pending from the last transaction and an assertion triggers.

    We fix the problem by keeping the revoked status more uptodate - we clear
    revoked flag when switching revoke tables to reflect there is no revoked
    buffers in current transaction any more.

    Signed-off-by: Yongqiang Yang
    Signed-off-by: "Theodore Ts'o"

    Yongqiang Yang
     
  • It's necessary to flush the journal when switching away from
    data=journal mode. This is because there are no revoke records when
    data blocks are journalled, but revoke records are required in the
    other journal modes.

    However, it is not necessary to flush the journal when switching into
    data=journal mode, and flushing the journal is expensive. So let's
    avoid it in that case.

    Signed-off-by: Yongqiang Yang
    Signed-off-by: "Theodore Ts'o"

    Yongqiang Yang
     
  • delalloc blocks should be allocated before changing journal mode,
    otherwise they can not be allocated and even more truncate on
    delalloc blocks could triggre BUG by flushing delalloc buffers.

    Signed-off-by: Yongqiang Yang
    Signed-off-by: "Theodore Ts'o"

    Yongqiang Yang
     

22 Dec, 2011

1 commit

  • In the code to support EXT4_IOC_MOVE_EXT, ext4_ioctl calls
    file_remove_suid() after the call to ext4_move_extents() if any
    extents has been moved. There are at least three things wrong with
    this. First, file_remove_suid() should be called with i_mutex down,
    which is not here. Second, it should be called before the donor file
    has been modified, to avoid a potential race condition. Third, and
    most importantly, it's pointless, because ext4_file_extents() already
    checks if the donor file has the setuid or setgid bit set, and will
    return an error in that case. So the first two objections don't
    really matter, since file_remove_suid() will never need to modify the
    inode in any case.

    Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     

19 Dec, 2011

5 commits

  • We found performance regression when using bigalloc with "nodelalloc"
    (1MB cluster size):

    1. mke2fs -C 1048576 -O ^has_journal,bigalloc /dev/sda
    2. mount -o nodelalloc /dev/sda /test/
    3. time dd if=/dev/zero of=/test/io bs=1048576 count=1024

    The "dd" will cost about 2 seconds to finish, but if we mke2fs without
    "bigalloc", "dd" will only cost less than 1 second.

    The reason is: when using ext4 with "nodelalloc", it will call
    ext4_find_delalloc_cluster() nearly everytime it call
    ext4_ext_map_blocks(), and ext4_find_delalloc_range() will also scan
    all pages in cluster because no buffer is "delayed". A cluster has
    256 pages (1MB cluster), so it will scan 256 * 256k pags when creating
    a 1G file. That severely hurts the performance.

    Therefore, we return immediately from ext4_find_delalloc_range() in
    nodelalloc mode, since by definition there can't be any delalloc
    pages.

    Signed-off-by: Robin Dong
    Signed-off-by: "Theodore Ts'o"

    Robin Dong
     
  • In get_implied_cluster_alloc(), rr_cluster_end was being
    defined and set, but was never used. Removed this.

    Signed-off-by: Curt Wohlgemuth
    Signed-off-by: "Theodore Ts'o"

    Curt Wohlgemuth
     
  • When insert_inode_locked() fails in ext4_new_inode() it most likely means inode
    bitmap got corrupted and we allocated again inode which is already in use. Also
    doing unlock_new_inode() during error recovery is wrong since the inode does
    not have I_NEW set. Fix the problem by jumping to fail: (instead of fail_drop:)
    which declares filesystem error and does not call unlock_new_inode().

    Signed-off-by: Jan Kara
    Signed-off-by: "Theodore Ts'o"

    Jan Kara
     
  • Signed-off-by: Zheng Liu
    Signed-off-by: "Theodore Ts'o"

    Zheng Liu
     
  • pa_inode in group_pa is set NULL in ext4_mb_new_group_pa, so
    pa_inode should be not referenced.

    Reported-by: Wu Fengguang
    Signed-off-by: Yongqiang Yang
    Signed-off-by: "Theodore Ts'o"

    Yongqiang Yang
     

17 Dec, 2011

21 commits

  • Linus Torvalds
     
  • This reverts commit eb1711bb94991e93669c5a1b5f84f11be2d51ea1.

    It blows up the i915 seqno tracking, resulting in the

    BUG_ON(seqno == 0);

    in i915_wait_request() triggering, which will cause lock-ups.

    See for example
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/903010
    https://lkml.org/lkml/2011/12/14/395

    Reported-requested-and-tested-by: Dirk Hohndel
    Reported-by: Richard Eames
    Reported-by: Rocko Requin
    Acked-by: Daniel Vetter
    Cc: Dave Airlie
    Cc: Chris Wilson
    Cc: Keith Packard
    Cc: Eric Anholt
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc32: Be less strict in matching %lo part of relocation.
    sbus: convert drivers/sbus/char/* to use module_platform_driver()
    bbc_i2c: Remove unneeded err variable
    sparc: Use kmemdup rather than duplicating its implementation

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    ipv6: Check dest prefix length on original route not copied one in rt6_alloc_cow().
    sch_gred: should not use GFP_KERNEL while holding a spinlock
    ipip, sit: copy parms.name after register_netdevice
    ipv6: Fix for adding multicast route for loopback device automatically.
    ssb: fix init regression with SoCs
    rtl8192{ce,cu,de,se}: avoid problems because of possible ERFOFF -> ERFSLEEP transition
    mac80211: fix another race in aggregation start
    fsl_pq_mdio: Clean up tbi address configuration
    ppp: fix pptp double release_sock in pptp_bind()
    net/fec: fix the use of pdev->id
    ath9k: fix check for antenna diversity support
    batman-adv: delete global entry in case of roaming
    batman-adv: in case of roaming mark the client with TT_CLIENT_ROAM
    Bluetooth: Correct version check in hci_setup
    btusb: fix a memory leak in btusb_send_frame()
    Bluetooth: bnep: Fix module reference
    Bluetooth: cmtp: Fix module reference
    Bluetooth: btmrvl: support Marvell Bluetooth device SD8797

    Linus Torvalds
     
  • …inux/kernel/git/mason/linux-btrfs

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: unplug every once and a while
    Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code
    Btrfs: only set cache_generation if we setup the block group
    Btrfs: don't panic if orphan item already exists
    Btrfs: fix leaked space in truncate
    Btrfs: fix how we do delalloc reservations and how we free reservations on error
    Btrfs: deal with enospc from dirtying inodes properly
    Btrfs: fix num_workers_starting bug and other bugs in async thread
    BTRFS: Establish i_ops before calling d_instantiate
    Btrfs: add a cond_resched() into the worker loop
    Btrfs: fix ctime update of on-disk inode
    btrfs: keep orphans for subvolume deletion
    Btrfs: fix inaccurate available space on raid0 profile
    Btrfs: fix wrong disk space information of the files
    Btrfs: fix wrong i_size when truncating a file to a larger size
    Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror

    * 'for-linus-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    btrfs: lower the dirty balance poll interval

    Linus Torvalds
     
  • * 'drm-intel-fixes' of git://people.freedesktop.org/~keithp/linux:
    drm/i915/dp: Dither down to 6bpc if it makes the mode fit
    drm/i915: enable semaphores on per-device defaults
    drm/i915: don't set unpin_work if vblank_get fails
    drm/i915: By default, enable RC6 on IVB and SNB when reasonable
    iommu: Export intel_iommu_enabled to signal when iommu is in use
    drm/i915/sdvo: Include LVDS panels for the IS_DIGITAL check
    drm/i915: prevent division by zero when asking for chipset power
    drm/i915: add PCH info to i915_capabilities
    drm/i915: set the right SDVO transcoder for CPT
    drm/i915: no-lvds quirk for ASUS AT5NM10T-I
    drm/i915: Treat pre-gen4 backlight duty cycle value consistently
    drm/i915: Hook up Ivybridge eDP
    drm/i915: add multi-threaded forcewake support

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo
    ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS
    ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device
    ASoC: Fix hx4700 error handling to free gpios if snd_soc_register_card fails
    ASoC: WM8958: correctly show firmware magic on mismatch
    ASoC: mxs: Add appropriate MODULE_ALIAS()
    ASoC: mxs: Add missing MODULE_LICENSE("GPL")
    ASoC: Fix WM8996 24.576MHz clock operation
    ASoC: Include linux/module.h for smdk2443_wm9710
    ASoC: Fix a typo in jive_wm8750
    ASoC: Fix build dependency for SND_SOC_JZ4740_CODEC
    ASoC: Include linux/io.h for jz4740 codec

    Linus Torvalds
     
  • * 'gpio/merge' of git://git.secretlab.ca/git/linux-2.6:
    gpio: Fix DA9052 GPIO build errors.
    gpio: mpc8xxx: don't allow input-only pins to be output for MPC5121
    gpio-ml-ioh: Add the irq_disable/irq_enable hooks for ml-ioh irq chip
    gpio-ml-ioh: fix a bug in the interrupt handler
    gpio: pl061: drop extra check for NULL platform_data

    Linus Torvalds
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: OMAP: rx51: fix USB
    ARM: OMAP: mcbsp: Fix possible memory corruption
    arm/imx: fix power button on imx51 babbage board
    ARM: imx: fix cpufreq build errors
    ARM: mx5: add __initconst for fec pdata
    MXC PWM: should active during DOZE/WAIT/DBG mode
    ARM: EXYNOS: Fix build error without CONFIG_LOCAL_TIMERS
    ARM: EXYNOS: Fix for stall in case of cpu hotplug or sleep
    ARM: S5PV210: Set 1000ns as PWM backlight period on SMDKV210
    ARM: SAMSUNG: remove duplicated header include

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.dk/linux-block:
    block: don't kick empty queue in blk_drain_queue()
    block/swim3: Locking fixes
    loop: Fix discard_alignment default setting
    cfq-iosched: fix cfq_cic_link() race confition
    cfq-iosched: free cic_index if blkio_alloc_blkg_stats fails
    cciss: fix flush cache transfer length
    cciss: Add IRQF_SHARED back in for the non-MSI(X) interrupt handler
    loop: fix loop block driver discard and encryption comment
    block: initialize request_queue's numa node during

    Linus Torvalds
     
  • Tests show that the original large intervals can easily make the dirty
    limit exceeded on 100 concurrent dd's. So adapt to as large as the
    next check point selected by the dirty throttling algorithm.

    Signed-off-by: Wu Fengguang
    Signed-off-by: Chris Mason

    Wu Fengguang
     
  • Some active adaptors (VGA usually) only have two lanes at 2.7GHz.
    That's a maximum pixel clock of 144MHz at 8bpc, but 192MHz at 6bpc.

    Fixes Asus UX31 panel being black at startup due to no valid modes since
    dc22ee6fc18ce0f15424e753e8473c306ece95c1.

    v2: Rebased to current code, resulting in the fix applying to EDP panels as
    well. Also changed from spatio-temporal to just spatial dithering on
    pre-ironlake, to be conssitent (and less visual flicker)

    Signed-off-by: Adam Jackson
    Signed-off-by: Eric Anholt
    Tested-by: Eric Anholt
    Tested-by: Dirk Hohndel
    Signed-off-by: Keith Packard

    Adam Jackson
     
  • This adds a default setting for semaphores parameter, and enables
    semaphores by default on IVB.

    For now, as semaphores interaction with VTd causes random issues on
    SNB, we do not enable them by default. But they can still be enabled
    via the semaphores=1 kernel parameter.

    v2: enables semaphores on SNB when IO remapping is disabled, with base
    on Keith Packard patch.

    CC: Daniel Vetter
    CC: Ben Widawsky
    CC: Keith Packard
    CC: Jesse Barnes
    CC: Chris Wilson
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42696
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40564
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38862
    Reviewed-by: Chris Wilson
    Reviewed-by: Daniel Vetter
    Signed-off-by: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • This fixes a race where we may try to finish a page flip and decrement
    the refcount even if our vblank_get failed and we ended up with a
    spurious flip pending interrupt.

    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=34211.

    Signed-off-by: Jesse Barnes
    Signed-off-by: Keith Packard

    Jesse Barnes
     
  • RC6 should always work on IVB, and should work on SNB whenever IO
    remapping is disabled. RC6 never works on Ironlake. Make the default
    value for the parameter follow these guidelines. Setting the value
    to either 0 or 1 will force the specified behavior.

    Signed-off-by: Keith Packard
    Reviewed-by: Kenneth Graunke
    Reviewed-by: Eugeni Dodonov
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38567
    Cc: Ted Phelps
    Cc: Peter
    Cc: Lukas Hejtmanek
    Cc: Andrew Lutomirski

    Keith Packard
     
  • In i915 driver, we do not enable either rc6 or semaphores on SNB when dmar
    is enabled. The new 'intel_iommu_enabled' variable signals when the
    iommu code is in operation.

    Cc: Ted Phelps
    Cc: Peter
    Cc: Lukas Hejtmanek
    Cc: Andrew Lutomirski
    CC: Daniel Vetter
    Cc: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • We were checking whether the supplied edid matched the connector it was
    read from. We do this in case a DDC read returns an EDID for another
    device on a multifunction or otherwise interesting card. However, we
    failed to include LVDS as a digital device and so rejecting an otherwise
    valid EDID.

    Fixes the detection of the secondary SDVO LVDS panel on the Libretto
    W105.

    Signed-off-by: Chris Wilson
    Reviewed-by: Adam Jackson
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39216
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • This prevents an in-kernel division by zero which happens when we are
    asking for i915_chipset_val too quickly, or within a race condition
    between the power monitoring thread and userspace accesses via debugfs.

    The issue can be reproduced easily via the following command:
    while ``; do cat /sys/kernel/debug/dri/0/i915_emon_status; done

    This is particularly dangerous because it can be triggered by
    a non-privileged user by just reading the debugfs entry.

    This issue was also found independently by Konstantin Belousov
    , who proposed a similar patch.

    Reported-by: Konstantin Belousov
    Acked-by: Jesse Barnes
    Acked-by: Keith Packard
    Reviewed-by: Chris Wilson
    Cc:
    Signed-off-by: Eugeni Dodonov
    Signed-off-by: Keith Packard

    Eugeni Dodonov
     
  • Signed-off-by: Chris Wilson
    Signed-off-by: Paulo Zanoni
    Signed-off-by: Keith Packard

    Paulo Zanoni
     
  • v2: add a CPT-specific macro, make code cleaner
    v3: fix commit message

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41272
    Cc: stable@kernel.org
    Signed-off-by: Paulo Zanoni
    Reviewed-by: Chris Wilson
    Signed-off-by: Keith Packard

    Paulo Zanoni
     
  • https://bugzilla.redhat.com/show_bug.cgi?id=750006

    Signed-off-by: Adam Jackson
    Signed-off-by: Keith Packard

    Adam Jackson
     

16 Dec, 2011

2 commits