09 May, 2013

1 commit

  • Pull block core updates from Jens Axboe:

    - Major bit is Kents prep work for immutable bio vecs.

    - Stable candidate fix for a scheduling-while-atomic in the queue
    bypass operation.

    - Fix for the hang on exceeded rq->datalen 32-bit unsigned when merging
    discard bios.

    - Tejuns changes to convert the writeback thread pool to the generic
    workqueue mechanism.

    - Runtime PM framework, SCSI patches exists on top of these in James'
    tree.

    - A few random fixes.

    * 'for-3.10/core' of git://git.kernel.dk/linux-block: (40 commits)
    relay: move remove_buf_file inside relay_close_buf
    partitions/efi.c: replace useless kzalloc's by kmalloc's
    fs/block_dev.c: fix iov_shorten() criteria in blkdev_aio_read()
    block: fix max discard sectors limit
    blkcg: fix "scheduling while atomic" in blk_queue_bypass_start
    Documentation: cfq-iosched: update documentation help for cfq tunables
    writeback: expose the bdi_wq workqueue
    writeback: replace custom worker pool implementation with unbound workqueue
    writeback: remove unused bdi_pending_list
    aoe: Fix unitialized var usage
    bio-integrity: Add explicit field for owner of bip_buf
    block: Add an explicit bio flag for bios that own their bvec
    block: Add bio_alloc_pages()
    block: Convert some code to bio_for_each_segment_all()
    block: Add bio_for_each_segment_all()
    bounce: Refactor __blk_queue_bounce to not use bi_io_vec
    raid1: use bio_copy_data()
    pktcdvd: Use bio_reset() in disabled code to kill bi_idx usage
    pktcdvd: use bio_copy_data()
    block: Add bio_copy_data()
    ...

    Linus Torvalds
     

01 May, 2013

3 commits


30 Apr, 2013

1 commit

  • Currently remove_buf_file callback is called from from kobject
    release method. This result in follow issue:
    # blktrace -d /dev/sda1 -d /dev/sda -o test

    blktrace_setup()
    dir = create_dir()
    rchan = relay_open(dir,...)
    ->create_buf_file_callback
    buf_file = debugfs_create_file(dir, )

    Userspace will open buf_file.
    Later we make a decision to stop tracing
    blktrace_down()
    relay_close(rhcan) /* just decrement kobj reference */
    /* since it is not zero then callback not called */
    debugfs_remove(dir) /* FAIL due to non empty dir */

    Later user space will close the file and file will be deleted,
    but directory still exist.
    user_space_close()
    ->file_release
    ->release_buf_file_callback
    ->debugfs_remove(buf_file
    ## TESTCASE:
    # blktrace -d /dev/sda1 -d /dev/sda -o test
    # After that blktrace infrastructure will remain broken in
    # an unusable state so: blktrace -d /dev/sda1 will not work.

    In fact this is general issue, blktrace is just one of examples.
    We can not reliably remove parent dir until all users close the
    buf_file.

    Solution: We don't have to wait that long. File should be deleted inside
    relay_close_buf().

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jens Axboe

    Dmitry Monakhov
     

23 Feb, 2013

1 commit


14 Jun, 2012

1 commit

  • Dave Jones reported a kernel BUG at mm/slub.c:3474! triggered
    by splice_shrink_spd() called from vmsplice_to_pipe()

    commit 35f3d14dbbc5 (pipe: add support for shrinking and growing pipes)
    added capability to adjust pipe->buffers.

    Problem is some paths don't hold pipe mutex and assume pipe->buffers
    doesn't change for their duration.

    Fix this by adding nr_pages_max field in struct splice_pipe_desc, and
    use it in place of pipe->buffers where appropriate.

    splice_shrink_spd() loses its struct pipe_inode_info argument.

    Reported-by: Dave Jones
    Signed-off-by: Eric Dumazet
    Cc: Jens Axboe
    Cc: Alexander Viro
    Cc: Tom Herbert
    Cc: stable # 2.6.35
    Tested-by: Dave Jones
    Signed-off-by: Jens Axboe

    Eric Dumazet
     

10 Feb, 2012

1 commit


04 Jan, 2012

1 commit


31 Oct, 2011

1 commit

  • The changed files were only including linux/module.h for the
    EXPORT_SYMBOL infrastructure, and nothing else. Revector them
    onto the isolated export header for faster compile times.

    Nothing to see here but a whole lot of instances of:

    -#include
    +#include

    This commit is only changing the kernel dir; next targets
    will probably be mm, fs, the arch dirs, etc.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

05 Nov, 2010

1 commit


28 May, 2010

1 commit


22 May, 2010

1 commit


07 Mar, 2010

1 commit

  • "ret" needs to be signed or the error handling for splice_to_pipe() won't
    work correctly.

    Signed-off-by: Dan Carpenter
    Cc: Tom Zanussi
    Cc: Jens Axboe
    Cc: Lai Jiangshan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     

16 Dec, 2009

1 commit


28 Sep, 2009

1 commit


06 Apr, 2009

1 commit

  • * 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (413 commits)
    tracing, net: fix net tree and tracing tree merge interaction
    tracing, powerpc: fix powerpc tree and tracing tree interaction
    ring-buffer: do not remove reader page from list on ring buffer free
    function-graph: allow unregistering twice
    trace: make argument 'mem' of trace_seq_putmem() const
    tracing: add missing 'extern' keywords to trace_output.h
    tracing: provide trace_seq_reserve()
    blktrace: print out BLK_TN_MESSAGE properly
    blktrace: extract duplidate code
    blktrace: fix memory leak when freeing struct blk_io_trace
    blktrace: fix blk_probes_ref chaos
    blktrace: make classic output more classic
    blktrace: fix off-by-one bug
    blktrace: fix the original blktrace
    blktrace: fix a race when creating blk_tree_root in debugfs
    blktrace: fix timestamp in binary output
    tracing, Text Edit Lock: cleanup
    tracing: filter fix for TRACE_EVENT_FORMAT events
    ftrace: Using FTRACE_WARN_ON() to check "freed record" in ftrace_release()
    x86: kretprobe-booster interrupt emulation code fix
    ...

    Fix up trivial conflicts in
    arch/parisc/include/asm/ftrace.h
    include/linux/memory.h
    kernel/extable.c
    kernel/module.c

    Linus Torvalds
     

03 Apr, 2009

1 commit

  • Fix possible loss/corruption of produced subbufs in
    relay_subbufs_consumed().

    When buf->subbufs_produced wraps around after UINT_MAX and
    buf->subbufs_consumed is still < UINT_MAX, the condition

    if (buf->subbufs_consumed > buf->subbufs_produced)

    will be true even for certain valid values of subbufs_consumed. This may
    lead to loss or corruption of produced subbufs.

    Signed-off-by: Aravind Srinivasan
    Cc: Tom Zanussi
    Cc: Tom Zanussi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Aravind Srinivasan
     

02 Apr, 2009

1 commit


19 Feb, 2009

1 commit

  • Impact: new timer API

    Based on an idea from Martin Josefsson with the help of
    Patrick McHardy and Stephen Hemminger:

    introduce the mod_timer_pending() API which is a mod_timer()
    offspring that is an invariant on already removed timers.

    (regular mod_timer() re-activates non-pending timers.)

    This is useful for the networking code in that it can
    allow unserialized mod_timer_pending() timer-forwarding
    calls, but a single del_timer*() will stop the timer
    from being reactivated again.

    Also while at it:

    - optimize the regular mod_timer() path some more, the
    timer-stat and a debug check was needlessly duplicated
    in __mod_timer().

    - make the exports come straight after the function, as
    most other exports in timer.c already did.

    - eliminate __mod_timer() as an external API, change the
    users to mod_timer().

    The regular mod_timer() code path is not impacted
    significantly, due to inlining optimizations and due to
    the simplifications.

    Based-on-patch-from: Stephen Hemminger
    Acked-by: Stephen Hemminger
    Cc: "David S. Miller"
    Cc: Patrick McHardy
    Cc: netdev@vger.kernel.org
    Cc: Oleg Nesterov
    Cc: Andrew Morton
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

03 Feb, 2009

1 commit


19 Jan, 2009

1 commit


30 Dec, 2008

1 commit

  • Impact: turn boot crash into boot warning

    This BUG() can trigger:

    [ 16.684131] initcall fail_page_alloc_debugfs+0x0/0xc1 returned 0 after 0 usecs
    [ 16.692035] calling kmemtrace_setup_late+0x0/0xd5 @ 1
    [ 16.700087] relay_late_setup_files: CPU 1 has no buffer, it must have!
    [ 16.704044] ------------[ cut here ]------------
    [ 16.708030] kernel BUG at kernel/relay.c:680!
    [ 16.708030] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 16.708030] last sysfs file:
    [ 16.708030]
    [ 16.708030] Pid: 1, comm: swapper Not tainted (2.6.28-tip-03903-g9a39f58-dirty #13207) System Product Name
    [ 16.708030] EIP: 0060:[] EFLAGS: 00010246 CPU: 1
    [ 16.708030] EIP is at relay_late_setup_files+0x8c/0x176

    Reduce it to a more reportable WARN_ONCE().

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

11 Dec, 2008

1 commit

  • Running kmemtraced, which uses splice() on relayfs, causes a hard lock on
    x86-64 SMP. As described by Tom Zanussi:

    It looks like you hit the same problem as described here:

    commit 8191ecd1d14c6914c660dfa007154860a7908857

    splice: fix infinite loop in generic_file_splice_read()

    relay uses the same loop but it never got noticed or fixed.

    Cc: Mathieu Desnoyers
    Tested-by: Pekka Enberg
    Signed-off-by: Tom Zanussi
    Signed-off-by: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tom Zanussi
     

18 Nov, 2008

1 commit

  • relay_open() will close allocated buffers when failed.
    but if cpu offlined, some buffer will not be closed.
    this patch fixed it.

    and did cleanup for relay_reset() too.

    Signed-off-by: Lai Jiangshan
    Signed-off-by: Jens Axboe

    Lai Jiangshan
     

06 Aug, 2008

1 commit

  • In relay's current read implementation, if the buffer is completely full
    but hasn't triggered the buffer-full condition (i.e. the last write
    didn't cross the subbuffer boundary) and the last subbuffer is exactly
    full, the subbuffer accounting code erroneously finds nothing available.
    This patch fixes the problem.

    Signed-off-by: Tom Zanussi
    Cc: Eduard - Gabriel Munteanu
    Cc: Pekka Enberg
    Cc: Jens Axboe
    Cc: Mathieu Desnoyers
    Cc: Andrea Righi
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tom Zanussi
     

27 Jul, 2008

1 commit

  • Allows one to create and use a channel with no associated files. Files
    can be initialized later. This is useful in scenarios such as logging in
    early code, before VFS is up. Therefore, such channels can be created and
    used as soon as kmem_cache_init() completed.

    This is needed by kmemtrace to do tracing in early kernel code.

    [kosaki.motohiro@jp.fujitsu.com: build fix]
    Signed-off-by: Eduard - Gabriel Munteanu
    Cc: Tom Zanussi
    Signed-off-by: KOSAKI Motohiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eduard - Gabriel Munteanu
     

28 May, 2008

1 commit


08 May, 2008

1 commit


29 Apr, 2008

3 commits

  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    block: Skip I/O merges when disabled
    block: add large command support
    block: replace sizeof(rq->cmd) with BLK_MAX_CDB
    ide: use blk_rq_init() to initialize the request
    block: use blk_rq_init() to initialize the request
    block: rename and export rq_init()
    block: no need to initialize rq->cmd with blk_get_request
    block: no need to initialize rq->cmd in prepare_flush_fn hook
    block/blk-barrier.c:blk_ordered_cur_seq() mustn't be inline
    block/elevator.c:elv_rq_merge_ok() mustn't be inline
    block: make queue flags non-atomic
    block: add dma alignment and padding support to blk_rq_map_kern
    unexport blk_max_pfn
    ps3disk: Remove superfluous cast
    block: make rq_init() do a full memset()
    relay: fix splice problem

    Linus Torvalds
     
  • Use vmalloc() and memset() instead of kcalloc() to allocate a page* array when
    the array size is bigger than one page. This enables relayfs to support
    bigger relay buffers than 64MB on 4k-page system, 512MB on 16k-page system.

    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: Masami Hiramatsu
    Cc: David Wilder
    Reviewed-by: Tom Zanussi
    Reviewed-by: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masami Hiramatsu
     
  • Splice isn't always incrementing the ppos correctly, which broke
    relay splice.

    Signed-off-by: Tom Zanussi
    Signed-off-by: Jens Axboe

    Tom Zanussi
     

26 Mar, 2008

2 commits


17 Mar, 2008

1 commit


07 Feb, 2008

1 commit

  • Convert relay from nopage to fault.
    Remove redundant vma range checks.
    Switch from OOM to SIGBUS if the resource is not available.

    Signed-off-by: Nick Piggin
    Cc: Tom Zanussi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

04 Feb, 2008

1 commit

  • Drivers that register a ->fault handler, but do not range-check the
    offset argument, must set VM_DONTEXPAND in the vm_flags in order to
    prevent an expanding mremap from overflowing the resource.

    I've audited the tree and attempted to fix these problems (usually by
    adding VM_DONTEXPAND where it is not obvious).

    Signed-off-by: Nick Piggin
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

19 Oct, 2007

1 commit


01 Aug, 2007

1 commit

  • Coverity spotted what looks like a real possible case of using a variable
    after it has been freed. The problem is in
    kernel/relay.c::relay_open_buf()

    If the code hits "goto free_buf;" it ends up in this code :

    free_buf:
    relay_destroy_buf(buf); cb->create_buf_file(), so that looks like a clear error to
    me).

    The patch simply sets 'buf' to NULL after the call to
    relay_destroy_buf(buf); - as far as I can see that should take care of the
    problem.

    The patch also corrects a reference to a documentation file while
    I was at it.

    Note from Mathieu: the documentation reference change should have been
    done in a separate patch, but I guess no one will really care.

    Signed-off-by: Jesper Juhl
    Acked-by: "David J. Wilder"
    Tested-by: "David J. Wilder"
    Signed-off-by: Mathieu Desnoyers
    Cc: Tom Zanussi
    Cc: Karim Yaghmour
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jesper Juhl
     

20 Jul, 2007

1 commit