11 Aug, 2010

2 commits

  • It's an exported symbol of kernel/printk.c

    Rename vprintk and dprintk macros to more common VPRINTK and DPRINTK
    Add do { } while(0) around macros
    Add level to VPRINTK so KERN_CONT can be used a couple of times.

    Signed-off-by: Joe Perches
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • In each case, the destination of the allocation has type struct **, so the
    elements of the array should have pointer type, not structure type.

    The semantic patch that makes this change is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @disable sizeof_type_expr@
    type T;
    T **x;
    @@

    x =

    //

    Signed-off-by: Julia Lawall
    Cc: Rolf Eike Beer
    Cc: Joe Perches
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julia Lawall
     

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
     

23 Aug, 2009

1 commit


14 Mar, 2009

1 commit

  • The ch module is missing the scsi:t-0x08* alias that would cause it to
    be auto-loaded when a device of that type if found by udev, requiring
    udev to have a specific rule just for this one module. This patch adds
    the alias.

    Signed-off-by: Scott James Remnant
    Signed-off-by: James Bottomley

    Scott James Remnant
     

30 Dec, 2008

1 commit


17 Oct, 2008

1 commit


27 Jul, 2008

1 commit

  • The following commit causes ch_remove oops:

    commit 24b42566c3fcbb5a9011d1446783d0f5844ccd45
    Author: Greg Kroah-Hartman
    Date: Fri May 16 17:55:12 2008 -0700

    SCSI: fix race in device_create

    There is a race from when a device is created with device_create() and
    then the drvdata is set with a call to dev_set_drvdata() in which a
    sysfs file could be open, yet the drvdata will be NULL, causing all
    sorts of bad things to happen.

    This patch fixes the problem by using the new function,
    device_create_drvdata(). It fixes the problem in all of the scsi
    drivers that need it.

    Cc: Kay Sievers
    Cc: Doug Gilbert
    Cc: James E.J. Bottomley
    Signed-off-by: Greg Kroah-Hartman

    The problem is ch_probe stores ch's private data at a wrong place.

    We need to store it at scsi_device->sdev_gendev but the above patch
    stores it at device struct that device_create_drvdata returns. So we
    hit an oops when ch_remove accesses
    scsi_device->sdev_gendev->driver_data, which is NULL.

    Actually, there wasn't a race because ch doesn't create sysfs files
    with device struct that device_create returns. This patch puts back
    dev_set_drvdata() to set ch's private data properly.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     

15 Jul, 2008

1 commit


21 Jun, 2008

1 commit


21 May, 2008

1 commit

  • There is a race from when a device is created with device_create() and
    then the drvdata is set with a call to dev_set_drvdata() in which a
    sysfs file could be open, yet the drvdata will be NULL, causing all
    sorts of bad things to happen.

    This patch fixes the problem by using the new function,
    device_create_drvdata(). It fixes the problem in all of the scsi
    drivers that need it.

    Cc: Kay Sievers
    Cc: Doug Gilbert
    Cc: James E.J. Bottomley
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

20 Apr, 2008

1 commit


08 Apr, 2008

1 commit

  • Replace the global err array with ch_err.
    drivers/scsi/ch.c:271:6: warning: symbol 'err' shadows an earlier one
    drivers/scsi/ch.c:116:3: originally declared here

    Replace the temporary cmd buffer with ch_err to avoid shadowing the cmd
    function parameter.
    drivers/scsi/ch.c:724:11: warning: symbol 'cmd' shadows an earlier one
    drivers/scsi/ch.c:596:20: originally declared here

    Signed-off-by: Harvey Harrison
    Signed-off-by: James Bottomley

    Harvey Harrison
     

25 Jan, 2008

2 commits

  • This moves ch_template and changer_fops structs to the end of file and
    removes forward declarations.

    This also removes some trailing whitespace.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     
  • ch_probe uses the total number of ch devices as minor.

    ch_probe:
    ch->minor = ch_devcount;
    ...
    ch_devcount++;

    Then ch_remove decreases ch_devcount:

    ch_remove:
    ch_devcount--;

    If you have two ch devices, sch0 and sch1, and remove sch0,
    ch_devcount is 1. Then if you add another ch device, ch_probe tries to
    create sch1. So you get a warning and fail to create sch1:

    Jan 24 16:01:05 nice kernel: sysfs: duplicate filename 'sch1' can not be created
    Jan 24 16:01:05 nice kernel: WARNING: at fs/sysfs/dir.c:424 sysfs_add_one()
    Jan 24 16:01:05 nice kernel: Pid: 2571, comm: iscsid Not tainted 2.6.24-rc7-ga3d2c2e8-dirty #1
    Jan 24 16:01:05 nice kernel:
    Jan 24 16:01:05 nice kernel: Call Trace:
    Jan 24 16:01:05 nice kernel: [] sysfs_add_one+0x54/0xbd
    Jan 24 16:01:05 nice kernel: [] create_dir+0x4f/0x87
    Jan 24 16:01:05 nice kernel: [] sysfs_create_dir+0x35/0x4a
    Jan 24 16:01:05 nice kernel: [] kobject_get+0x12/0x17
    Jan 24 16:01:05 nice kernel: [] kobject_add+0xf3/0x1a6
    Jan 24 16:01:05 nice kernel: [] class_device_add+0xaa/0x39d
    Jan 24 16:01:05 nice kernel: [] class_device_create+0xcb/0xfa
    Jan 24 16:01:05 nice kernel: [] printk+0x4e/0x56
    Jan 24 16:01:05 nice kernel: [] sysfs_ilookup_test+0x0/0xf
    Jan 24 16:01:05 nice kernel: [] :ch:ch_probe+0xbe/0x61a

    (snip)

    This patch converts ch to use a standard minor number management way,
    idr like sg and bsg.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    FUJITA Tomonori
     

24 Jan, 2008

2 commits


06 May, 2007

1 commit


15 Feb, 2007

1 commit

  • After Al Viro (finally) succeeded in removing the sched.h #include in module.h
    recently, it makes sense again to remove other superfluous sched.h includes.
    There are quite a lot of files which include it but don't actually need
    anything defined in there. Presumably these includes were once needed for
    macros that used to live in sched.h, but moved to other header files in the
    course of cleaning it up.

    To ease the pain, this time I did not fiddle with any header files and only
    removed #includes from .c-files, which tend to cause less trouble.

    Compile tested against 2.6.20-rc2 and 2.6.20-rc2-mm2 (with offsets) on alpha,
    arm, i386, ia64, mips, powerpc, and x86_64 with allnoconfig, defconfig,
    allmodconfig, and allyesconfig as well as a few randconfigs on x86_64 and all
    configs in arch/arm/configs on arm. I also checked that no new warnings were
    introduced by the patch (actually, some warnings are removed that were emitted
    by unnecessarily included header files).

    Signed-off-by: Tim Schmielau
    Acked-by: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Schmielau
     

13 Feb, 2007

1 commit

  • Many struct file_operations in the kernel can be "const". Marking them const
    moves these to the .rodata section, which avoids false sharing with potential
    dirty data. In addition it'll catch accidental writes at compile time to
    these shared resources.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

01 Jul, 2006

1 commit


12 Mar, 2006

1 commit

  • Add device-major aliases in drivers/scsi, allowing kmod autoload:

    MODULE_ALIAS_CHARDEV_MAJOR(SCSI_CHANGER_MAJOR)
    MODULE_ALIAS_CHARDEV_MAJOR(OSST_MAJOR)
    MODULE_ALIAS_CHARDEV_MAJOR(SCSI_TAPE_MAJOR)
    MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_CDROM_MAJOR)
    MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISKN_MAJOR)

    Signed-off-by: Andrew Morton
    Acked-by: Kai Makisara
    Signed-off-by: James Bottomley

    Rene Herman
     

13 Jan, 2006

1 commit


11 Jan, 2006

1 commit


14 Dec, 2005

1 commit


05 Nov, 2005

1 commit


29 Oct, 2005

2 commits


11 Sep, 2005

1 commit


10 Sep, 2005

1 commit


29 Aug, 2005

1 commit


30 Jul, 2005

1 commit


21 May, 2005

2 commits