14 Sep, 2011

1 commit

  • In __blk_complete_request, we check both QUEUE_FLAG_SAME_COMP and req->cpu
    to decide whether we should use req->cpu. Actually the user can also
    select the complete cpu by either setting BIO_CPU_AFFINE or by calling
    bio_set_completion_cpu. Current solution makes these 2 ways don't work
    any more. So we'd better just check req->cpu.

    Signed-off-by: Tao Ma
    Signed-off-by: Jens Axboe

    Tao Ma
     

03 Sep, 2011

2 commits


24 Aug, 2011

3 commits

  • Cleaning up the code a little bit. attempt_plug_merge() traverses the plug
    list anyway, we can do the request counting there, so stack size is reduced
    a little bit.
    The motivation here is I suspect if we should count the requests for each
    queue (task could handle multiple disks in the meantime), but my test doesn't
    show it's worthy doing. If somebody proves we should do it, below change
    will make that more easier.

    Signed-off-by: Shaohua Li
    Signed-off-by: Shaohua Li
    Signed-off-by: Jens Axboe

    Shaohua Li
     
  • Do blk_flush_plug_list() first and then add new request aDo blk_flush_plug_list() first and then add new request aDo blk_flush_plug_list() first and then add new request at the tail. New
    request can't be merged to existing requests, but later new requests might
    be merged with this new one. If blk_flush_plug_list() is done later, the
    merge doesn't happen.
    Believe it or not, this fixes a 10% regression running sysbench workload.

    Signed-off-by: Shaohua Li
    Signed-off-by: Shaohua Li
    Signed-off-by: Jens Axboe

    Shaohua Li
     
  • Commit 5757a6d76cdf added the QUEUE_FLAG_SAME_FORCE flag, but fails to
    clear that flag when the current state is '2' (SAME_COMP + SAME_FORCE)
    and the new state is '1' (SAME_COMP).

    Acked-by: Dan Williams
    Reviewed-by: Roland Dreier
    Signed-off-by: Eric Seppanen
    Signed-off-by: Jens Axboe

    Eric Seppanen
     

23 Aug, 2011

6 commits


22 Aug, 2011

5 commits

  • This patch fixes belows:

    1. Fix code style issue.
    2. Fix incorrect functions name in comments.

    Signed-off-by: Joe Jin
    Cc: Jens Axboe
    Cc: Ian Campbell
    Signed-off-by: Konrad Rzeszutek Wilk

    Joe Jin
     
  • When do block-attach/block-detach test with below steps, umount hangs
    in the guest. Furthermore shutdown ends up being stuck when umounting file-systems.

    1. start guest.
    2. attach new block device by xm block-attach in Dom0.
    3. mount new disk in guest.
    4. execute xm block-detach to detach the block device in dom0 until timeout
    5. Any request to the disk will hung.

    Root cause:
    This issue is caused when setting backend device's state to
    'XenbusStateClosing', which sends to the frontend the XenbusStateClosing
    notification. When frontend receives the notification it tries to release
    the disk in blkfront_closing(), but at that moment the disk is still in use
    by guest, so frontend refuses to close. Specifically it sets the disk state to
    XenbusStateClosing and sends the notification to backend - when backend receives the
    event, it disconnects the vbd from real device, and sets the vbd device state to
    XenbusStateClosing. The backend disconnects the real device/file, and any IO
    requests to the disk in guest will end up in ether, leaving disk DEAD and set to
    XenbusStateClosing. When the guest wants to disconnect the disk, umount will
    hang on blkif_release()->xlvbd_release_gendisk() as it is unable to send any IO
    to the disk, which prevents clean system shutdown.

    Solution:
    Don't disconnect backend until frontend state switched to XenbusStateClosed.

    Signed-off-by: Joe Jin
    Cc: Daniel Stodden
    Cc: Jens Axboe
    Cc: Annie Li
    Cc: Ian Campbell
    [v1: Modified description a bit]
    Signed-off-by: Konrad Rzeszutek Wilk

    Joe Jin
     
  • Steven Rostedt says we should use CONFIG_EVENT_TRACING.

    Cc:Steven Rostedt
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Konrad Rzeszutek Wilk

    Jeremy Fitzhardinge
     
  • Fix regression for HVM case on older (
    Date: Thu Dec 2 17:55:10 2010 +0000

    xen: PV on HVM: support PV spinlocks and IPIs

    This change replaced the SMP operations with event based handlers without
    taking into account that this only works when the hypervisor supports
    callback vectors. This causes unexplainable hangs early on boot for
    HVM guests with more than one CPU.

    BugLink: http://bugs.launchpad.net/bugs/791850

    CC: stable@kernel.org
    Signed-off-by: Stefan Bader
    Signed-off-by: Stefano Stabellini
    Tested-and-Reported-by: Stefan Bader
    Signed-off-by: Konrad Rzeszutek Wilk

    Stefano Stabellini
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: core: handle ack_busy when fetching the Config ROM

    Linus Torvalds
     

21 Aug, 2011

4 commits

  • This fixes a regression introduced by commit cdcb725c05fe ("Btrfs: check
    if there is enough space for balancing smarter"). We can't do 64-bit
    divides on 32-bit architectures.

    In cases where we need to divide/multiply by 2 we should just left/right
    shift respectively, and in cases where theres N number of devices use
    do_div. Also make the counters u64 to match up with rw_devices.
    Thanks,

    Signed-off-by: Josef Bacik
    Acked-and-tested-by: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Josef Bacik
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: flush any pending end_io requests before DIO reads w/dioread_nolock
    ext4: fix nomblk_io_submit option so it correctly converts uninit blocks
    ext4: Resolve the hang of direct i/o read in handling EXT4_IO_END_UNWRITTEN.
    ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode
    ext4: Fix ext4_should_writeback_data() for no-journal mode

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: sound/aoa/fabrics/layout.c: remove unneeded kfree
    ALSA: hda - Fix error check from snd_hda_get_conn_index() in patch_cirrus.c
    ALSA: hda - Don't spew too many ELD errors
    ALSA: usb-audio - Fix missing mixer dB information
    ALSA: hda - Add "PCM" volume to vmaster slave list
    ALSA: hda - Fix duplicated capture-volume creation for ALC268 models
    ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist
    ALSA: snd_usb_caiaq: track submitted output urbs

    Linus Torvalds
     
  • Fix new kernel-doc warning in pci.c:

    Warning(drivers/pci/pci.c:3259): No description found for parameter 'mps'
    Warning(drivers/pci/pci.c:3259): Excess function parameter 'rq' description in 'pcie_set_mps'

    Signed-off-by: Randy Dunlap
    Cc: Jesse Barnes
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

20 Aug, 2011

8 commits

  • The label outnodev is only used when kzalloc has not yet taken place or has
    failed, so there is no need for the call for kfree under this label.

    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)

    //
    @@
    identifier x;
    expression E1!=0,E2,E3,E4;
    statement S;
    iterator I;
    @@

    (
    if (...) { ... when != kfree(x)
    when != x = E3
    when != E3 = x
    * return ...;
    }
    ... when != x = E2
    when != I(...,x,...) S
    if (...) { ... when != x = E4
    kfree(x); ... return ...; }
    )
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Takashi Iwai

    Julia Lawall
     
  • snd_hda_get_conn_index() returns a negative value while the current code
    stores it in an unsigned int. It must be stored in a signed integer.

    Reported-by: Jesper Juhl
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Currently HD-audio driver shows the all error ELD byte as an error
    in the kernel message. This is annoying when the video driver doesn't
    set the correct ELD from the beginning. e.g. radeon sends a zero-byte
    data, but we still check ELD with the fixed 128 byte as a workaround
    for some broken devices, it spews 128-times errors.

    For avoiding this, the driver aborts reading when the first byte is
    invalid. In such a case, the whole data is certainly invalid.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-intel:
    drm/i915: set GFX_MODE to pre-Ivybridge default value even on Ivybridge

    Linus Torvalds
     
  • There is a race between ext4 buffer write and direct_IO read with
    dioread_nolock mount option enabled. The problem is that we clear
    PageWriteback flag during end_io time but will do
    uninitialized-to-initialized extent conversion later with dioread_nolock.
    If an O_direct read request comes in during this period, ext4 will return
    zero instead of the recently written data.

    This patch checks whether there are any pending uninitialized-to-initialized
    extent conversion requests before doing O_direct read to close the race.
    Note that this is just a bandaid fix. The fundamental issue is that we
    clear PageWriteback flag before we really complete an IO, which is
    problem-prone. To fix the fundamental issue, we may need to implement an
    extent tree cache that we can use to look up pending to-be-converted extents.

    Signed-off-by: Jiaying Zhang
    Signed-off-by: "Theodore Ts'o"
    Cc: stable@kernel.org

    Jiaying Zhang
     
  • Prior to Ivybridge, the GFX_MODE would default to 0x800, meaning that
    MI_FLUSH would flush the TLBs in addition to the rest of the caches
    indicated in the MI_FLUSH command. However starting with Ivybridge, the
    register defaults to 0x2800 out of reset, meaning that to invalidate the
    TLB we need to use PIPE_CONTROL. Since we're not doing that yet, go
    back to the old default so things work.

    v2: don't forget to actually *clear* the new bit

    Reviewed-by: Eric Anholt
    Reviewed-by: Chris Wilson
    Tested-by: Kenneth Graunke
    Signed-off-by: Jesse Barnes

    Jesse Barnes
     
  • * 'for-linus' of git://git.kernel.dk/linux-block: (23 commits)
    Revert "cfq: Remove special treatment for metadata rqs."
    block: fix flush machinery for stacking drivers with differring flush flags
    block: improve rq_affinity placement
    blktrace: add FLUSH/FUA support
    Move some REQ flags to the common bio/request area
    allow blk_flush_policy to return REQ_FSEQ_DATA independent of *FLUSH
    xen/blkback: Make description more obvious.
    cfq-iosched: Add documentation about idling
    block: Make rq_affinity = 1 work as expected
    block: swim3: fix unterminated of_device_id table
    block/genhd.c: remove useless cast in diskstats_show()
    drivers/cdrom/cdrom.c: relax check on dvd manufacturer value
    drivers/block/drbd/drbd_nl.c: use bitmap_parse instead of __bitmap_parse
    bsg-lib: add module.h include
    cfq-iosched: Reduce linked group count upon group destruction
    blk-throttle: correctly determine sync bio
    loop: fix deadlock when sysfs and LOOP_CLR_FD race against each other
    loop: add BLK_DEV_LOOP_MIN_COUNT=%i to allow distros 0 pre-allocated loop devices
    loop: add management interface for on-demand device allocation
    loop: replace linked list of allocated devices with an idr index
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI: OF: Don't crash when bridge parent is NULL.
    PCI: export pcie_bus_configure_settings symbol
    PCI: code and comments cleanup
    PCI: make cardbus-bridge resources optional
    PCI: make SRIOV resources optional
    PCI : ability to relocate assigned pci-resources
    PCI: honor child buses add_size in hot plug configuration
    PCI: Set PCI-E Max Payload Size on fabric

    Linus Torvalds
     

19 Aug, 2011

11 commits

  • In pcibios_get_phb_of_node(), we will crash while booting if
    bus->bridge->parent is NULL.

    Check for this case and avoid dereferencing the NULL pointer.

    Signed-off-by: David Daney
    Acked-by: Benjamin Herrenschmidt
    Acked-by: Grant Likely
    Signed-off-by: Jesse Barnes

    David Daney
     
  • We have a kernel build regression since 3.1-rc1, which is about 10%
    regression. The kernel source is in an ext3 filesystem.
    Alex Shi bisect it to commit:
    commit a07405b7802691d29ab3b23bdc76ee6d006aad0b
    Author: Justin TerAvest
    Date: Sun Jul 10 22:09:19 2011 +0200

    cfq: Remove special treatment for metadata rqs.

    Apparently this is caused by lack metadata preemption, where ext3/ext4
    do use READ_META. I didn't see a way to fix the issue, so suggest
    reverting the patch.

    This reverts commit a07405b7802691d29ab3b23bdc76ee6d006aad0b.

    Reported-by: Alex Shi
    Reported-by: Shaohua Li
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • The recent fix for testing dB range at the mixer creation time seems
    to cause regressions in some devices. In such devices, reading the dB
    info at probing time gives an error, thus both dBmin and dBmax are still
    zero, and TLV flag isn't set although the later read of dB info succeeds.

    This patch adds a workaround for such a case by assuming that the later
    read will succeed. In future, a similar test should be performed in a
    case where a wrong dB range is seen even in the later read.

    Signed-off-by: Takashi Iwai
    Cc:

    Takashi Iwai
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: fix array bounds error setting up PCIC NMI trap

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    drivers/ata/sata_dwc_460ex.c: add missing kfree
    ata: Add iMX pata support
    pata_via: disable ATAPI DMA on AVERATEC 3200
    [libata] sata_sil: fix used-uninit warning

    Linus Torvalds
     
  • * 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv4.1: Return NFS4ERR_BADSESSION to callbacks during session resets
    NFSv4.1: Fix the callback 'highest_used_slotid' behaviour
    pnfs-obj: Fix the comp_index != 0 case
    pnfs-obj: Bug when we are running out of bio
    nfs: add missing prefetch.h include

    Linus Torvalds
     
  • CC arch/sparc/kernel/pcic.o
    arch/sparc/kernel/pcic.c: In function 'pcic_probe':
    arch/sparc/kernel/pcic.c:359:33: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/sparc/kernel/pcic.c:359:8: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/sparc/kernel/pcic.c:360:33: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/sparc/kernel/pcic.c:360:8: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/sparc/kernel/pcic.c:361:33: error: array subscript is above array bounds [-Werror=array-bounds]
    arch/sparc/kernel/pcic.c:361:8: error: array subscript is above array bounds [-Werror=array-bounds]
    cc1: all warnings being treated as errors

    I'm not particularly familiar with sparc but t_nmi (defined in head_32.S via
    the TRAP_ENTRY macro) and pcic_nmi_trap_patch (defined in entry.S) both appear
    to be 4 instructions long and I presume from the usage that instructions are
    int sized.

    Signed-off-by: Ian Campbell
    Cc: "David S. Miller"
    Cc: sparclinux@vger.kernel.org
    Reviewed-by: Sam Ravnborg
    Signed-off-by: David S. Miller

    Ian Campbell
     
  • Currently, error handling code in this function calls the function
    sata_dwc_port_stop, but this function has essentially no effect if hsdevp
    has not been stored in ap, which is the case throughout this function. The
    only effect is to print a debugging message including ap->print_id.

    The code is rewritten to not call sata_dwc_port_stop, but instead to jump
    to a local label that prints the original error message and the print_id
    information. In the case where hsdevp has been already allocated (but not
    yet stored in ap), this value is freed as well.

    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)

    //
    @exists@
    local idexpression x;
    statement S,S1;
    expression E;
    identifier fl;
    expression *ptr != NULL;
    @@

    x = \(kmalloc\|kzalloc\|kcalloc\)(...);
    ...
    if (x == NULL) S
    }
    when any
    when != true x == NULL
    x->fl
    ...>
    (
    if (x == NULL) S1
    |
    if (...) { ... when != x
    when forall
    (
    return \(0\|\|ptr\);
    |
    * return ...;
    )
    }
    )
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Jeff Garzik

    Julia Lawall
     
  • Add basic support for pata on iMX. It has been tested only on imx51.
    SDMA support will probably be added later so this version supports only
    PIO.

    v2:
    - enable only when needed IORDY
    - use dev_get_drvdata
    v3:
    - add missing clk_put() calls
    - use platform_get_irq()
    - fix resume code to avoid disabling IORDY on resume
    v4:
    - Remove EXPERIMENTAL and switch to depends on ARCH_MXC
    - Use devm_kzalloc()
    - make clock a must-have
    - Use only 1 ioremap

    Signed-off-by: Arnaud Patard
    Signed-off-by: Jeff Garzik

    Arnaud Patard (Rtp)
     
  • On AVERATEC 3200, pata_via causes memory corruption with ATAPI DMA,
    which often leads to random kernel oops. The cause of the problem is
    not well understood yet and only small subset of machines using the
    controller seem affected. Blacklist ATAPI DMA on the machine.

    Signed-off-by: Tejun Heo
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=11426
    Reported-and-tested-by: Jim Bray
    Cc: Alan Cox
    Cc: stable@kernel.org
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Init 'serror' to silence the following warning:

    drivers/ata/sata_sil.c: In function ‘sil_interrupt’:
    drivers/ata/sata_sil.c:453:14: warning: ‘serror’ may be used uninitialized in
    this function [-Wuninitialized]

    This is not a 'can never happen' but is nonetheless extremely unlikely.
    The easiest and cleanest warning fix is simply to init the var,
    rather than worry about marking the var uninit-ok.

    Signed-off-by: Jeff Garzik

    Jeff Garzik