12 Aug, 2010

10 commits

  • Add a new parameter 'struct file *' to ocfs2_refcount_cow
    so that we can add readahead support later.

    Signed-off-by: Tao Ma

    Tao Ma
     
  • struct file * has file_ra_state to store the readahead state
    and data. So pass this to ocfs2_prepare_inode_for_write. so
    that it can be used in ocfs2_refcount_cow.

    Signed-off-by: Tao Ma

    Tao Ma
     
  • struct file * has file_ra_state to store the readahead state
    and data. So pass this to ocfs2_write_begin_nolock so that
    it can be used in ocfs2_refcount_cow.

    Signed-off-by: Tao Ma

    Tao Ma
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    isofs: Fix lseek() to position beyond 4 GB
    vfs: remove unused MNT_STRICTATIME
    vfs: show unreachable paths in getcwd and proc
    vfs: only add " (deleted)" where necessary
    vfs: add prepend_path() helper
    vfs: __d_path: dont prepend the name of the root dentry
    ia64: perfmon: add d_dname method
    vfs: add helpers to get root and pwd
    cachefiles: use path_get instead of lone dget
    fs/sysv/super.c: add support for non-PDP11 v7 filesystems
    V7: Adjust sanity checks for some volumes
    Add v7 alias
    v9fs: fixup for inode_setattr being removed

    Manual merge to take Al's version of the fs/sysv/super.c file: it merged
    cleanly, but Al had removed an unnecessary header include, so his side
    was better.

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:
    Squashfs: fix checkpatch.pl warnings
    Squashfs: fix filename typo
    Squashfs: update Kconfig and documentation for LZO
    Squashfs: fix block size use in LZO decompressor
    Squashfs: Add LZO compression support
    squashfs: fix filename in header comment
    Squashfs: Make XATTR config name consistent with other file systems
    squashfs: fix compiler inline warning

    Linus Torvalds
     
  • * 'for-linus' of git://git.open-osd.org/linux-open-osd:
    exofs: Fix groups code when num_devices is not divisible by group_width
    exofs: Remove useless optimization
    exofs: exofs_file_fsync and exofs_file_flush correctness
    exofs: Remove superfluous dependency on buffer_head and writeback

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (39 commits)
    ceph: generalize mon requests, add pool op support
    ceph: only queue async writeback on cap revocation if there is dirty data
    ceph: do not ignore osd_idle_ttl mount option
    ceph: constify dentry_operations
    ceph: whitespace cleanup
    ceph: add flock/fcntl lock support
    ceph: define on-wire types, constants for file locking support
    ceph: add CEPH_FEATURE_FLOCK to the supported feature bits
    ceph: support v2 reconnect encoding
    ceph: support v2 client_caps encoding
    ceph: move AES iv definition to shared header
    ceph: fix decoding of pool snap info
    ceph: make ->sync_fs not wait if wait==0
    ceph: warn on missing snap realm
    ceph: print useful error message when crush rule not found
    ceph: use %pU to print uuid (fsid)
    ceph: sync header defs with server code
    ceph: clean up header guards
    ceph: strip misleading/obsolete version, feature info
    ceph: specify supported features in super.h
    ...

    Linus Torvalds
     
  • * 'msm-video' of git://codeaurora.org/quic/kernel/dwalker/linux-msm:
    video: msm: Fix section mismatch in mddi.c.
    drivers: video: msm: drop some unused variables

    Linus Torvalds
     
  • * 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6:
    IXP4xx: Fix LL debugging on little-endian CPU.
    IXP4xx: Fix sparse warnings in I/O primitives.
    IXP4xx: Make mdio_bus struct static in the Ethernet driver.
    IXP4xx: Fix ixp4xx_crypto little-endian operation.
    IXP4xx: Prevent HSS transmitter lockup by disabling FRaMe signals.
    ixp4xx/vulcan: add PCI support
    ixp4xx: base support for Arcom Vulcan

    Linus Torvalds
     
  • * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (226 commits)
    ARM: 6323/1: cam60: don't use __init for cam60_spi_{flash_platform_data,partitions}
    ARM: 6324/1: cam60: move cam60_spi_devices to .init.data
    ARM: 6322/1: imx/pca100: Fix name of spi platform data
    ARM: 6321/1: fix syntax error in main Kconfig file
    ARM: 6297/1: move U300 timer to dynamic clock lookup
    ARM: 6296/1: clock U300 intcon and timer properly
    ARM: 6295/1: fix U300 apb_pclk split
    ARM: 6306/1: fix inverted MMC card detect in U300
    ARM: 6299/1: errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID
    ARM: 6294/1: etm: do a dummy read from OSSRR during initialization
    ARM: 6292/1: coresight: add ETM management registers
    ARM: 6288/1: ftrace: document mcount formats
    ARM: 6287/1: ftrace: clean up mcount assembly indentation
    ARM: 6286/1: fix Thumb-2 decompressor broken by "Auto calculate ZRELADDR"
    ARM: 6281/1: video/imxfb.c: allow usage without BACKLIGHT_CLASS_DEVICE
    ARM: 6280/1: imx: Fix build failure when including without
    ARM: S5PV210: Fix on missing s3c-sdhci card detection method for hsmmc3
    ARM: S5P: Fix on missing S5P_DEV_FIMC in plat-s5p/Kconfig
    ARM: S5PV210: Override FIMC driver name on Aquila board
    ARM: S5PC100: enable FIMC on SMDKC100
    ...

    Fix up conflicts in arch/arm/mach-{s5pc100,s5pv210}/cpu.c due to
    different subsystem 'setname' calls, and trivial port types in
    include/linux/serial_core.h

    Linus Torvalds
     

11 Aug, 2010

30 commits

  • Fix checkstack error:

    lib/decompress_bunzip2.c: In function `get_next_block':
    lib/decompress_bunzip2.c:511: warning: the frame size of 1932 bytes is larger than 1024 bytes

    byteCount, symToByte, and mtfSymbol cannot be declared static or allocated
    dynamically so place them in the bunzip_data struct.

    Signed-off-by: Prarit Bhargava
    Cc: Phillip Lougher
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Prarit Bhargava
     
  • Add four examples to the kernel sample directory.

    It shows how to handle:
    - a byte stream fifo
    - a integer type fifo
    - a dynamic record sized fifo
    - the fifo DMA functions

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Stefani Seibold
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • Simply replace the whole kfifo.c and kfifo.h files with the new generic
    version and fix the kerneldoc API template file.

    Signed-off-by: Stefani Seibold
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • Add the new version of the kfifo API files kfifo.c and kfifo.h.

    Signed-off-by: Stefani Seibold
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • There are different types of a fifo which can not handled in C without a
    lot of overhead. So i decided to write the API as a set of macros, which
    is the only way to do a kind of template meta programming without C++.
    This macros handles the different types of fifos in a transparent way.

    There are a lot of benefits:

    - Compile time handling of the different fifo types
    - Better performance (a save put or get of an integer does only generate
    9 assembly instructions on a x86)
    - Type save
    - Cleaner interface, the additional kfifo_..._rec() functions are gone
    - Easier to use
    - Less error prone
    - Different types of fifos: it is now possible to define a int fifo or
    any other type. See below for an example.
    - Smaller footprint for none byte type fifos
    - No need of creating a second hidden variable, like in the old DEFINE_KFIFO

    The API was not changed.

    There are now real in place fifos where the data space is a part of the
    structure. The fifo needs now 20 byte plus the fifo space. Dynamic
    assigned or allocated create a little bit more code.

    Most of the macros code will be optimized away and simple generate a
    function call. Only the really small one generates inline code.

    Additionally you can now create fifos for any data type, not only the
    "unsigned char" byte streamed fifos.

    There is also a new kfifo_put and kfifo_get function, to handle a single
    element in a fifo. This macros generates inline code, which is lit bit
    larger but faster.

    I know that this kind of macros are very sophisticated and not easy to
    maintain. But i have all tested and it works as expected. I analyzed the
    output of the compiler and for the x86 the code is as good as hand written
    assembler code. For the byte stream fifo the generate code is exact the
    same as with the current kfifo implementation. For all other types of
    fifos the code is smaller before, because the interface is easier to use.

    The main goal was to provide an API which is very intuitive, save and easy
    to use. So linux will get now a powerful fifo API which provides all what
    a developer needs. This will save in the future a lot of kernel space,
    since there is no need to write an own implementation. Most of the device
    driver developers need a fifo, and also deep kernel development will gain
    benefit from this API.

    Here are the results of the text section usage:

    Example 1:
    kfifo_put/_get kfifo_in/out current kfifo
    dynamic allocated 0x000002a8 0x00000291 0x00000299
    in place 0x00000291 0x0000026e 0x00000273

    kfifo.c new old
    text section size 0x00000be5 0x000008b2

    As you can see, kfifo_put/kfifo_get creates a little bit more code than
    kfifo_in/kfifo_out, but it is much faster (the code is inline).

    The code is complete hand crafted and optimized. The text section size is
    as small as possible. You get all the fifo handling in only 3 kb. This
    includes type safe fix size records, dynamic records and DMA handling.

    This should be the final version. All requested features are implemented.

    Note: Most features of this API doesn't have any users. All functions
    which are not used in the next 9 months will be removed. So, please adapt
    your drivers and other sources as soon as possible to the new API and post
    it.

    This are the features which are currently not used in the kernel:

    kfifo_to_user()
    kfifo_from_user()
    kfifo_dma_....() macros
    kfifo_esize()
    kfifo_recsize()
    kfifo_put()
    kfifo_get()

    The fixed size record elements, exclude "unsigned char" fifo's and the
    variable size records fifo's

    This patch:

    User of the kernel fifo should never bypass the API and directly access
    the fifo structure. Otherwise it will be very hard to maintain the API.

    Signed-off-by: Stefani Seibold
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stefani Seibold
     
  • For consistency with other kfifo routines, return bool, not int.

    Signed-off-by: Robert P. J. Day
    Cc: Stefani Seibold
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     
  • This adds byte order autodetection (of PDP-11 and LE filesystems). No
    attempt is made to detect big-endian filesystems -- were there any?
    Tested with PDP-11 v7 filesystems and PC-IX maintenance floppy.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Lubomir Rintel
    Cc: Christoph Hellwig
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lubomir Rintel
     
  • Newly mkfs-ed filesystems from Seventh Edition have last modification time
    set to zero, but are otherwise perfectly valid.

    Also, tighten up other sanity checks to filter out most filesystems with

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Lubomir Rintel
    Cc: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lubomir Rintel
     
  • So that the module gets autoloaded when a v7 filesystem is mounted.

    Signed-off-by: Lubomir Rintel
    Cc: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lubomir Rintel
     
  • copy_to/from_user() returns the number of bytes remaining to be copied.
    It never returns a negative value. The correct return code is -EFAULT and
    not -EIO.

    All the callers check for non-zero returns so that's Ok, but the return
    code is passed to the user so we should fix this.

    Signed-off-by: Dan Carpenter
    Cc: Hidetoshi Seto
    Cc: "Paul E. McKenney"
    Cc: "Eric W. Biederman"
    Cc: Simon Kagstrom
    Acked-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Commit 51dcdfe ("parport: Use the PCI IRQ if offered") added IRQ support
    for PCI parallel port devices handled by parport_pc, but turned it off for
    parport_serial, despite a printk() message to the contrary.

    Signed-off-by: Fr?d?ric Bri?re
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fr?d?ric Bri?re
     
  • We are missing the oops end marker for the exception based WARN implementation
    in lib/bug.c. This is useful for logfile analysis tools.

    Signed-off-by: Anton Blanchard
    Cc: Ingo Molnar
    Cc: Arjan van de Ven
    Cc: "Kirill A. Shutemov"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • There are a few issues with the exception based WARN implementation in
    lib/bug.c:

    - Inconsistent printk flags. The "cut here" line is printed at KERN_EMERG, so
    the console and all logged in users see the single line:

    ------------[ cut here ]------------

    for each WARN. Fix this so we print everything at KERN_WARNING to match the
    kernel/panic.c version.

    - The lib/bug.c WARN would print "Badness at". Change it to match the
    kernel/panic.c version which prints "WARNING: at".

    - Print the list of modules, similar to kernel/panic.c of modules, similar to
    kernel/panic.c

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Anton Blanchard
    Cc: Ingo Molnar
    Cc: Arjan van de Ven
    Cc: "Kirill A. Shutemov"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • To keep panic_timeout accuracy when running under a hypervisor, the
    current implementation only spins on long time (1 second) calls to mdelay.
    That brings a good effect, but the problem is the keyboard LEDs don't
    blink at all on that situation.

    This patch changes to call to panic_blink_enter() between every mdelay and
    keeps blinking in spite of long spin timer mode.

    The time to call to mdelay is now 100ms. Even this change will keep
    panic_timeout accuracy enough when running under a hypervisor.

    Signed-off-by: TAMUKI Shoichi
    Cc: Ben Dooks
    Cc: Russell King
    Acked-by: Dmitry Torokhov
    Cc: Anton Blanchard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    TAMUKI Shoichi
     
  • We can clean up the work queue on this error path. This function is
    called from afs_init().

    Signed-off-by: Dan Carpenter
    Acked-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • DMA_xxBIT_MASK macros were marked as deprecated in June 2009. One more
    year is long enough, I think.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • It was replaced with the DMA unamp state API (which can be used for
    any bus).

    Signed-off-by: FUJITA Tomonori
    Cc: Jesse Barnes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Signed-off-by: FUJITA Tomonori
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Architectures implement dma_is_consistent() in different ways (some
    misinterpret the definition of API in DMA-API.txt). So it hasn't been so
    useful for drivers. We have only one user of the API in tree. Unlikely
    out-of-tree drivers use the API.

    Even if we fix dma_is_consistent() in some architectures, it doesn't look
    useful at all. It was invented long ago for some old systems that can't
    allocate coherent memory at all. It's better to export only APIs that are
    definitely necessary for drivers.

    Let's remove this API.

    Signed-off-by: FUJITA Tomonori
    Cc: James Bottomley
    Reviewed-by: Konrad Rzeszutek Wilk
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • This driver is the only user of dma_is_consistent(). We plan to remove this
    API.

    The driver uses the API in the following way:

    BUG_ON(!dma_is_consistent(hostdata->dev, pScript) && L1_CACHE_BYTES < dma_get_cache_alignment());

    The above code tries to see if L1_CACHE_BYTES is greater than
    dma_get_cache_alignment() on sysmtes that can not allocate coherent memory
    (some old systems can't).

    James Bottomley exmplained that this is necesary because the driver packs the
    set of mailboxes into a single coherent area and separates the different
    usages by a L1 cache stride. So it's fatal if the dma

    He also pointed out that we can kill this checking because we don't hit this
    BUG_ON on all architectures that actually use the driver.

    (akpm: stolen from the scsi tree because
    dma-mapping-remove-dma_is_consistent-api.patch needs it)

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Architectures that handle DMA-non-coherent memory need to set
    ARCH_DMA_MINALIGN to make sure that kmalloc'ed buffer is DMA-safe: the
    buffer doesn't share a cache with the others.

    Signed-off-by: FUJITA Tomonori
    Cc: Kyle McMartin
    Cc: Helge Deller
    Cc: James E.J. Bottomley
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • dma_get_cache_alignment returns the minimum DMA alignment. Architectures
    defines it as ARCH_DMA_MINALIGN (formally ARCH_KMALLOC_MINALIGN). So we
    can unify dma_get_cache_alignment implementations.

    Note that some architectures implement dma_get_cache_alignment wrongly.
    dma_get_cache_alignment() should return the minimum DMA alignment. So
    fully-coherent architectures should return 1. This patch also fixes this
    issue.

    Signed-off-by: FUJITA Tomonori
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Now each architecture has the own dma_get_cache_alignment implementation.

    dma_get_cache_alignment returns the minimum DMA alignment. Architectures
    define it as ARCH_KMALLOC_MINALIGN (it's used to make sure that malloc'ed
    buffer is DMA-safe; the buffer doesn't share a cache with the others). So
    we can unify dma_get_cache_alignment implementations.

    This patch:

    dma_get_cache_alignment() needs to know if an architecture defines
    ARCH_KMALLOC_MINALIGN or not (needs to know if architecture has DMA
    alignment restriction). However, slab.h define ARCH_KMALLOC_MINALIGN if
    architectures doesn't define it.

    Let's rename ARCH_KMALLOC_MINALIGN to ARCH_DMA_MINALIGN.
    ARCH_KMALLOC_MINALIGN is used only in the internals of slab/slob/slub
    (except for crypto).

    Signed-off-by: FUJITA Tomonori
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • Simply add proper IDs into the device table.

    Signed-off-by: Anton Vorontsov
    Cc: Scott Wood
    Cc: Peter Tyser
    Cc: Dave Jiang
    Cc: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • -EIO is not the only error code that pci_enable_device() may return, also
    the set of errors can be enhanced in future. We should compare return
    code with zero, not with concrete error value.

    Signed-off-by: Kulikov Vasiliy
    Acked-by: Mauro Carvalho Chehab
    Cc: Jeff Roberson
    Cc: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kulikov Vasiliy
     
  • -EIO is not the only error code that pci_enable_device() may return, also
    the set of errors can be enhanced in future. We should compare return
    code with zero, not with concrete error value.

    Signed-off-by: Kulikov Vasiliy
    Acked-by: Mauro Carvalho Chehab
    Cc: Jeff Roberson
    Cc: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kulikov Vasiliy
     
  • In 5753c082f66eca5be81f6bda85c1718c5eea6ada ("powerpc/85xx: Kconfig
    cleanup") menuconfig MPC85xx was replaced by FSL_SOC_BOOKE but some
    references insider the code were not adjusted accordingly. This patch
    adresses these missing pieces.

    Signed-off-by: Christoph Egger
    Cc: Doug Thompson
    Cc: Peter Tyser
    Cc: Kumar Gala
    Cc: Scott Wood
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Egger
     
  • alloc_pidmap() calculates max_scan so that if the initial offset != 0 we
    inspect the first map->page twice. This is correct, we want to find the
    unused bits < offset in this bitmap block. Add the comment.

    But it doesn't make any sense to stop the find_next_offset() loop when we
    are looking into this map->page for the second time. We have already
    already checked the bits >= offset during the first attempt, it is fine to
    do this again, no matter if we succeed this time or not.

    Remove this hard-to-understand code. It optimizes the very unlikely case
    when we are going to fail, but slows down the more likely case.

    Signed-off-by: Oleg Nesterov
    Cc: Salman Qazi
    Cc: Ingo Molnar
    Cc: Sukadev Bhattiprolu
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • A program that repeatedly forks and waits is susceptible to having the
    same pid repeated, especially when it competes with another instance of
    the same program. This is really bad for bash implementation.
    Furthermore, many shell scripts assume that pid numbers will not be used
    for some length of time.

    Race Description:

    A B

    // pid == offset == n // pid == offset == n + 1
    test_and_set_bit(offset, map->page)
    test_and_set_bit(offset, map->page);
    pid_ns->last_pid = pid;
    pid_ns->last_pid = pid;
    // pid == n + 1 is freed (wait())

    // Next fork()...
    last = pid_ns->last_pid; // == n
    pid = last + 1;

    Code to reproduce it (Running multiple instances is more effective):

    #include
    #include
    #include
    #include
    #include
    #include

    // The distance mod 32768 between two pids, where the first pid is expected
    // to be smaller than the second.
    int PidDistance(pid_t first, pid_t second) {
    return (second + 32768 - first) % 32768;
    }

    int main(int argc, char* argv[]) {
    int failed = 0;
    pid_t last_pid = 0;
    int i;
    printf("%d\n", sizeof(pid_t));
    for (i = 0; i < 10000000; ++i) {
    if (i % 32786 == 0)
    printf("Iter: %d\n", i/32768);
    int child_exit_code = i % 256;
    pid_t pid = fork();
    if (pid == -1) {
    fprintf(stderr, "fork failed, iteration %d, errno=%d", i, errno);
    exit(1);
    }
    if (pid == 0) {
    // Child
    exit(child_exit_code);
    } else {
    // Parent
    if (i > 0) {
    int distance = PidDistance(last_pid, pid);
    if (distance == 0 || distance > 30000) {
    fprintf(stderr,
    "Unexpected pid sequence: previous fork: pid=%d, "
    "current fork: pid=%d for iteration=%d.\n",
    last_pid, pid, i);
    failed = 1;
    }
    }
    last_pid = pid;
    int status;
    int reaped = wait(&status);
    if (reaped != pid) {
    fprintf(stderr,
    "Wait return value: expected pid=%d, "
    "got %d, iteration %d\n",
    pid, reaped, i);
    failed = 1;
    } else if (WEXITSTATUS(status) != child_exit_code) {
    fprintf(stderr,
    "Unexpected exit status %x, iteration %d\n",
    WEXITSTATUS(status), i);
    failed = 1;
    }
    }
    }
    exit(failed);
    }

    Thanks to Ted Tso for the key ideas of this implementation.

    Signed-off-by: Salman Qazi
    Cc: Ingo Molnar
    Cc: Theodore Ts'o
    Cc: Peter Zijlstra
    Cc: Sukadev Bhattiprolu
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Salman
     
  • Fix this garbage happening quite often:

    ==> sda:
    scsi 3:0:0:0: CD-ROM TOSHIBA
    ==> sda1 sda2 sda3 sda4 sda5 sda6 sda7 >

    Make "sda: sda1 ..." lines actually lines.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan