1. 24 Apr, 2009 40 commits
    • David Howells's avatar
      ROMFS: romfs_lookup() shouldn't be doing a partial name comparison · 84baf74b
      David Howells authored
      romfs_lookup() should be using a routine akin to strcmp() on the backing store,
      rather than one akin to strncmp().  If it uses the latter, it's liable to match
      /bin/shutdown when looking up /bin/sh.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Tested-by: default avatarMichal Simek <monstr@monstr.eu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      84baf74b
    • Fred Isaman's avatar
      lib: find_last_bit.o needed by a module only, move it from lib to obj · a5422a51
      Fred Isaman authored
      Currently, although find_last_bit is EXPORTed, it is statically linked
      with the kernel and is referenced only under CONFIG_SMP.
      
      When CONFIG_SMP is undefined and find_last_bit is referenced only by
      modules, linking fails with:
      
        ERROR: "find_last_bit" [fs/nfs/nfs.ko] undefined!
      
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarFred Isaman <iisaman@citi.umich.edu>
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a5422a51
    • Marc Dionne's avatar
      CacheFiles: Fix the documentation to use the correct credential pointer names · 91ac033d
      Marc Dionne authored
      Adjust the CacheFiles documentation to use the correct names of the credential
      pointers in task_struct.
      
      The documentation was using names from the old versions of the credentials
      patches.
      Signed-off-by: default avatarMarc Dionne <marc.c.dionne@gmail.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      91ac033d
    • Christian Borntraeger's avatar
      virtio-rng: Remove false BUG for spurious callbacks · e5b89542
      Christian Borntraeger authored
      The virtio-rng drivers checks for spurious callbacks. Since
      callbacks can be implemented via shared interrupts (e.g. PCI) this
      could lead to guest kernel oopses with lots of virtio devices.
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e5b89542
    • Linus Torvalds's avatar
      Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze · 9f5a6912
      Linus Torvalds authored
      * 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: add parameter to microblaze_read()
        microblaze: Use CFLAGS_KERNEL instead of CFLAGS
        microblaze: Add STATE_SAVE_ARG_SPACE for noMMU kernel too
        microblaze: Do not check use_dcache
        microblaze: Do not use PVR configuration for broken MB version
        microblaze: Fix USR1/2 pvr printing message
        microblaze: iowrite upon timeout
        microblaze: Correspond CONFIG...PCMP in Makefile/Kconfig
        microblaze: Remove redundant variable
        microblaze: Move start_thread to process.c
        microblaze: Add missing preadv and pwritev syscalls
        microblaze: Add missing declaration for die and _exception func
        microblaze: Remove sparse error in traps.c
        microblaze: Move task_pt_regs up
        microblaze: Rename kernel_mode to pt_mode in pt_regs
        microblaze: Remove uncache shadow condition
        microblaze: Remove while(1) loop from show_regs function
        microblaze: Remove unneded per cpu SYSCALL_SAVE variable
      9f5a6912
    • Linus Torvalds's avatar
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 · ef54b1bb
      Linus Torvalds authored
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (34 commits)
        ACPI, i915: Register ACPI video even when not modesetting
        Revert "ACPICA: delete check for AML access to port 0x81-83"
        I/O port protection: update for windows compatibility.
        sony-laptop: always try to unblock rfkill on load
        sony-laptop: fix bogus error message display on resume
        ACPI: EC: Fix ACPI EC resume non-query interrupt message
        sony-laptop: SNC input event 38 fix
        sony-laptop: SNC 127 Initialization Fix
        sony-laptop: Duplicate SNC 127 Event Fix
        ACPI: prevent processor.max_cstate=0 boot crash
        ACPI/hpet: prevent boot hang when hpet=force used on ICH-4M
        ACPI: delete obsolete "bus master activity" proc field
        ACPI: idle: mark_tsc_unstable() at init-time, not run-time
        ACPI: add /sys/firmware/acpi/interrupts/sci_not counter
        ACPI video: fix an error when the brightness levels on AC and on Battery are same
        acpi-cpufreq: Do not let get_measured perf depend on internal variable
        acpi-cpufreq: style-only: add parens to math expression
        acpi-cpufreq: Cleanup: Use printk_once
        x86, acpi_cpufreq: Fix the NULL pointer dereference in get_measured_perf
        thinkpad-acpi: bump up version to 0.23
        ...
      ef54b1bb
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 9fe9293d
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
        m68knommu: update the default config for the ColdFire 5407C3 board
        m68knommu: update the default config for the ColdFire 5307C3 board
        m68knommu: update the default config for the ColdFire 5257EVB board
        m68knommu: update the default config for the ColdFire 5249EVB.
        m68knommu: add a defconfig for the ColdFire M5272C3 board
        m68knommu: update the defconfig for the ColdFire 5208evb board
        m68knommu: fix DMA support for ColdFire
        m68knommu: remove unused kernel stats offsets
        m68knommu: fix missing .data.cacheline_aligned section
        m68knommu: Fixed GPIO pin initialization for CONFIG_M5271 FEC.
      9fe9293d
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · a4277bf1
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        ext4: Fix potential inode allocation soft lockup in Orlov allocator
        ext4: Make the extent validity check more paranoid
        jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records
        jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records
        ext4: really print the find_group_flex fallback warning only once
      a4277bf1
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · 6ae85d6d
      Linus Torvalds authored
      * master.kernel.org:/home/rmk/linux-2.6-arm:
        [ARM] 5460/1: Orion: reduce namespace pollution
        [ARM] 5458/1: pcmcia: pxa2xx-sharpsl: check if we do have Scoop config
        [ARM] 5457/1: mach-imx gpio buildfix
        [ARM] 5456/1: add sys_preadv and sys_pwritev
        [ARM] pxa/pcm990: start external GPIOs immediately after built-in ones
        [ARM] pxa/palm27x: General fix for Palm27x aSoC driver
        [ARM] pxa/mioa701: use GPIO95 as AC97 reset line
        [ARM] pxa: merge AC97 platform data structures
        [ARM] pxa/magician: remove un-necessary #include of pxa-regs.h and hardware.h
      6ae85d6d
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 · d72cd3a9
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
        USB: pwc : do not pass stack allocated buffers to USB core.
        USB: otg: Fix bug on remove path without transceiver
        USB: correct error handling in cdc-wdm
        USB: removal of tty->low_latency hack dating back to the old serial code
        USB: serial: sierra driver bug fix for composite interface
        USB: gadget: omap_udc uses platform_driver_probe()
        USB: ci13xxx_udc: fix build error
        USB: musb: Prevent multiple includes of musb.h
        USB: pass mem_flags to dma_alloc_coherent
        USB: g_file_storage: fix use-after-free bug when closing files
        USB: ehci-sched.c: EHCI SITD scheduling bugfix
        USB: fix mos7840 problem with minor numbers
        USB: mos7840: add new device id
        USB: musb: fix build when !CONFIG_PM
        USB: musb: Remove my email address from few musb related drivers
        USB: Gadget: MIPS CI13xxx UDC bugfixes
        USB: Unusual Device support for Gold MP3 Player Energy
        USB: serial: fix lifetime and locking problems
      d72cd3a9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 · ff91fad2
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:
        eCryptfs: Larger buffer for encrypted symlink targets
        eCryptfs: Lock lower directory inode mutex during lookup
        eCryptfs: Remove ecryptfs_unlink_sigs warnings
        eCryptfs: Fix data corruption when using ecryptfs_passthrough
        eCryptfs: Print FNEK sig properly in /proc/mounts
        eCryptfs: NULL pointer dereference in ecryptfs_send_miscdev()
        eCryptfs: Copy lower inode attrs before dentry instantiation
      ff91fad2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 198aa045
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Update defconfigs for 2.6.30-rc3
        m68k,m68knommu: Wire up preadv and pwritev
        scsi: a4000 - Correct driver unregistration in case of failure
      198aa045
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 · 58be18c4
      Linus Torvalds authored
      * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
        [S390] update default configuration.
        [S390] omit frame pointers on s390 when possible
        [S390] Use tape_generic_offline directly.
        [S390] /proc/stat idle field for idle cpus
        [S390] appldata: avoid deadlock with appldata_mem
        [S390] ipl: fix compile breakage
      58be18c4
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes · 12bac708
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes:
        GFS2: Ensure that the inode goal block settings are updated
        GFS2: Fix bug in block allocation
        bitops: Add __ffs64 bitop
      12bac708
    • Linus Torvalds's avatar
      Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 60911731
      Linus Torvalds authored
      * 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: Unregister cpufreq notifier on unload
        KVM: x86: release time_page on vcpu destruction
        KVM: Fix overlapping check for memory slots
        KVM: MMU: disable global page optimization
        KVM: ia64: fix locking order entering guest
        KVM: MMU: Fix off-by-one calculating large page count
      60911731
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 · d1f53fb9
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
        MAINTAINERS: update IDE entry
        palm_bk3710: palm_bk3710_udmatimings[] CodingStyle fixup
        palm_bk3710: those registers/bitfields don't exist
        mediabay: fix build for CONFIG_BLOCK=n
        ide: Stop disks on reboot for laptop which cuts power
        ide-cd: fix kernel crash on hppa regression
        palm_bk3710: UDMA performance fix
      d1f53fb9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 · 90c8fce5
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
        ALSA: hda - Add quirk for Packard Bell RS65
        [ALSA] intel8x0: another attempt to fix ac97_clock measure routine
        [ALSA] ac97_codec: increase timeout for analog subsections
        ALSA: hda - Add quirks for Realtek codecs
        ALSA: hda - Fix alc662_init_verbs
        ALSA: keywest: Convert to new-style i2c driver
        ALSA: AOA: Convert onyx and tas codecs to new-style i2c drivers
        ALSA: Atiixp: Add SSID for mute_led quirk (unknown HP model)
        ALSA: us122l: add snd_us122l_free()
        ASoC: Fix warning in wm9705
        ASoC: OMAP: Update contact addresses
        ASoC: pxa-ssp: Don't use SSCR0_SerClkDiv and SSCR0_SCR
        ALSA: us122l: Fix signedness in comparisions
      90c8fce5
    • Alan Cox's avatar
      radio_si470x: Fix free memory corruption · ec5f5bf8
      Alan Cox authored
      The release path for a disconnected device frees the object then unlocks
      the mutex in the freed object...
      
      Found by Dan Carpenter using Smatch
      Signed-off-by: default avatarAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ec5f5bf8
    • Niels de Vos's avatar
      serial: remove contact data · 79e95eba
      Niels de Vos authored
      Remove my name and emailaddress from note in the source. Wincor Nixdorf
      only has some ITE-chips on their mainboards, other chips are not
      available for me for testing.
      Signed-off-by: default avatarNiels de Vos <niels.devos@wincor-nixdorf.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      79e95eba
    • Alan Cox's avatar
      cafe_nand: Fix warning · 67cd724f
      Alan Cox authored
      Wrong types on IRQ handler
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      67cd724f
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · 97c68d00
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
        cfq-iosched: cache prio_tree root in cfqq->p_root
        cfq-iosched: fix bug with aliased request and cooperation detection
        cfq-iosched: clear ->prio_trees[] on cfqd alloc
        block: fix intermittent dm timeout based oops
        umem: fix request_queue lock warning
        block: simplify I/O stat accounting
        pktcdvd.h should include mempool.h
        cfq-iosched: use the default seek distance when there aren't enough seek samples
        cfq-iosched: make seek_mean converge more quickly
        block: make blk_abort_queue() ignore non-request based devices
        block: include empty disks in /proc/diskstats
        bio: use bio_kmalloc() in copy/map functions
        bio: fix bio_kmalloc()
        block: fix queue bounce limit setting
        block: fix SG_IO vector request data length handling
        scatterlist: make sure sg_miter_next() doesn't return 0 sized mappings
      97c68d00
    • David Howells's avatar
      MN10300: Update the ASB2303 defconfig · 596a5c4e
      David Howells authored
      Update the defconfig for the ASB2303 evaluation board.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      596a5c4e
    • Jonathan Corbet's avatar
      Delete slow-work timers properly · 418df63c
      Jonathan Corbet authored
      Slow-work appears to delete its timer as soon as the first user
      unregisters, even though other users could be active.  At the same time, it
      never seems to delete slow_work_oom_timer.  Arrange for both to happen in
      the shutdown path.
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      418df63c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 3e241ff0
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (94 commits)
        netfilter: ctnetlink: fix gcc warning during compilation
        net/netrom: Fix socket locking
        netlabel: Always remove the correct address selector
        ucc_geth.c: Fix upsmr setting in RMII mode
        8139too: fix HW initial flow
        af_iucv: Fix race when queuing incoming iucv messages
        af_iucv: Test additional sk states in iucv_sock_shutdown
        af_iucv: Reject incoming msgs if RECV_SHUTDOWN is set
        af_iucv: fix oops in iucv_sock_recvmsg() for MSG_PEEK flag
        af_iucv: consider state IUCV_CLOSING when closing a socket
        iwlwifi: DMA fixes
        iwlwifi: add debugging for TX path
        mwl8: fix build warning.
        mac80211: fix alignment calculation bug
        mac80211: do not print WARN if config interface
        iwl3945: use cancel_delayed_work_sync to cancel rfkill_poll
        iwlwifi: fix EEPROM validation mask to include OTP only devices
        atmel: fix netdev ops conversion
        pcnet_cs: add cis(firmware) of the Allied Telesis LA-PCM
        mlx4_en: Fix cleanup if workqueue create in mlx4_en_add() fails
        ...
      3e241ff0
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · dc0046c7
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        sparc: Fix bus type probing for ESP and LE devices.
        sparc32: Update defconfig.
        sparc64: Update defconfig.
      dc0046c7
    • Linus Torvalds's avatar
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc · f8c3301e
      Linus Torvalds authored
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
        powerpc: Fix modular build of ide-pmac when mediabay is built in
        powerpc/pasemi: Fix build error on UP
        powerpc: Make macintosh/mediabay driver depend on CONFIG_BLOCK
        maintainers: Fix PS3 patterns
        powerpc/ps3: Fix CONFIG_PS3_FLASH=n build warning
        powerpc/32: Don't clobber personality flags on exec
        powerpc: Fix crash on CPU hotplug
        powerpc/85xx: Remove defconfigs that mpc85xx_{smp_}defconfig cover
        powerpc/85xx: Added SMP defconfig
        powerpc/85xx: Enabled a bunch of FSL specific drivers/options
        powerpc/85xx: Updated generic mpc85xx_defconfig
        powerpc: don't disable SATA interrupts on Freescale MPC8610 HPCD
        fsl_rio: Pass the proper device to dma mapping routines
        powerpc: Fix of_node_put() exit path in of_irq_map_one()
        powerpc/5200: defconfig updates
        powerpc/5200: Add FLASH nodes to lite5200 device tree
        powerpc/device-tree: Document MTD nodes with multiple "reg" tuples
        powerpc/of-device-tree: Factor MTD physmap bindings out of booting-without-of
        powerpc/5200: Bring the legacy fsl_spi_platform_data hooks back
      f8c3301e
    • Len Brown's avatar
      Merge branch 'bjorn.button' into release · 1162cf6b
      Len Brown authored
      1162cf6b
    • Len Brown's avatar
      Merge branch 'bugzilla-13036' into release · 5f855a8f
      Len Brown authored
      5f855a8f
    • Len Brown's avatar
      Merge branch 'bugzilla-13048' into release · 1fe94d37
      Len Brown authored
      1fe94d37
    • Len Brown's avatar
      Merge branch 'bugzilla-13142' into release · 9c18f0b7
      Len Brown authored
      9c18f0b7
    • Len Brown's avatar
      Merge branch 'hpet' into release · 3869e929
      Len Brown authored
      3869e929
    • Oleg Nesterov's avatar
      check_unsafe_exec: s/lock_task_sighand/rcu_read_lock/ · 437f7fdb
      Oleg Nesterov authored
      write_lock(&current->fs->lock) guarantees we can't wrongly miss
      LSM_UNSAFE_SHARE, this is what we care about. Use rcu_read_lock()
      instead of ->siglock to iterate over the sub-threads. We must see
      all CLONE_THREAD|CLONE_FS threads which didn't pass exit_fs(), it
      takes fs->lock too.
      
      With or without this patch we can miss the freshly cloned thread
      and set LSM_UNSAFE_SHARE, we don't care.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Acked-by: default avatarRoland McGrath <roland@redhat.com>
      [ Fixed lock/unlock typo  - Hugh ]
      Acked-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      437f7fdb
    • Oleg Nesterov's avatar
      do_execve() must not clear fs->in_exec if it was set by another thread · 8c652f96
      Oleg Nesterov authored
      If do_execve() fails after check_unsafe_exec(), it clears fs->in_exec
      unconditionally. This is wrong if we race with our sub-thread which
      also does do_execve:
      
      	Two threads T1 and T2 and another process P, all share the same
      	->fs.
      
      	T1 starts do_execve(BAD_FILE). It calls check_unsafe_exec(), since
      	->fs is shared, we set LSM_UNSAFE but not ->in_exec.
      
      	P exits and decrements fs->users.
      
      	T2 starts do_execve(), calls check_unsafe_exec(), now ->fs is not
      	shared, we set fs->in_exec.
      
      	T1 continues, open_exec(BAD_FILE) fails, we clear ->in_exec and
      	return to the user-space.
      
      	T1 does clone(CLONE_FS /* without CLONE_THREAD */).
      
      	T2 continues without LSM_UNSAFE_SHARE while ->fs is shared with
      	another process.
      
      Change check_unsafe_exec() to return res = 1 if we set ->in_exec, and change
      do_execve() to clear ->in_exec depending on res.
      
      When do_execve() suceeds, it is safe to clear ->in_exec unconditionally.
      It can be set only if we don't share ->fs with another process, and since
      we already killed all sub-threads either ->in_exec == 0 or we are the
      only user of this ->fs.
      
      Also, we do not need fs->lock to clear fs->in_exec.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Acked-by: default avatarRoland McGrath <roland@redhat.com>
      Acked-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8c652f96
    • Jens Axboe's avatar
      cfq-iosched: cache prio_tree root in cfqq->p_root · f2d1f0ae
      Jens Axboe authored
      Currently we look it up from ->ioprio, but ->ioprio can change if
      either the process gets its IO priority changed explicitly, or if
      cfq decides to temporarily boost it. So if we are unlucky, we can
      end up attempting to remove a node from a different rbtree root than
      where it was added.
      
      Fix this by using ->org_ioprio as the prio_tree index, since that
      will only change for explicit IO priority settings (not for a boost).
      Additionally cache the rbtree root inside the cfqq, then we don't have
      to add code to reinsert the cfqq in the prio_tree if IO priority changes.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      f2d1f0ae
    • Jens Axboe's avatar
      cfq-iosched: fix bug with aliased request and cooperation detection · 3ac6c9f8
      Jens Axboe authored
      cfq_prio_tree_lookup() should return the direct match, yet it always
      returns zero. Fix that.
      
      cfq_prio_tree_add() assumes that we don't get a direct match, while
      it is very possible that we do. Using O_DIRECT, you can have different
      cfqq with matching requests, since you don't have the page cache
      to serialize things for you. Fix this bug by only adding the cfqq if
      there isn't an existing match.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      3ac6c9f8
    • Jens Axboe's avatar
      cfq-iosched: clear ->prio_trees[] on cfqd alloc · 26a2ac00
      Jens Axboe authored
      Not strictly needed, but we should make it clear that we init the
      rbtree roots here.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      26a2ac00
    • Hannes Reinecke's avatar
      block: fix intermittent dm timeout based oops · 17d5c8ca
      Hannes Reinecke authored
      Very rarely under stress testing of dm, oopses are occuring as
      something tampers with an old stack frame.  This has been traced back
      to blk_abort_queue() leaving a timeout_list pointing to the stack.
      The reason is that sometimes blk_abort_request() won't delete the
      timer (if the request is marked as complete but before the timer has
      been removed, a small race window).  Fix this by splicing back from
      the ususally empty list to the q->timeout_list.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      17d5c8ca
    • Sage Weil's avatar
      umem: fix request_queue lock warning · f3c737de
      Sage Weil authored
      The umem driver issues two warnings on boot, due to blk_plug_device() and
      blk_remove_plug() being called without q->queue_lock held.  Starting with
      e48ec690 (block: extend queue_flag bitops), the queue_flag_* functions
      warn if q->queue_lock doesn't appear to be locked.  In fact, q->queue_lock
      is NULL (though that apparently isn't otherwise a problem as the driver is
      using card->lock for everything).
      
      Although blk_init_queue() with take a request_fn_proc and spinlock_t*,
      there isn't a corresponding init helper that takes a make_request_fn.
      Setting queue_lock to &card->lock explicitly seems to work fine for me.
      The warning goes away and the device appears to behave.
      
      [    1.531881] v2.3 : Micro Memory(tm) PCI memory board block driver
      [    1.538136] umem 0000:02:01.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
      [    1.545018] umem 0000:02:01.0: Micro Memory(tm) controller found (PCI Mem Module (Battery Backup))
      [    1.554176] umem 0000:02:01.0: CSR 0xfc9ffc00 -> 0xffffc200013d0c00 (0x100)
      [    1.561279] umem 0000:02:01.0: Size 1048576 KB, Battery 1 Disabled (FAILURE), Battery 2 Disabled (FAILURE)
      [    1.571114] umem 0000:02:01.0: Window size 16777216 bytes, IRQ 20
      [    1.577304] umem 0000:02:01.0: memory NOT initialized. Consider over-writing whole device.
      [    1.585989]  umema:<4>------------[ cut here ]------------
      [    1.591775] WARNING: at include/linux/blkdev.h:492 blk_plug_device+0x6d/0x106()
      [    1.592025] Hardware name: H8SSL
      [    1.592025] Modules linked in:
      [    1.592025] Pid: 1, comm: swapper Not tainted 2.6.29 #8
      [    1.592025] Call Trace:
      [    1.592025]  [<ffffffff8023c994>] warn_slowpath+0xd3/0xf2
      [    1.592025]  [<ffffffff8025a5b5>] ? save_trace+0x3f/0x9b
      [    1.592025]  [<ffffffff8025a68b>] ? add_lock_to_list+0x7a/0xba
      [    1.592025]  [<ffffffff8025e609>] ? validate_chain+0xb3b/0xce8
      [    1.592025]  [<ffffffff80441556>] ? mm_make_request+0x27/0x59
      [    1.592025]  [<ffffffff80441556>] ? mm_make_request+0x27/0x59
      [    1.592025]  [<ffffffff8025ef04>] ? __lock_acquire+0x74e/0x7b9
      [    1.592025]  [<ffffffff8025a70e>] ? get_lock_stats+0x34/0x5e
      [    1.592025]  [<ffffffff8025a746>] ? put_lock_stats+0xe/0x27
      [    1.592025]  [<ffffffff80441556>] ? mm_make_request+0x27/0x59
      [    1.592025]  [<ffffffff803ad165>] blk_plug_device+0x6d/0x106
      [    1.592025]  [<ffffffff80441575>] mm_make_request+0x46/0x59
      [    1.592025]  [<ffffffff803ac2d9>] generic_make_request+0x335/0x3cf
      [    1.592025]  [<ffffffff8027fcc7>] ? mempool_alloc_slab+0x11/0x13
      [    1.592025]  [<ffffffff8027fdce>] ? mempool_alloc+0x45/0x101
      [    1.592025]  [<ffffffff8025a746>] ? put_lock_stats+0xe/0x27
      [    1.592025]  [<ffffffff803adda5>] submit_bio+0x10a/0x119
      [    1.592025]  [<ffffffff802c8d00>] submit_bh+0xe5/0x109
      [    1.592025]  [<ffffffff802cbf43>] block_read_full_page+0x2aa/0x2cb
      [    1.592025]  [<ffffffff802cf4c4>] ? blkdev_get_block+0x0/0x4c
      [    1.592025]  [<ffffffff805c90a8>] ? _spin_unlock_irq+0x36/0x51
      [    1.592025]  [<ffffffff80286836>] ? __lru_cache_add+0x92/0xb2
      [    1.592025]  [<ffffffff802cf008>] blkdev_readpage+0x13/0x15
      [    1.592025]  [<ffffffff8027de06>] read_cache_page_async+0x90/0x134
      [    1.592025]  [<ffffffff802ceff5>] ? blkdev_readpage+0x0/0x15
      [    1.592025]  [<ffffffff802f5f1c>] ? adfspart_check_ICS+0x0/0x16c
      [    1.592025]  [<ffffffff8027deb8>] read_cache_page+0xe/0x45
      [    1.592025]  [<ffffffff802f5170>] read_dev_sector+0x2e/0x93
      [    1.592025]  [<ffffffff802f5f44>] adfspart_check_ICS+0x28/0x16c
      [    1.592025]  [<ffffffff8025d427>] ? trace_hardirqs_on+0xd/0xf
      [    1.592025]  [<ffffffff802f5f1c>] ? adfspart_check_ICS+0x0/0x16c
      [    1.592025]  [<ffffffff802f59c5>] rescan_partitions+0x168/0x2fb
      [    1.592025]  [<ffffffff802ceae9>] __blkdev_get+0x259/0x336
      [    1.592025]  [<ffffffff803ca1e2>] ? kobject_put+0x47/0x4b
      [    1.592025]  [<ffffffff802cebd1>] blkdev_get+0xb/0xd
      [    1.592025]  [<ffffffff802f5773>] register_disk+0xc4/0x12b
      [    1.592025]  [<ffffffff803b2a7b>] add_disk+0xc3/0x12d
      [    1.592025]  [<ffffffff808a1d4a>] ? mm_init+0x0/0x1a5
      [    1.592025]  [<ffffffff808a1e73>] mm_init+0x129/0x1a5
      [    1.592025]  [<ffffffff808a1d4a>] ? mm_init+0x0/0x1a5
      [    1.592025]  [<ffffffff80209056>] _stext+0x56/0x130
      [    1.592025]  [<ffffffff80274932>] ? register_irq_proc+0xae/0xca
      [    1.592025]  [<ffffffff802f0000>] ? proc_pid_lookup+0xb4/0x18b
      [    1.592025]  [<ffffffff8087f975>] kernel_init+0x132/0x18b
      [    1.592025]  [<ffffffff8020d17a>] child_rip+0xa/0x20
      [    1.592025]  [<ffffffff8020cb40>] ? restore_args+0x0/0x30
      [    1.592025]  [<ffffffff8087f843>] ? kernel_init+0x0/0x18b
      [    1.592025]  [<ffffffff8020d170>] ? child_rip+0x0/0x20
      [    1.592025] ---[ end trace 7150b3b86da74e1e ]---
      [    1.889858] ------------[ cut here ]------------[ve_plug+0x5f/0x91()
      [    1.893848] Hardware name: H8SSL
      [    1.893848] Modules linked in:
      [    1.893848] Pid: 1, comm: swapper Tainted: G        W  2.6.29 #8
      [    1.893848] Call Trace:
      [    1.893848]  [<ffffffff8023c994>] warn_slowpath+0xd3/0xf2
      [    1.893848]  [<ffffffff805c8411>] ? trace_hardirqs_on_thunk+0x3a/0x3f
      [    1.893848]  [<ffffffff8020cb40>] ? restore_args+0x0/0x30
      [    1.893848]  [<ffffffff80254245>] ? __atomic_notifier_call_chain+0x0/0xb2
      [    1.893848]  [<ffffffff805c90a3>] ? _spin_unlock_irq+0x31/0x51
      [    1.893848]  [<ffffffff805c90bf>] ? _spin_unlock_irq+0x4d/0x51
      [    1.893848]  [<ffffffff8044157d>] ? mm_make_request+0x4e/0x59
      [    1.893848]  [<ffffffff8025a70e>] ? get_lock_stats+0x34/0x5e
      [    1.893848]  [<ffffffff8025a75d>] ? put_lock_stats+0x25/0x27
      [    1.893848]  [<ffffffff80441504>] ? mm_unplug_device+0x25/0x50
      [    1.893848]  [<ffffffff803acf23>] blk_remove_plug+0x5f/0x91
      [    1.893848]  [<ffffffff8044150f>] mm_unplug_device+0x30/0x50
      [    1.893848]  [<ffffffff803ab74a>] blk_unplug+0x78/0x7d
      [    1.893848]  [<ffffffff803ab75c>] blk_backing_dev_unplug+0xd/0xf
      [    1.893848]  [<ffffffff802c853c>] block_sync_page+0x4a/0x4c
      [    1.893848]  [<ffffffff8027da1c>] sync_page+0x44/0x4d
      [    1.893848]  [<ffffffff805c66fd>] __wait_on_bit_lock+0x42/0x8a
      [    1.893848]  [<ffffffff8027d9d8>] ? sync_page+0x0/0x4d
      [    1.893848]  [<ffffffff8027d9c4>] __lock_page+0x64/0x6b
      [    1.893848]  [<ffffffff802508db>] ? wake_bit_function+0x0/0x2a
      [    1.893848]  [<ffffffff8027de4a>] read_cache_page_async+0xd4/0x134
      [    1.893848]  [<ffffffff802ceff5>] ? blkdev_readpage+0x0/0x15
      [    1.893848]  [<ffffffff802f5f1c>] ? adfspart_check_ICS+0x0/0x16c
      [    1.893848]  [<ffffffff8027deb8>] read_cache_page+0xe/0x45
      [    1.893848]  [<ffffffff802f5170>] read_dev_sector+0x2e/0x93
      [    1.893848]  [<ffffffff802f5f44>] adfspart_check_ICS+0x28/0x16c
      [    1.893848]  [<ffffffff8025d427>] ? trace_hardirqs_on+0xd/0xf
      [    1.893848]  [<ffffffff802f5f1c>] ? adfspart_check_ICS+0x0/0x16c
      [    1.893848]  [<ffffffff802f59c5>] rescan_partitions+0x168/0x2fb
      [    1.893848]  [<ffffffff802ceae9>] __blkdev_get+0x259/0x336
      [    1.893848]  [<ffffffff803ca1e2>] ? kobject_put+0x47/0x4b
      [    1.893848]  [<ffffffff802cebd1>] blkdev_get+0xb/0xd
      [    1.893848]  [<ffffffff802f5773>] register_disk+0xc4/0x12b
      [    1.893848]  [<ffffffff803b2a7b>] add_disk+0xc3/0x12d
      [    1.893848]  [<ffffffff808a1d4a>] ? mm_init+0x0/0x1a5
      [    1.893848]  [<ffffffff808a1e73>] mm_init+0x129/0x1a5
      [    1.893848]  [<ffffffff808a1d4a>] ? mm_init+0x0/0x1a5
      [    1.893848]  [<ffffffff80209056>] _stext+0x56/0x130
      [    1.893848]  [<ffffffff80274932>] ? register_irq_proc+0xae/0xca
      [    1.893848]  [<ffffffff802f0000>] ? proc_pid_lookup+0xb4/0x18b
      [    1.893848]  [<ffffffff8087f975>] kernel_init+0x132/0x18b
      [    1.893848]  [<ffffffff8020d17a>] child_rip+0xa/0x20
      [    1.893848]  [<ffffffff8020cb40>] ? restore_args+0x0/0x30
      [    1.893848]  [<ffffffff8087f843>] ? kernel_init+0x0/0x18b
      [    1.893848]  [<ffffffff8020d170>] ? child_rip+0x0/0x20
      [    1.893848] ---[ end trace 7150b3b86da74e1f ]---
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      f3c737de
    • Jerome Marchand's avatar
      block: simplify I/O stat accounting · 42dad764
      Jerome Marchand authored
      This simplifies I/O stat accounting switching code and separates it
      completely from I/O scheduler switch code.
      
      Requests are accounted according to the state of their request queue
      at the time of the request allocation. There is no need anymore to
      flush the request queue when switching I/O accounting state.
      Signed-off-by: default avatarJerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      42dad764
    • Alexander Beregalov's avatar
      pktcdvd.h should include mempool.h · 097102c2
      Alexander Beregalov authored
      Fix this build error:
      In file included from fs/compat_ioctl.c:104:
      include/linux/pktcdvd.h:285: error: expected specifier-qualifier-list before 'mempool_t'
      Signed-off-by: default avatarAlexander Beregalov <a.beregalov@gmail.com>
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      097102c2