1. 24 Nov, 2003 2 commits
  2. 23 Nov, 2003 2 commits
  3. 22 Nov, 2003 3 commits
    • James Bottomley's avatar
      Updated state model for SCSI devices · 9b22a8fb
      James Bottomley authored
      I've been looking at enforcing lifetime phases for SCSI devices
      (primarily to try to get the mid layer to offload as much of the device
      creation and hotplug pieces as it can).
      
      I've hijacked the sdev_state field of the struct scsi_device (formerly
      this was a bitmap, now it becomes an enumerated state).
      
      I've also begun adding references sdev_gendev into the code to pin the
      scsi_device---initially in the queue function, but possibly this should
      also be done in the scsi_command_get/put, the idea being to prevent
      scsi_device freeing while there's still device activity.
      
      The object phases I identified are:
      
      1. SDEV_CREATED - we've just allocated the device.  It may respond to
      internally generated commands, but not to user ones (the user should
      actually have no way to access a device in this state, but just in
      case).
      
      2. SDEV_RUNNING - the device is fully operational
      
      3. SDEV_CANCEL - The device is cleanly shutting down.  It may respond to
      internally generated commands (for cancellation/recovery) only; all user
      commands are errored unless they have already been queued (QUEUE_FULL
      handling and the like).
      
      4. SDEV_DEL - The device is gone. *all* commands are errored out.
      
      Ordinarily, the device should move through all four phases from creation
      to destruction, but moving SDEV_RUNNING->SDEV_DEL because of surprise
      ejection should work.
      
      It's starting to look like the online flag should be absorbed into this
      (offlined devices move essentially to SDEV_CANCEL and could be
      reactivated by moving to SDEV_RUNNING).
      
      I haven't altered the similar bitmap model that scsi_host has, although
      this too should probably move to an enumerated state model.
      
      I've tested this by physically yanking a module out from underneath a
      running filesystem with no ill effects (other than a slew of I/O
      errors).
      
      The obvious problem is that this kills possible user error handling, but
      we don't do any of that yet.
      9b22a8fb
    • Mike Anderson's avatar
      [PATCH] scsi device ref count (update) · e4df9910
      Mike Anderson authored
      This patch is against scsi-bugfixes-2.6. I updated it based on comments
      received. It breaks up the reference count initialization for scsi_device
      and restores calling slave_destroy for all scsi_devices configured or
      not. I ran a small regression using the scsi_debug, aic7xxx, and qla2xxx
      driver. I also had a debug patch for more verbose kobject cleanup and
      patch for a badness check on atomic_dec going negative (previously
      provided by Linus).
      
      The object cleanup appears to being functioning correctly. I only saw
      previously reported badness output:
      	- Synchronizing SCSI cache fails on cleanup.
      	- scsi_debug.c missing release (I believe Doug posted a patch)
      	- aic7xxx warnings on rmmod due to ahc_platform_free calling
      	  scsi_remove_host with ahc_list_lock held.
      
      
      This patch splits the scsi device struct device register into init and
      add. It also addresses memory leak issues of not calling slave_destroy
      on scsi_devices that are not configured in.
      
      Details:
      * Make scsi_device_dev_release extern for scsi_scan to use in
      alloc_sdev.
      * Move scsi_free_sdev code to scsi_device_dev_release. Have
      previous callers of scsi_free_sdev call slave_destroy plus put_device.
      * Changed name of scsi_device_register to scsi_sysfs_add_sdev to
      match host call and align with split struct device init.
      * Move sdev_gendev device and class init to scsi_alloc_sdev.
      
      Thu Nov 20 22:56:11 PST 2003
      
       drivers/scsi/scsi_priv.h  |    4 +-
       drivers/scsi/scsi_scan.c  |   63 +++++++++++++++++++++-------------------------
       drivers/scsi/scsi_sysfs.c |   58 ++++++++++++++++++++++--------------------
       3 files changed, 62 insertions(+), 63 deletions(-)
      e4df9910
    • Davide Libenzi's avatar
      [PATCH] More SiS interrupt routing · f6967f9a
      Davide Libenzi authored
      It turns out that the SiS irq routing logic doesn't go by chipset
      after all - it's just that some pirq entries are "legacy" numbers,
      while others are raw offsets into PCI config space (and the legacy
      numbers are more commonly used with the older chipsets, which
      explains the correlations).
      
      This simplifies the router code substantially.
      f6967f9a
  4. 21 Nov, 2003 12 commits
  5. 20 Nov, 2003 7 commits
  6. 19 Nov, 2003 8 commits
  7. 18 Nov, 2003 6 commits
    • Andrew Morton's avatar
      [PATCH] disallow modular BINFMT_ELF · 44cb023a
      Andrew Morton authored
      From: Adrian Bunk <bunk@fs.tum.de>
      
      Modular BINFMT_ELF doesn't build, and is pretty pathological anyway.
      
      So just make it a boolean rather than a tristate.
      44cb023a
    • Andrew Morton's avatar
      [PATCH] mpparse printk fix · 97c52a80
      Andrew Morton authored
      From: Herbert Xu <herbert@gondor.apana.org.au>
      
      The recent patch produces a message with no terminating newline on the
      machine in question.  This is because one of the four bytes that you're
      printing out is NUL.  The following patch avoids that problem.
      97c52a80
    • Andrew Morton's avatar
      [PATCH] resource.c bounds checking fix · 9069925a
      Andrew Morton authored
      From: Jeremy Higdon <jeremy@classic.engr.sgi.com>
      
      I believe there is a bug in kernel/resource.c.
      
      We (SGI sn2 I/O code) are using this for allocating dma map resources, and
      we tracked failures we were seeing to find_resource().
      
      The problem is that when testing bounds in the forever loop, the end bound
      would be one higher than it should be if it gets set from another resource
      (it's set to the proper value when it gets set from the root), causing
      find_resource to return an invalid min/max when the requested size was one
      greater than would fit between two existing resources.
      9069925a
    • Andrew Morton's avatar
      [PATCH] fs/ext[23]/xattr.c pointer arithmetic fix · 0693b768
      Andrew Morton authored
      From: Andreas Gruenbacher <agruen@suse.de>
      
      64-bit pointer arithmetic bug in xattr code
      
      The int offset is not enought to hold the difference between arbitraty
      pointers on 64-bit machines.  Compute the offset of here and last inside
      HDR(bh) instead.
      0693b768
    • Andrew Morton's avatar
      [PATCH] cpu_sibling_map fix · d174dc06
      Andrew Morton authored
      From: James Cleverdon <jamesclv@us.ibm.com>
      
      On summit-based machines the cpu_sibling_map data has been hosed for some
      time.  I found out why in Intel's IA-32 Software Deveveopers' Manual Vol 2
      under CPUID.  Looks like the value that cpuid returns is the one latched at
      reset, and doesn't reflect any changes made by the BIOS later:
      
        * Local APIC ID (high byte of EBX)--this number is the 8-bit ID that
          is assigned to the local APIC on the processor during power up.  This
          field was introduced in the Pentium 4 processor.
      
      Also, the code in init_intel was a bit overdesigned.  Until Intel releases
      a chip with a non-power-of-2 sibling count on it, there's no point in all
      that bit bashing.
      d174dc06
    • Andrew Morton's avatar
      [PATCH] init.h needs to include compiler.h · 82120e6a
      Andrew Morton authored
      From: Jun Sun <jsun@mvista.com>
      
      It is needed for all those "__attribute_used__" etc to be valid.
      
      Also, it seems that when compiling a file ending in ".S", gcc-2.95.3 does not
      expand __GNUC__ at all.  This causes the compiler version check to fail when
      building vsyscall.S.  So add __ASSEMBLY__ wrappers in there.
      82120e6a