1. 24 Nov, 2003 1 commit
    • James Bottomley's avatar
      Fix locking problems in scsi_report_bus_reset() causing aic7xxx to hang · 383d0b65
      James Bottomley authored
      All the users of this function in the SCSI tree call it with the host
      lock held.  With the new list traversal code, it was trying to take
      the lock again to traverse the list.
      
      Fix it to use the unlocked version of list traversal and modify the
      header comments to make it clear that the lock is expected to be held
      on calling it.
      383d0b65
  2. 22 Nov, 2003 2 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
  3. 21 Nov, 2003 12 commits
  4. 20 Nov, 2003 6 commits
  5. 19 Nov, 2003 8 commits
  6. 18 Nov, 2003 11 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
    • Andrew Morton's avatar
      [PATCH] ext2 block allocator fixes · a9bca018
      Andrew Morton authored
      Fix a couple of problems which were introduced by a recent race fix in the
      ext2 block allocator:
      
      - if the allocation attempt raced, and lost the race then a new attempt is
        made.  But the earlier reservation must be put back first.
      
        Add a call to group_release_blocks() to fix this.
      
      - if the filesystem is genuinely corrupted then the code as-is can get
        stuck in an infinite loop, thinking that a blockgroup has free blocks and
        then discovering that its bitmap is full.
      
        Fix this by baling out after having scanned all blockgroups twice.
      
        (Thanks Muli Ben-Yehuda <mulix@mulix.org> for spotting this).
      a9bca018
    • Andrew Morton's avatar
      [PATCH] ext3_new_inode fixlet · bc5de0cd
      Andrew Morton authored
      From: Alex Tomas <alex@clusterfs.com>
      
      If the ext3 inode allocator tries to claim an inode and fails because
      another CPU got in there first it will then advance onto the next
      blockgroup and try again.
      
      Change it to advance onto the next inode within the same blockgroup
      instead.
      bc5de0cd
    • Andrew Morton's avatar
      [PATCH] ide-scsi: warn when used for cdroms · b758ab40
      Andrew Morton authored
      From: Jens Axboe <axboe@suse.de>
      
      Print a runtime warning if ide-scsi is used on a cd device.
      
      Modify the ide-scsi menuconfig help to reflect that ide-scsi should
      not be used for cd burning.
      b758ab40
    • Andrew Morton's avatar
      [PATCH] fix percpu_counter_mod linkage problem · bfe687b3
      Andrew Morton authored
      If both ext2 and ext3 are built as modules there is nothing to pull
      percpu_counter_mod() into the kernel build and the ext2 and ext3 modules do
      not load.
      
      So move percpu_counter_mod() out of lib.a.
      bfe687b3
    • Andrew Morton's avatar
      [PATCH] remove ext2_reserve_inode() · e71775ef
      Andrew Morton authored
      It now has no callers.
      e71775ef