03 Mar, 2010

1 commit

  • RAID attributes uses scsi_is_sdev_device() to gate some SCSI specific
    checking code. This causes two problems. Firstly if SCSI == n just
    defining scsi_is_sdev_device() to return false might not be enough to
    prevent gcc from emitting the code (and thus referring to undefined
    symbols), so this needs surrounding with an ifdef. Secondly, using
    scsi_is_sdev_device() when SCSI is either y or m gives a subtle
    problem in the m case: raid_attrs must also be m to use the symbol.
    Do the usual Kconfig jiggery-pokery to fix this.

    Reported-by: Randy Dunlap
    Signed-off-by: James Bottomley

    James Bottomley
     

18 Feb, 2010

1 commit


03 Jan, 2009

1 commit


20 Apr, 2008

1 commit


08 Apr, 2008

1 commit

  • Every current transport class calls transport_container_release but
    ignores the return value. This is catastrophic if it returns an error
    because the containers are part of a global list and the next action of
    almost every transport class is to free the memory used by the
    container.

    Fix this by making transport_container_release a void, but making it BUG
    if attribute_container_release returns an error ... this catches the
    root cause of a system panic much earlier. If we don't do this, we get
    an eventual BUG when the attribute container list notices the corruption
    caused by the freed memory it's still referencing.

    Also made attribute_container_release __must_check as a reminder.

    Cc: Greg KH
    Signed-off-by: James Bottomley

    James Bottomley
     

05 Oct, 2006

1 commit


10 Jun, 2006

1 commit


13 Jan, 2006

1 commit


14 Dec, 2005

1 commit


09 Nov, 2005

1 commit


07 Nov, 2005

2 commits

  • Fix more include file problems that surfaced since I submitted the previous
    fix-missing-includes.patch. This should now allow not to include sched.h
    from module.h, which is done by a followup patch.

    Signed-off-by: Tim Schmielau
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Schmielau
     
  • - Update raid class to use nested classes for raid components (this will
    allow us to move to a component control model now)
    - Make the raid level an enumeration rather than and int.

    Signed-off-by: James Bottomley

    James Bottomley
     

31 Aug, 2005

1 commit

  • The idea behind a RAID class is to provide a uniform interface to all
    RAID subsystems (both hardware and software) in the kernel.

    To do that, I've made this class a transport class that's entirely
    subsystem independent (although the matching routines have to match per
    subsystem, as you'll see looking at the code). I put it in the scsi
    subdirectory purely because I needed somewhere to play with it, but it's
    not a scsi specific module.

    I used a fusion raid card as the test bed for this; with that kind of
    card, this is the type of class output you get:

    jejb@titanic> ls -l /sys/class/raid_devices/20\:0\:0\:0/
    total 0
    lrwxrwxrwx 1 root root 0 Aug 16 17:21 component-0 -> ../../../devices/pci0000:80/0000:80:04.0/host20/target20:1:0/20:1:0:0/
    lrwxrwxrwx 1 root root 0 Aug 16 17:21 component-1 -> ../../../devices/pci0000:80/0000:80:04.0/host20/target20:1:1/20:1:1:0/
    lrwxrwxrwx 1 root root 0 Aug 16 17:21 device -> ../../../devices/pci0000:80/0000:80:04.0/host20/target20:0:0/20:0:0:0/
    -r--r--r-- 1 root root 16384 Aug 16 17:21 level
    -r--r--r-- 1 root root 16384 Aug 16 17:21 resync
    -r--r--r-- 1 root root 16384 Aug 16 17:21 state

    So it's really simple: for a SCSI device representing a hardware raid,
    it shows the raid level, the array state, the resync % complete (if the
    state is resyncing) and the underlying components of the RAID (these are
    exposed in fusion on the virtual channel 1).

    As you can see, this type of information can be exported by almost
    anything, including software raid.

    The more difficult trick, of course, is going to be getting it to
    perform configuration type actions with writable attributes.

    Signed-off-by: James Bottomley

    James Bottomley