08 Dec, 2006

3 commits

  • There was lots of #ifdef noise in the kernel due to hotcpu_notifier(fn,
    prio) not correctly marking 'fn' as used in the !HOTPLUG_CPU case, and thus
    generating compiler warnings of unused symbols, hence forcing people to add
    #ifdefs.

    the compiler can skip truly unused functions just fine:

    text data bss dec hex filename
    1624412 728710 3674856 6027978 5bfaca vmlinux.before
    1624412 728710 3674856 6027978 5bfaca vmlinux.after

    [akpm@osdl.org: topology.c fix]
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Replace all uses of kmem_cache_t with struct kmem_cache.

    The patch was generated using the following script:

    #!/bin/sh
    #
    # Replace one string by another in all the kernel sources.
    #

    set -e

    for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
    quilt add $file
    sed -e "1,\$s/$1/$2/g" $file >/tmp/$$
    mv /tmp/$$ $file
    quilt refresh
    done

    The script was run like this

    sh replace kmem_cache_t "struct kmem_cache"

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • The patch (as824b) makes percpu_free() ignore NULL arguments, as one would
    expect for a deallocation routine. (Note that free_percpu is #defined as
    percpu_free in include/linux/percpu.h.) A few callers are updated to remove
    now-unneeded tests for NULL. A few other callers already seem to assume
    that passing a NULL pointer to percpu_free() is okay!

    The patch also removes an unnecessary NULL check in percpu_depopulate().

    Signed-off-by: Alan Stern
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Stern
     

06 Dec, 2006

3 commits

  • Conflicts:

    drivers/pcmcia/ds.c

    Fix up merge failures with Linus's head and fix new compile failures.

    Signed-Off-By: David Howells

    David Howells
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (73 commits)
    [SCSI] aic79xx: Add ASC-29320LPE ids to driver
    [SCSI] stex: version update
    [SCSI] stex: change wait loop code
    [SCSI] stex: add new device type support
    [SCSI] stex: update device id info
    [SCSI] stex: adjust default queue length
    [SCSI] stex: add value check in hard reset routine
    [SCSI] stex: fix controller_info command handling
    [SCSI] stex: fix biosparam calculation
    [SCSI] megaraid: fix MMIO casts
    [SCSI] tgt: fix undefined flush_dcache_page() problem
    [SCSI] libsas: better error handling in sas_expander.c
    [SCSI] lpfc 8.1.11 : Change version number to 8.1.11
    [SCSI] lpfc 8.1.11 : Misc Fixes
    [SCSI] lpfc 8.1.11 : Add soft_wwnn sysfs attribute, rename soft_wwn_enable
    [SCSI] lpfc 8.1.11 : Removed decoding of PCI Subsystem Id
    [SCSI] lpfc 8.1.11 : Add MSI (Message Signalled Interrupts) support
    [SCSI] lpfc 8.1.11 : Adjust LOG_FCP logging
    [SCSI] lpfc 8.1.11 : Fix Memory leaks
    [SCSI] lpfc 8.1.11 : Fix lpfc_multi_ring_support
    ...

    Linus Torvalds
     
  • Conflicts:

    drivers/ata/libata-scsi.c
    include/linux/libata.h

    Futher merge of Linus's head and compilation fixups.

    Signed-Off-By: David Howells

    David Howells
     

05 Dec, 2006

2 commits

  • Conflicts:

    drivers/infiniband/core/iwcm.c
    drivers/net/chelsio/cxgb2.c
    drivers/net/wireless/bcm43xx/bcm43xx_main.c
    drivers/net/wireless/prism54/islpci_eth.c
    drivers/usb/core/hub.h
    drivers/usb/input/hid-core.c
    net/core/netpoll.c

    Fix up merge failures with Linus's head and fix new compilation failures.

    Signed-Off-By: David Howells

    David Howells
     
  • CONFIG_LBD and CONFIG_LSF are spread into asm/types.h for no particularly
    good reason.

    Centralising the definition in linux/types.h means that arch maintainers
    don't need to bother adding it, as well as fixing the problem with
    x86-64 users being asked to make a decision that has absolutely no
    effect.

    The H8/300 porters seem particularly confused since I'm not aware of any
    microcontrollers that need to support 2TB filesystems.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     

04 Dec, 2006

2 commits


01 Dec, 2006

3 commits

  • - ->init_queue() does not need the elevator passed in
    - ->put_request() is a hot path and need not have the queue passed in
    - cfq_update_io_seektime() does not need cfqd passed in

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • This patch modifies blk_rq_map/unmap_user() and the cdrom and scsi_ioctl.c
    users so that it supports requests larger than bio by chaining them together.

    Signed-off-by: Mike Christie
    Signed-off-by: Jens Axboe

    Mike Christie
     
  • This adds a new timestamp message to blktrace, giving the timeofday when
    we starting tracing. This helps user space correlate block trace events
    with eg an application strace.

    This requires a (compatible) update to blkparse. The changed blkparse
    is still able to process traces generated by older kernels, and older
    versions of blkparse should silently ignore the new records (because
    they have a pid of 0).

    Signed-off-by: Olaf Kirch
    Signed-off-by: Jens Axboe

    Olaf Kirch
     

23 Nov, 2006

1 commit


22 Nov, 2006

1 commit

  • Pass the work_struct pointer to the work function rather than context data.
    The work function can use container_of() to work out the data.

    For the cases where the container of the work_struct may go away the moment the
    pending bit is cleared, it is made possible to defer the release of the
    structure by deferring the clearing of the pending bit.

    To make this work, an extra flag is introduced into the management side of the
    work_struct. This governs auto-release of the structure upon execution.

    Ordinarily, the work queue executor would release the work_struct for further
    scheduling or deallocation by clearing the pending bit prior to jumping to the
    work function. This means that, unless the driver makes some guarantee itself
    that the work_struct won't go away, the work function may not access anything
    else in the work_struct or its container lest they be deallocated.. This is a
    problem if the auxiliary data is taken away (as done by the last patch).

    However, if the pending bit is *not* cleared before jumping to the work
    function, then the work function *may* access the work_struct and its container
    with no problems. But then the work function must itself release the
    work_struct by calling work_release().

    In most cases, automatic release is fine, so this is the default. Special
    initiators exist for the non-auto-release case (ending in _NAR).

    Signed-Off-By: David Howells

    David Howells
     

17 Nov, 2006

1 commit

  • ATAPI devices transfer fixed number of bytes for CDBs (12 or 16). Some
    ATAPI devices choke when shorter CDB is used and the left bytes contain
    garbage. Block SG_IO cleared left bytes but SCSI SG_IO didn't. This patch
    makes SCSI SG_IO clear it and simplify CDB clearing in block SG_IO.

    Signed-off-by: Tejun Heo
    Cc: Mathieu Fluhr
    Cc: James Bottomley
    Cc: Douglas Gilbert
    Acked-by: Jens Axboe
    Cc:
    Acked-by: Jeff Garzik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

16 Nov, 2006

1 commit


14 Nov, 2006

1 commit

  • Contrary to what the name misleads you to believe, SG_DXFER_TO_FROM_DEV
    is really just a normal read seen from the device side.

    This patch fixes http://lkml.org/lkml/2006/10/13/100

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

04 Nov, 2006

1 commit


01 Nov, 2006

2 commits

  • In very rare circumstances would we be pruning a merged request and at
    the same time delete the implicated cfqq from the rr_list, and not readd
    it when the merged request got added. This could cause io stalls until
    that process issued io again.

    Fix it up by putting the rr_list add handling into cfq_add_rq_rb(),
    identical to how pruning is handled in cfq_del_rq_rb(). This fixes a
    hang reproducible with fsx-linux.

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • Partitions are not limited to live within a device. So we should range
    check after partition mapping.

    Note that 'maxsector' was being used for two different things. I have
    split off the second usage into 'old_sector' so that maxsector can be still
    be used for it's primary usage later in the function.

    Cc: Jens Axboe
    Signed-off-by: Neil Brown
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     

31 Oct, 2006

2 commits

  • When the ioprio code recently got juggled a bit, a bug was introduced.
    changed_ioprio() is no longer called with interrupts disabled, so using
    plain spin_lock() on the queue_lock is a bug.

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • If cfq_set_request() is called for a new process AND a non-fs io
    request (so that __GFP_WAIT may not be set), cfq_cic_link() may
    use spin_lock_irq() and spin_unlock_irq() with interrupts already
    disabled.

    Fix is to always use irq safe locking in cfq_cic_link()

    Acked-By: Arjan van de Ven
    Acked-by: Ingo Molnar
    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

21 Oct, 2006

2 commits

  • Separate out the concept of "queue congestion" from "backing-dev congestion".
    Congestion is a backing-dev concept, not a queue concept.

    The blk_* congestion functions are retained, as wrappers around the core
    backing-dev congestion functions.

    This proper layering is needed so that NFS can cleanly use the congestion
    functions, and so that CONFIG_BLOCK=n actually links.

    Cc: "Thomas Maier"
    Cc: "Jens Axboe"
    Cc: Trond Myklebust
    Cc: David Howells
    Cc: Peter Osterlund
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Export the clear_queue_congested() and set_queue_congested() functions
    located in ll_rw_blk.c

    The functions are renamed to blk_clear_queue_congested() and
    blk_set_queue_congested().

    (needed in the pktcdvd driver's bio write congestion control)

    Signed-off-by: Thomas Maier
    Cc: Peter Osterlund
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Maier
     

12 Oct, 2006

2 commits


05 Oct, 2006

1 commit


03 Oct, 2006

1 commit

  • Export blkdev_driver_ioctl for device-mapper.

    If we get as far as the device-mapper ioctl handler, we know the ioctl is not
    a standard block layer BLK* one, so we don't need to check for them a second
    time and can call blkdev_driver_ioctl() directly.

    Signed-off-by: Alasdair G Kergon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alasdair G Kergon
     

01 Oct, 2006

11 commits

  • All on stack DECLARE_COMPLETIONs should be replaced by:
    DECLARE_COMPLETION_ONSTACK

    Signed-off-by: Peter Zijlstra
    Acked-by: Ingo Molnar
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     
  • It's too easy for people to shoot themselves in the foot, and it
    only makes sense for embedded folks anyway.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • If we share the tag map between two or more queues, then we cannot
    use __set_bit() to set the bit. In fact we need to make sure we
    atomically acquire this tag, so loop using test_and_set_bit() to
    protect from that.

    Noticed by Mike Christie

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • As people often look for the copyright in files to see who to mail,
    update the link to a neutral one.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Make it possible to disable the block layer. Not all embedded devices require
    it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
    the block layer to be present.

    This patch does the following:

    (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
    support.

    (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
    an item that uses the block layer. This includes:

    (*) Block I/O tracing.

    (*) Disk partition code.

    (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.

    (*) The SCSI layer. As far as I can tell, even SCSI chardevs use the
    block layer to do scheduling. Some drivers that use SCSI facilities -
    such as USB storage - end up disabled indirectly from this.

    (*) Various block-based device drivers, such as IDE and the old CDROM
    drivers.

    (*) MTD blockdev handling and FTL.

    (*) JFFS - which uses set_bdev_super(), something it could avoid doing by
    taking a leaf out of JFFS2's book.

    (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
    linux/elevator.h contingent on CONFIG_BLOCK being set. sector_div() is,
    however, still used in places, and so is still available.

    (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
    parts of linux/fs.h.

    (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.

    (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.

    (*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
    is not enabled.

    (*) fs/no-block.c is created to hold out-of-line stubs and things that are
    required when CONFIG_BLOCK is not set:

    (*) Default blockdev file operations (to give error ENODEV on opening).

    (*) Makes some /proc changes:

    (*) /proc/devices does not list any blockdevs.

    (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.

    (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.

    (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
    given command other than Q_SYNC or if a special device is specified.

    (*) In init/do_mounts.c, no reference is made to the blockdev routines if
    CONFIG_BLOCK is not defined. This does not prohibit NFS roots or JFFS2.

    (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
    error ENOSYS by way of cond_syscall if so).

    (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
    CONFIG_BLOCK is not set, since they can't then happen.

    Signed-Off-By: David Howells
    Signed-off-by: Jens Axboe

    David Howells
     
  • This patch kills a few lines of code in blktrace by making use of
    on_each_cpu().

    Signed-off-by: Martin Peschke
    Signed-off-by: Jens Axboe

    Martin Peschke
     
  • We don't need to disable irqs to clear current->io_context, it is protected
    by ->alloc_lock. Even IF it was possible to submit I/O from IRQ on behalf of
    current this irq_disable() can't help: current_io_context() will re-instantiate
    ->io_context after irq_enable().

    We don't need task_lock() or local_irq_disable() to clear ioc->task. This can't
    prevent other CPUs from playing with our io_context anyway.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Jens Axboe

    Oleg Nesterov
     
  • Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Give meta data reads preference over regular reads, as the process
    often needs to get that out of the way to do the io it was actually
    interested in.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • We can use this information for making more intelligent priority
    decisions, and it will also be useful for blktrace.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • It can make sense to set read-ahead larger than a single request.
    We should not be enforcing such policy on the user. Additionally,
    using the BLKRASET ioctl doesn't impose such a restriction. So
    additionally we now expose identical behaviour through the two.

    Issue also reported by Anton

    Signed-off-by: Jens Axboe

    Jens Axboe