10 Sep, 2020

2 commits

  • floppy_revalidate mostly duplicates work already done in floppy_open
    despite only beeing called from floppy_open. Remove the function and
    just clear the ->ejected flag directly under the right condition.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     
  • Switch to use bdev_check_media_change instead of check_disk_change and
    call floppy_revalidate manually. Given that floppy_revalidate only
    deals with media change events, the extra call into ->revalidate_disk
    from bdev_disk_changed is not required either, so stop wiring up the
    method.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

17 May, 2020

1 commit


31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 3029 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

13 Apr, 2019

1 commit

  • This reverts commit 9fd097b14918875bd6f125ed699d7bbbba5893ee.

    Instead of leaving disk->events completely empty, we now export the
    supported events again, and tell the block layer not to forward events to
    user space by not setting DISK_EVENT_FLAG_UEVENT. This allows the block
    layer to distinguish between devices that for which events should be
    handled in kernel only, and devices which don't support any meda change
    events at all.

    Cc: Jiri Kosina
    Cc: Tim Waugh
    Cc: Michal Simek
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin Wilck
    Signed-off-by: Jens Axboe

    Martin Wilck
     

16 Oct, 2018

2 commits

  • The only interesting thing here is that there may be two floppies (i.e.,
    request queues) sharing the same controller, so we use the global struct
    swim_priv->lock to check whether the controller is busy. Compile-tested
    only.

    Tested-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Omar Sandoval

    Converted to blk_mq_init_sq_queue()

    Signed-off-by: Jens Axboe

    Omar Sandoval
     
  • If we fail to allocate the request queue for a disk, we still need to
    free that disk, not just the previous ones. Additionally, we need to
    cleanup the previous request queues.

    Signed-off-by: Omar Sandoval
    Signed-off-by: Jens Axboe

    Omar Sandoval
     

17 Apr, 2018

8 commits

  • The driver supports internal and external FDD units so the floppy_open
    function must not hard-code the drive location.

    Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • Reading to the end of a 720K disk results in an IO error instead of EOF
    because the block layer thinks the disk has 2880 sectors. (Partly this
    is a result of inverted logic of the ONEMEG_MEDIA bit that's now fixed.)

    Initialize the density and head count in swim_add_floppy() to agree
    with the device size passed to set_capacity() during drive probe.

    Call set_capacity() again upon device open, after refreshing the density
    and head count values.

    Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • The SWIM chip is compatible with GCR-mode Sony 400K/800K drives but
    this driver only supports MFM mode. Therefore only Sony FDHD drives
    are supported. Skip incompatible drives.

    Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • The Sony drive status bits use active-low logic. The swim_readbit()
    function converts that to 'C' logic for readability. Hence, the
    sense of the names of the status bit macros should not be inverted.

    Mostly they are correct. However, the TWOMEG_DRIVE, MFM_MODE and
    TWOMEG_MEDIA macros have inverted sense (like MkLinux). Fix this
    inconsistency and make the following patches less confusing.

    The same problem affects swim3.c so fix that too.

    No functional change.

    The FDHD drive status bits are documented in sonydriv.cpp from MAME
    and in swimiii.h from MkLinux.

    Cc: Laurent Vivier
    Cc: Benjamin Herrenschmidt
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • The 'eject' shell command may send various different ioctl commands.
    This leads to error messages on the console even though the FDEJECT
    ioctl succeeds.

    ~# eject floppy
    SWIM floppy_ioctl: unknown cmd 21257
    SWIM floppy_ioctl: unknown cmd 1

    Don't log an error message for an invalid ioctl, just do as the
    swim3 driver does and return -ENOTTY.

    Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Reviewed-by: Geert Uytterhoeven
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 103db8b2dfa5 ("[PATCH] swim: stop sharing request queue across multiple gendisks")
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Reviewed-by: Geert Uytterhoeven
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • In the floppy_find() function in swim.c is a call to
    get_disk(swd->unit[drive].disk). The actual parameter to this call
    can be a NULL pointer when drive == swd->floppy_count. This causes
    an oops in get_disk().

    Data read fault at 0x00000198 in Super Data (pc=0x1be5b6)
    BAD KERNEL BUSERR
    Oops: 00000000
    Modules linked in: swim_mod ipv6 mac8390
    PC: [] get_disk+0xc/0x76
    SR: 2004 SP: 9a078bc1 a2: 0213ed90
    d0: 00000000 d1: 00000000 d2: 00000000 d3: 000000ff
    d4: 00000002 d5: 02983590 a0: 02332e00 a1: 022dfd64
    Process dd (pid: 285, task=020ab25b)
    Frame format=B ssw=074d isc=4a88 isb=6732 daddr=00000198 dobuf=00000000
    baddr=001be5bc dibuf=bfffffff ver=f
    Stack from 022dfca4:
    00000000 0203fc00 0213ed90 022dfcc0 02982936 00000000 00200000 022dfd08
    0020f85a 00200000 022dfd64 02332e00 004040fc 00000014 001be77e 022dfd64
    00334e4a 001be3f8 0800001d 022dfd64 01c04b60 01c04b70 022aba80 029828f8
    02332e00 022dfd2c 001be7ac 0203fc00 00200000 022dfd64 02103a00 01c04b60
    01c04b60 0200e400 022dfd68 000e191a 00200000 022dfd64 02103a00 0800001d
    00000000 00000003 000b89de 00500000 02103a00 01c04b60 02103a08 01c04c2e
    Call Trace: [] floppy_find+0x3e/0x4a [swim_mod]
    [] uart_remove_one_port+0x1a2/0x260
    [] kobj_lookup+0xde/0x132
    [] uart_remove_one_port+0x1a2/0x260
    [] get_gendisk+0x0/0x130
    [] mutex_lock+0x0/0x2e
    [] disk_block_events+0x0/0x6c
    [] floppy_find+0x0/0x4a [swim_mod]
    [] get_gendisk+0x2e/0x130
    [] uart_remove_one_port+0x1a2/0x260
    [] __blkdev_get+0x32/0x45a
    [] uart_remove_one_port+0x1a2/0x260
    [] complete_walk+0x0/0x8a
    [] blkdev_get+0xe0/0x29a
    [] blkdev_open+0x0/0xb0
    [] complete_walk+0x0/0x8a
    [] blkdev_open+0x0/0xb0
    [] bd_acquire+0x74/0x8a
    [] blkdev_open+0x80/0xb0
    [] blkdev_open+0x0/0xb0
    [] do_dentry_open+0x1a4/0x322
    [] __do_proc_douintvec+0x22/0x27e
    [] complete_walk+0x0/0x8a
    [] link_path_walk+0x0/0x48e
    [] inode_permission+0x20/0x54
    [] vfs_open+0x42/0x78
    [] path_openat+0x2b2/0xeaa
    [] path_openat+0x0/0xeaa
    [] __irq_wake_thread+0x0/0x4e
    [] task_tick_fair+0x18/0xc8
    [] do_filp_open+0xa0/0xea
    [] do_sys_open+0x11a/0x1ee
    [] __do_proc_douintvec+0x22/0x27e
    [] SyS_open+0x1e/0x22
    [] __do_proc_douintvec+0x22/0x27e
    [] syscall+0x8/0xc
    [] __do_proc_douintvec+0x22/0x27e
    [] dyadic+0x1/0x28
    Code: 4e5e 4e75 4e56 fffc 2f0b 2f02 266e 0008 0198 4a88 6732 2428 002c 661e 486b 0058 4eb9 0032 0b96 588f 4a88 672c 2008
    Disabling lock debugging due to kernel taint

    Fix the array index bounds check to avoid this.

    Cc: Laurent Vivier
    Cc: Jens Axboe
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 8852ecd97488 ("[PATCH] m68k: mac - Add SWIM floppy support")
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Reviewed-by: Geert Uytterhoeven
    Signed-off-by: Jens Axboe

    Finn Thain
     
  • For reasons I don't understand, calling ioremap() then iounmap() on
    the SWIM MMIO region causes a hang on 68030 (but not on 68040).

    ~# modprobe swim_mod
    SWIM floppy driver Version 0.2 (2008-10-30)
    SWIM device not found !
    watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [modprobe:285]
    Modules linked in: swim_mod(+)
    Format 00 Vector: 0064 PC: 000075aa Status: 2000 Not tainted
    ORIG_D0: ffffffff D0: d00c0000 A2: 007c2370 A1: 003f810c
    A0: 00040000 D5: d0096800 D4: d0097e00
    D3: 00000001 D2: 00000003 D1: 00000000
    Non-Maskable Interrupt
    Modules linked in: swim_mod(+)
    PC: [] __iounmap+0x24/0x10e
    SR: 2000 SP: 007abc48 a2: 007c2370
    d0: d00c0000 d1: 000001a0 d2: 00000019 d3: 00000001
    d4: d0097e00 d5: d0096800 a0: 00040000 a1: 003f810c
    Process modprobe (pid: 285, task=007c2370)
    Frame format=0
    Stack from 007abc7c:
    ffffffed 00000000 006a4060 004712e0 007abca0 000076ea d0080000 00080000
    010bb4b8 007abcd8 010ba542 d0096000 00000000 00000000 00000001 010bb59c
    00000000 007abf30 010bb4b8 0047760a 0047763c 00477612 00616540 007abcec
    0020a91a 00477600 0047760a 010bb4cc 007abd18 002092f2 0047760a 00333b06
    007abd5c 00000000 0047760a 010bb4cc 00404f90 004776b8 00000001 007abd38
    00209446 010bb4cc 0047760a 010bb4cc 0020938e 0031f8be 00616540 007abd64
    Call Trace: [] iounmap+0x46/0x5a
    [] shrink_page_list+0x7f6/0xe06
    [] swim_probe+0xe4/0x496 [swim_mod]
    [] platform_drv_probe+0x20/0x5e
    [] driver_probe_device+0x21c/0x2b8
    [] mutex_lock+0x0/0x2e
    [] __driver_attach+0xb8/0xce
    [] __driver_attach+0x0/0xce
    [] klist_next+0x0/0xa0
    [] bus_for_each_dev+0x74/0xba
    [] blocking_notifier_call_chain+0x0/0x20
    [] mutex_lock+0x0/0x2e
    [] driver_attach+0x1a/0x1e
    [] __driver_attach+0x0/0xce
    [] bus_add_driver+0x188/0x234
    [] blocking_notifier_call_chain+0x0/0x20
    [] driver_register+0x58/0x104
    [] blocking_notifier_call_chain+0x0/0x20
    [] swim_init+0x0/0x2c [swim_mod]
    [] __platform_driver_register+0x38/0x3c
    [] swim_init+0x28/0x2c [swim_mod]
    [] do_one_initcall+0x38/0x196
    [] blocking_notifier_call_chain+0x0/0x20
    [] mutex_unlock+0x0/0x3e
    [] mutex_lock+0x0/0x2e
    [] mutex_unlock+0x0/0x3e
    [] mutex_lock+0x0/0x2e
    [] mutex_unlock+0x0/0x3e
    [] mutex_lock+0x0/0x2e
    [] mutex_unlock+0x0/0x3e
    [] mutex_lock+0x0/0x2e
    [] __free_pages+0x0/0x38
    [] mangle_kernel_stack+0x30/0xda
    [] blocking_notifier_call_chain+0x0/0x20
    [] mutex_unlock+0x0/0x3e
    [] mutex_lock+0x0/0x2e
    [] do_init_module+0x42/0x266
    [] swim_init+0x0/0x2c [swim_mod]
    [] blocking_notifier_call_chain+0x0/0x20
    [] load_module+0x1a30/0x1e70
    [] mangle_kernel_stack+0xcd/0xda
    [] __generic_copy_from_user+0x0/0x46
    [] _cond_resched+0x0/0x32
    [] memset+0x0/0x98
    [] _cond_resched+0x0/0x32
    [] SyS_init_module+0x7c/0x112
    [] _start+0x0/0x8
    [] _start+0x0/0x8
    [] __generic_copy_from_user+0x1e/0x46
    [] SyS_init_module+0xd2/0x112
    [] mangle_kernel_stack+0xcd/0xda
    [] syscall+0x8/0xc
    [] mangle_kernel_stack+0xcd/0xda
    [] pcpu_balance_workfn+0xb2/0x40e
    Code: 2200 7419 e4a9 e589 2841 d9fc 0000 1000 7203 c282 7602 b681 6600 0096 0242 fe00 0482 0000 0000 e9c0 11c3 ed89 2642

    There's no need to call ioremap() for the SWIM address range, as it lies
    within the usual IO device region at 0x5000 0000, which has already been
    mapped by head.S.

    Remove the redundant ioremap() and iounmap() calls to fix the hang.

    Cc: Laurent Vivier
    Cc: stable@vger.kernel.org # v4.14+
    Tested-by: Stan Johnson
    Signed-off-by: Finn Thain
    Acked-by: Laurent Vivier
    Signed-off-by: Jens Axboe

    Finn Thain
     

27 Feb, 2018

1 commit


28 Jun, 2017

1 commit


09 Jun, 2017

1 commit

  • Currently we use nornal Linux errno values in the block layer, and while
    we accept any error a few have overloaded magic meanings. This patch
    instead introduces a new blk_status_t value that holds block layer specific
    status codes and explicitly explains their meaning. Helpers to convert from
    and to the previous special meanings are provided for now, but I suspect
    we want to get rid of them in the long run - those drivers that have a
    errno input (e.g. networking) usually get errnos that don't know about
    the special block layer overloads, and similarly returning them to userspace
    will usually return somethings that strictly speaking isn't correct
    for file system operations, but that's left as an exercise for later.

    For now the set of errors is a very limited set that closely corresponds
    to the previous overloaded errno values, but there is some low hanging
    fruite to improve it.

    blk_status_t (ab)uses the sparse __bitwise annotations to allow for sparse
    typechecking, so that we can easily catch places passing the wrong values.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

29 Mar, 2017

1 commit


20 Oct, 2014

1 commit


16 Apr, 2014

1 commit

  • This was used in the olden days, back when onions were proper
    yellow. Basically it mapped to the current buffer to be
    transferred. With highmem being added more than a decade ago,
    most drivers map pages out of a bio, and rq->buffer isn't
    pointing at anything valid.

    Convert old style drivers to just use bio_data().

    For the discard payload use case, just reference the page
    in the bio.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

12 Sep, 2013

1 commit


25 Jun, 2013

1 commit


07 May, 2013

1 commit


09 Feb, 2013

1 commit


04 Jan, 2013

1 commit

  • CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    __devinitconst, and __devexit from these drivers.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Cc: Mike Miller
    Cc: Chirag Kantharia
    Cc: Geoff Levand
    Cc: Jim Paris
    Cc: Rusty Russell
    Cc: "Michael S. Tsirkin"
    Cc: Grant Likely
    Cc: Matthew Wilcox
    Cc: Keith Busch
    Cc: "David S. Miller"
    Cc: Benjamin Herrenschmidt
    Cc: NeilBrown
    Cc: Jens Axboe
    Cc: Tao Guo
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

11 Dec, 2011

1 commit


22 Apr, 2011

1 commit

  • In-kernel disk event polling doesn't matter for legacy/fringe drivers
    and may lead to infinite event loop if ->check_events() implementation
    generates events on level condition instead of edge.

    Now that block layer supports suppressing exporting unlisted events,
    simply leaving disk->events cleared allows these drivers to keep the
    internal revalidation behavior intact while avoiding weird
    interactions with userland event handler.

    Signed-off-by: Tejun Heo
    Cc: Kay Sievers
    Signed-off-by: Jens Axboe

    Tejun Heo
     

10 Mar, 2011

1 commit

  • Convert from ->media_changed() to ->check_events().

    Both swim and swim3 buffer media changed state and clear it on
    revalidation. They will behave correctly with kernel event polling.

    Signed-off-by: Tejun Heo
    Cc: Jens Axboe
    Cc: Kay Sievers
    Cc: Laurent Vivier
    Cc: Benjamin Herrenschmidt

    Tejun Heo
     

05 Oct, 2010

1 commit

  • The block device drivers have all gained new lock_kernel
    calls from a recent pushdown, and some of the drivers
    were already using the BKL before.

    This turns the BKL into a set of per-driver mutexes.
    Still need to check whether this is safe to do.

    file=$1
    name=$2
    if grep -q lock_kernel ${file} ; then
    if grep -q 'include.*linux.mutex.h' ${file} ; then
    sed -i '/include.*/d' ${file}
    else
    sed -i 's/include.*.*$/include /g' ${file}
    fi
    sed -i ${file} \
    -e "/^#include.*linux.mutex.h/,$ {
    1,/^\(static\|int\|long\)/ {
    /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

    } }" \
    -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
    -e '/[ ]*cycle_kernel_lock();/d'
    else
    sed -i -e '/include.*\/d' ${file} \
    -e '/cycle_kernel_lock()/d'
    fi

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

08 Aug, 2010

2 commits

  • The open and release block_device_operations are currently
    called with the BKL held. In order to change that, we must
    first make sure that all drivers that currently rely
    on this have no regressions.

    This blindly pushes the BKL into all .open and .release
    operations for all block drivers to prepare for the
    next step. The drivers can subsequently replace the BKL
    with their own locks or remove it completely when it can
    be shown that it is not needed.

    The functions blkdev_get and blkdev_put are the only
    remaining users of the big kernel lock in the block
    layer, besides a few uses in the ioctl code, none
    of which need to serialize with blkdev_{get,put}.

    Most of these two functions is also under the protection
    of bdev->bd_mutex, including the actual calls to
    ->open and ->release, and the common code does not
    access any global data structures that need the BKL.

    Signed-off-by: Arnd Bergmann
    Acked-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Arnd Bergmann
     
  • As a preparation for the removal of the big kernel
    lock in the block layer, this removes the BKL
    from the common ioctl handling code, moving it
    into every single driver still using it.

    Signed-off-by: Arnd Bergmann
    Acked-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Arnd Bergmann
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

28 Feb, 2010

1 commit

  • Adjust the platform device code to conform with the code style used in the
    rest of this patch series. No need to name resources nor to register
    devices which are not applicable.

    Signed-off-by: Finn Thain
    Signed-off-by: Geert Uytterhoeven

    Finn Thain
     

22 Sep, 2009

1 commit


11 May, 2009

3 commits

  • Till now block layer allowed two separate modes of request execution.
    A request is always acquired from the request queue via
    elv_next_request(). After that, drivers are free to either dequeue it
    or process it without dequeueing. Dequeue allows elv_next_request()
    to return the next request so that multiple requests can be in flight.

    Executing requests without dequeueing has its merits mostly in
    allowing drivers for simpler devices which can't do sg to deal with
    segments only without considering request boundary. However, the
    benefit this brings is dubious and declining while the cost of the API
    ambiguity is increasing. Segment based drivers are usually for very
    old or limited devices and as converting to dequeueing model isn't
    difficult, it doesn't justify the API overhead it puts on block layer
    and its more modern users.

    Previous patches converted all block low level drivers to dequeueing
    model. This patch completes the API transition by...

    * renaming elv_next_request() to blk_peek_request()

    * renaming blkdev_dequeue_request() to blk_start_request()

    * adding blk_fetch_request() which is combination of peek and start

    * disallowing completion of queued (not started) requests

    * applying new API to all LLDs

    Renamings are for consistency and to break out of tree code so that
    it's apparent that out of tree drivers need updating.

    [ Impact: block request issue API cleanup, no functional change ]

    Signed-off-by: Tejun Heo
    Cc: Rusty Russell
    Cc: James Bottomley
    Cc: Mike Miller
    Cc: unsik Kim
    Cc: Paul Clements
    Cc: Tim Waugh
    Cc: Geert Uytterhoeven
    Cc: David S. Miller
    Cc: Laurent Vivier
    Cc: Jeff Garzik
    Cc: Jeremy Fitzhardinge
    Cc: Grant Likely
    Cc: Adrian McMenamin
    Cc: Stephen Rothwell
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Borislav Petkov
    Cc: Sergei Shtylyov
    Cc: Alex Dubov
    Cc: Pierre Ossman
    Cc: David Woodhouse
    Cc: Markus Lidel
    Cc: Stefan Weinhuber
    Cc: Martin Schwidefsky
    Cc: Pete Zaitcev
    Cc: FUJITA Tomonori
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • swim processes requests one-by-one synchronously and can easily be
    converted to dequeuing model. Convert it.

    [ Impact: dequeue in-flight request ]

    Signed-off-by: Tejun Heo
    Cc: Laurent Vivier
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • With recent cleanups, there is no place where low level driver
    directly manipulates request fields. This means that the 'hard'
    request fields always equal the !hard fields. Convert all
    rq->sectors, nr_sectors and current_nr_sectors references to
    accessors.

    While at it, drop superflous blk_rq_pos() < 0 test in swim.c.

    [ Impact: use pos and nr_sectors accessors ]

    Signed-off-by: Tejun Heo
    Acked-by: Geert Uytterhoeven
    Tested-by: Grant Likely
    Acked-by: Grant Likely
    Tested-by: Adrian McMenamin
    Acked-by: Adrian McMenamin
    Acked-by: Mike Miller
    Cc: James Bottomley
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Borislav Petkov
    Cc: Sergei Shtylyov
    Cc: Eric Moore
    Cc: Alan Stern
    Cc: FUJITA Tomonori
    Cc: Pete Zaitcev
    Cc: Stephen Rothwell
    Cc: Paul Clements
    Cc: Tim Waugh
    Cc: Jeff Garzik
    Cc: Jeremy Fitzhardinge
    Cc: Alex Dubov
    Cc: David Woodhouse
    Cc: Martin Schwidefsky
    Cc: Dario Ballabio
    Cc: David S. Miller
    Cc: Rusty Russell
    Cc: unsik Kim
    Cc: Laurent Vivier
    Signed-off-by: Jens Axboe

    Tejun Heo
     

28 Apr, 2009

2 commits

  • swim curiously tries to update request parameters before calling
    __blk_end_request() when __blk_end_request() will do it anyway and
    unnecessarily checks whether current_nr_sectors is zero right after
    fetching.

    Drop unnecessary stuff and use standard block layer mechanisms.

    [ Impact: cleanup ]

    Signed-off-by: Tejun Heo
    Cc: Laurent Vivier
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • end_request() has been kept around for backward compatibility;
    however, it's about time for it to go away.

    * There aren't too many users left.

    * Its use of @updtodate is pretty confusing.

    * In some cases, newer code ends up using mixture of end_request() and
    [__]blk_end_request[_all](), which is way too confusing.

    So, add [__]blk_end_request_cur() and replace end_request() with it.
    Most conversions are straightforward. Noteworthy ones are...

    * paride/pcd: next_request() updated to take 0/-errno instead of 1/0.

    * paride/pf: pf_end_request() and next_request() updated to take
    0/-errno instead of 1/0.

    * xd: xd_readwrite() updated to return 0/-errno instead of 1/0.

    * mtd/mtd_blkdevs: blktrans_discard_request() updated to return
    0/-errno instead of 1/0. Unnecessary local variable res
    initialization removed from mtd_blktrans_thread().

    [ Impact: cleanup ]

    Signed-off-by: Tejun Heo
    Acked-by: Joerg Dorchain
    Acked-by: Geert Uytterhoeven
    Acked-by: Grant Likely
    Acked-by: Laurent Vivier
    Cc: Tim Waugh
    Cc: Stephen Rothwell
    Cc: Paul Mackerras
    Cc: Jeremy Fitzhardinge
    Cc: Markus Lidel
    Cc: David Woodhouse
    Cc: Pete Zaitcev
    Cc: unsik Kim

    Tejun Heo