27 Jun, 2006

40 commits

  • This was spotted by coverity #id 1300. Since the array has only four
    elements, we should just use those four.

    Signed-off-by: Eric Sesterhenn
    Acked-by: Sean Hefty
    Signed-off-by: Linus Torvalds

    Eric Sesterhenn
     
  • This reverts commit c7b2eff059fcc2d1b7085ee3d84b79fd657a537b.

    Hugh Dickins explains:

    "It seems too little tested: "losetup -d /dev/loop0" fails with
    EINVAL because nothing sets lo_thread; but even when you patch
    loop_thread() to set lo->lo_thread = current, it can't survive
    more than a few dozen iterations of the loop below (with a tmpfs
    mounted on /tst):

    j=0
    cp /dev/zero /tst
    while :
    do
    let j=j+1
    echo "Doing pass $j"
    losetup /dev/loop0 /tst/zero
    mkfs -t ext2 -b 1024 /dev/loop0 >/dev/null 2>&1
    mount -t ext2 /dev/loop0 /mnt
    umount /mnt
    losetup -d /dev/loop0
    done

    it collapses with failed ioctl then BUG_ON(!bio).

    I think the original lo_done completion was more subtle and safe
    than the kthread conversion has allowed for."

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (40 commits)
    kbuild: trivial fixes in Makefile
    kbuild: adding symbols in Kconfig and defconfig to TAGS
    kbuild: replace abort() with exit(1)
    kbuild: support for %.symtypes files
    kbuild: fix silentoldconfig recursion
    kbuild: add option for stripping modules while installing them
    kbuild: kill some false positives from modpost
    kbuild: export-symbol usage report generator
    kbuild: fix make -rR breakage
    kbuild: append -dirty for updated but uncommited changes
    kbuild: append git revision for all untagged commits
    kbuild: fix module.symvers parsing in modpost
    kbuild: ignore make's built-in rules & variables
    kbuild: bugfix with initramfs
    kbuild: modpost build fix
    kbuild: check license compatibility when building modules
    kbuild: export-type enhancement to modpost.c
    kbuild: add dependency on kernel.release to the package targets
    kbuild: `make kernelrelease' speedup
    kconfig: KCONFIG_OVERWRITECONFIG
    ...

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    [CRYPTO] tcrypt: Forbid tcrypt from being built-in
    [CRYPTO] aes: Add wrappers for assembly routines
    [CRYPTO] tcrypt: Speed benchmark support for digest algorithms
    [CRYPTO] tcrypt: Return -EAGAIN from module_init()
    [CRYPTO] api: Allow replacement when registering new algorithms
    [CRYPTO] api: Removed const from cra_name/cra_driver_name
    [CRYPTO] api: Added cra_init/cra_exit
    [CRYPTO] api: Fixed incorrect passing of context instead of tfm
    [CRYPTO] padlock: Rearrange context structure to reduce code size
    [CRYPTO] all: Pass tfm instead of ctx to algorithms
    [CRYPTO] digest: Remove unnecessary zeroing during init
    [CRYPTO] aes-i586: Get rid of useless function wrappers
    [CRYPTO] digest: Add alignment handling
    [CRYPTO] khazad: Use 32-bit reads on key

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/dtor/input:
    Input: iforce - remove some pointless casts
    Input: psmouse - add support for Intellimouse 4.0
    Input: atkbd - fix HANGEUL/HANJA keys
    Input: fix misspelling of Hangeul key
    Input: via-pmu - add input device support
    Input: rearrange exports
    Input: fix formatting to better follow CodingStyle
    Input: reset name, phys and uniq when unregistering
    Input: return correct size when reading modalias attribute
    Input: change my e-mail address in MAINTAINERS file
    Input: fix potential overflows in driver/input/keyboard
    Input: fix potential overflows in driver/input/touchscreen
    Input: fix potential overflows in driver/input/joystick
    Input: fix potential overflows in driver/input/mouse
    Input: fix accuracy of fixp-arith.h
    Input: iforce - use ENOSPC instead of ENOMEM
    Input: constify drivers/char/keyboard.c

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
    V4L/DVB (4227): Update this driver for recent header file movement.
    V4L/DVB (4223): Add V4L2_CID_MPEG_STREAM_VBI_FMT control
    V4L/DVB (4222): Always switch tuner mode when calling VIDIOC_S_FREQUENCY.
    V4L/DVB (4221): Add HM12 YUV format define.
    V4L/DVB (4219): Av7110: analog sound output of DVB-C rev 2.3
    V4L/DVB (4217): Fix a misplaced closing bracket/else, which caused swzigzag not to be called
    V4L/DVB (4215): Make VIDEO_CX88_BLACKBIRD a separate build option
    V4L/DVB (4214): Make VIDEO_CX2341X a selectable build option
    V4L/DVB (4213): Cx88: cleanups
    V4L/DVB (4211): Fix an Oops for all fe that have get_frontend_algo == NULL

    Linus Torvalds
     
  • * x86-64: (83 commits)
    [PATCH] x86_64: x86_64 stack usage debugging
    [PATCH] x86_64: (resend) x86_64 stack overflow debugging
    [PATCH] x86_64: msi_apic.c build fix
    [PATCH] x86_64: i386/x86-64 Add nmi watchdog support for new Intel CPUs
    [PATCH] x86_64: Avoid broadcasting NMI IPIs
    [PATCH] x86_64: fix apic error on bootup
    [PATCH] x86_64: enlarge window for stack growth
    [PATCH] x86_64: Minor string functions optimizations
    [PATCH] x86_64: Move export symbols to their C functions
    [PATCH] x86_64: Standardize i386/x86_64 handling of NMI_VECTOR
    [PATCH] x86_64: Fix modular pc speaker
    [PATCH] x86_64: remove sys32_ni_syscall()
    [PATCH] x86_64: Do not use -ffunction-sections for modules
    [PATCH] x86_64: Add cpu_relax to apic_wait_icr_idle
    [PATCH] x86_64: adjust kstack_depth_to_print default
    [PATCH] i386/x86-64: adjust /proc/interrupts column headings
    [PATCH] x86_64: Fix race in cpu_local_* on preemptible kernels
    [PATCH] x86_64: Fix fast check in safe_smp_processor_id
    [PATCH] x86_64: x86_64 setup.c - printing cmp related boottime information
    [PATCH] i386/x86-64/ia64: Move polling flag into thread_info_status
    ...

    Manual resolve of trivial conflict in arch/i386/kernel/Makefile

    Linus Torvalds
     
  • CC drivers/pci/msi-apic.o
    In file included from include/asm/msi.h:11,
    from drivers/pci/msi.h:71,
    from drivers/pci/msi-apic.c:8:
    include/asm/smp.h:103: error: syntax error before '->' token

    akpm: nasty. It appears to be

    static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)

    conflicting with include/asm-x86_64/mach_apic.h's

    #define cpu_mask_to_apicid (genapic->cpu_mask_to_apicid)

    And I don't know which patch in rc4-mm1 triggered this.

    Fixing this in the .c file seems wrong.

    Including asm/smp.h instead of linux/smp.h seems wrong too. Need that
    .config.

    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Christian Kujau
     
  • During some profiling I noticed that default_idle causes a lot of
    memory traffic. I think that is caused by the atomic operations
    to clear/set the polling flag in thread_info. There is actually
    no reason to make this atomic - only the idle thread does it
    to itself, other CPUs only read it. So I moved it into ti->status.

    Converted i386/x86-64/ia64 for now because that was the easiest
    way to fix ACPI which also manipulates these flags in its idle
    function.

    Cc: Nick Piggin
    Cc: Tony Luck
    Cc: Len Brown
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • - Rename the GART_IOMMU option to IOMMU to make clear it's not
    just for AMD
    - Rewrite the help text to better emphatise this fact
    - Make it an embedded option because too many people get it wrong.

    To my astonishment I discovered the aacraid driver tests this
    symbol directly. This looks quite broken to me - it's an internal
    implementation detail of the PCI DMA API. Can the maintainer
    please clarify what this test was intended to do?

    Cc: linux-scsi@vger.kernel.org
    Cc: alan@redhat.com
    Cc: markh@osdl.org
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • - Factor out the duplicated access/cache code into a single file
    * Shared between i386/x86-64.
    - Share flush code between AGP and IOMMU
    * Fix a bug: AGP didn't wait for end of flush before
    - Drop 8 northbridges limit and allocate dynamically
    - Add lock to serialize AGP and IOMMU GART flushes
    - Add PCI ID for next AMD northbridge
    - Random related cleanups

    The old K8 NUMA discovery code is unchanged. New systems
    should all use SRAT for this.

    Cc: "Navin Boppuri"
    Cc: Dave Jones
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
    [SPARC]: Add iomap interfaces.
    [OPENPROM]: Rewrite driver to use in-kernel device tree.
    [OPENPROMFS]: Rewrite using in-kernel device tree and seq_file.
    [SPARC]: Add unique device_node IDs and a ".node" property.
    [SPARC]: Add of_set_property() interface.
    [SPARC64]: Export auxio_register to modules.
    [SPARC64]: Add missing interfaces to dma-mapping.h
    [SPARC64]: Export _PAGE_IE to modules.
    [SPARC64]: Allow floppy driver to build modular.
    [SPARC]: Export x_bus_type to modules.
    [RIOWATCHDOG]: Fix the build.
    [CPWATCHDOG]: Fix the build.
    [PARPORT] sunbpp: Fix typo.
    [MTD] sun_uflash: Port to new EBUS device layer.

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (42 commits)
    [IOAT]: Do not dereference THIS_MODULE directly to set unsafe.
    [NETROM]: Fix possible null pointer dereference.
    [NET] netpoll: break recursive loop in netpoll rx path
    [NET] netpoll: don't spin forever sending to stopped queues
    [IRDA]: add some IBM think pads
    [ATM]: atm/mpc.c warning fix
    [NET]: skb_find_text ignores to argument
    [NET]: make net/core/dev.c:netdev_nit static
    [NET]: Fix GSO problems in dev_hard_start_xmit()
    [NET]: Fix CHECKSUM_HW GSO problems.
    [TIPC]: Fix incorrect correction to discovery timer frequency computation.
    [TIPC]: Get rid of dynamically allocated arrays in broadcast code.
    [TIPC]: Fixed link switchover bugs
    [TIPC]: Enhanced & cleaned up system messages; fixed 2 obscure memory leaks.
    [TIPC]: First phase of assert() cleanup
    [TIPC]: Disallow config operations that aren't supported in certain modes.
    [TIPC]: Fixed memory leak in tipc_link_send() when destination is unreachable
    [TIPC]: Added missing warning for out-of-memory condition
    [TIPC]: Withdrawing all names from nameless port now returns success, not error
    [TIPC]: Optimized argument validation done by connect().
    ...

    Linus Torvalds
     
  • Make needlessly global code static.

    Signed-off-by: Adrian Bunk
    Cc: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • It appears in /sys/mdX/md/dev-YYY/state
    and can be set or cleared by writing 'writemostly' or '-writemostly'
    respectively.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • The md/dev-XXX/state file can now be written:

    "faulty" simulates an error on the device
    "remove" removes the device from the array (if it is not busy)

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • This allows the state of an md/array to be directly controlled via sysfs and
    adds the ability to stop and array without tearing it down.

    Array states/settings:

    clear
    No devices, no size, no level
    Equivalent to STOP_ARRAY ioctl
    inactive
    May have some settings, but array is not active
    all IO results in error
    When written, doesn't tear down array, but just stops it
    suspended (not supported yet)
    All IO requests will block. The array can be reconfigured.
    Writing this, if accepted, will block until array is quiescent
    readonly
    no resync can happen. no superblocks get written.
    write requests fail
    read-auto
    like readonly, but behaves like 'clean' on a write request.

    clean - no pending writes, but otherwise active.
    When written to inactive array, starts without resync
    If a write request arrives then
    if metadata is known, mark 'dirty' and switch to 'active'.
    if not known, block and switch to write-pending
    If written to an active array that has pending writes, then fails.
    active
    fully active: IO and resync can be happening.
    When written to inactive array, starts with resync

    write-pending (not supported yet)
    clean, but writes are blocked waiting for 'active' to be written.

    active-idle
    like active, but no writes have been seen for a while (100msec).

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • - record the 'event' count on each individual device (they
    might sometimes be slightly different now)
    - add a new value for 'sb_dirty': '3' means that the super
    block only needs to be updated to record a cleandirty
    transition.
    - Prefer odd event numbers for dirty states and even numbers
    for clean states
    - Using all the above, don't update the superblock on
    a spare device if the update is just doing a clean-dirty
    transition. To accomodate this, a transition from
    dirty back to clean might now decrement the events counter
    if nothing else has changed.

    The net effect of this is that spare drives will not see any IO requests
    during normal running of the array, so they can go to sleep if that is what
    they want to do.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • When an array has a bitmap, a device can be removed and re-added and only
    blocks changes since the removal (as recorded in the bitmap) will be resynced.

    It should be possible to do a similar thing to arrays without bitmaps. i.e.
    if a device is removed and re-added and *no* changes have been made in the
    interim, then the add should not require a resync.

    This patch allows that option. This means that when assembling an array one
    device at a time (e.g. during device discovery) the array can be enabled
    read-only as soon as enough devices are available, but extra devices can still
    be added without causing a resync.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • As data_disks is *less* than raid_disks, the current test here is obviously
    wrong. And as the difference is already available in conf->max_degraded, it
    makes much more sense to use that.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • RAID5 recently changed to RAID456

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    akpm@osdl.org
     
  • I was experimenting with Linux SW raid today and found a spelling error when
    reading the help menus... (and fly spell found more).

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Justin Piszcz
     
  • The size calculation made assumtion which the new offset mode didn't
    follow. This gets the size right in all cases.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Fix problems with new bmap based access to bitmap files.

    1/ When not using a file based bitmap, attach a NULL list of buffers
    to each page so the common free_buffer routine can cope.
    2/ Use submit_bh to read as well as write, rather than vfs_read.
    This makes read and write more symetric.
    3/ sync the file before reading, to ensure that the page cache has no
    dirty pages that might get written out later.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • If md is asked to store a bitmap in a file, it tries to hold onto the page
    cache pages for that file, manipulate them directly, and call a cocktail of
    operations to write the file out. I don't believe this is a supportable
    approach.

    This patch changes the approach to use the same approach as swap files. i.e.
    bmap is used to enumerate all the block address of parts of the file and we
    write directly to those blocks of the device.

    swapfile only uses parts of the file that provide a full pages at contiguous
    addresses. We don't have that luxury so we have to cope with pages that are
    non-contiguous in storage. To handle this we attach buffers to each page, and
    store the addresses in those buffers.

    With this approach the pagecache may contain data which is inconsistent with
    what is on disk. To alleviate the problems this can cause, md invalidates the
    pagecache when releasing the file. If the file is to be examined while the
    array is active (a non-critical but occasionally useful function), O_DIRECT io
    must be used. And new version of mdadm will have support for this.

    This approach simplifies a lot of code:
    - we no longer need to keep a list of pages which we need to wait for,
    as the b_endio function can keep track of how many outstanding
    writes there are. This saves a mempool.
    - -EAGAIN returns from write_page are no longer possible (not sure if
    they ever were actually).

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • md/bitmap modifies i_writecount of a bitmap file to make sure that no-one else
    writes to it. The reverting of the change is sometimes done twice, and there
    is one error path where it is omitted.

    This patch tidies that up.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • bitmap_active is never called, and the BITMAP_ACTIVE flag is never users or
    tested, so discard them both.

    Also remove some out-of-date 'todo' comments.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • md/bitmap gets a collection of pages representing the bitmap when it
    initialises the bitmap, and puts all the references when discarding the
    bitmap.

    It also occasionally takes extra references without any good reason, and
    sometimes drops them ... though it doesn't always drop them, which can result
    in a memory leak.

    This patch removes the unnecessary 'get_page' calls, and the corresponding
    'put_page' calls.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • In particular, this means that we use 4 bits per page instead of a whole
    unsigned long.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • md/bitmap has some attributes per-page. Handling of these attributes in
    largely abstracted in set_page_attr and clear_page_attr. However
    get_page_attr exposes the format used to store them. So prior to changing
    that format, introduce test_page_attr instead of get_page_attr, and make
    appropriate usage changes.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • md/bitmap currently has a separate thread to wait for writes to the bitmap
    file to complete (as we cannot get a callback on that action).

    However this isn't needed as bitmap_unplug is called from process context and
    waits for the writeback thread to do it's work. The same result can be
    achieved by doing the waiting directly in bitmap_unplug.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • When "mdadm --grow /dev/mdX --bitmap=none" is used to remove a filebacked
    bitmap, the bitmap was disconnected from the array, but the file wasn't closed
    (until the array was stopped).

    The file also wasn't closed if adding the bitmap file failed.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • ... as raid5 sync_request is WAY too big.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • This patch makes the needlessly global md_print_devices() static.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • The "industry standard" DDF format allows for a stripe/offset layout where
    data is duplicated on different stripes. e.g.

    A B C D
    D A B C
    E F G H
    H E F G

    (columns are drives, rows are stripes, LETTERS are chunks of data).

    This is similar to raid10's 'far' mode, but not quite the same. So enhance
    'far' mode with a 'far/offset' option which follows the layout of DDFs
    stripe/offset.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • For a while we have had checkpointing of resync. The version-1 superblock
    allows recovery to be checkpointed as well, and this patch implements that.

    Due to early carelessness we need to add a feature flag to signal that the
    recovery_offset field is in use, otherwise older kernels would assume that a
    partially recovered array is in fact fully recovered.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • At shutdown, we switch all arrays to read-only, which creates a message for
    every instantiated array, even those which aren't actually active.

    So remove the message for non-active arrays.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown