]> err.no Git - linux-2.6/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
authorDavid Howells <dhowells@redhat.com>
Tue, 5 Dec 2006 17:01:28 +0000 (17:01 +0000)
committerDavid Howells <dhowells@warthog.cambridge.redhat.com>
Tue, 5 Dec 2006 17:01:28 +0000 (17:01 +0000)
Conflicts:

drivers/ata/libata-scsi.c
include/linux/libata.h

Futher merge of Linus's head and compilation fixups.

Signed-Off-By: David Howells <dhowells@redhat.com>
15 files changed:
1  2 
drivers/ata/libata-core.c
drivers/ata/libata-eh.c
drivers/ata/libata-scsi.c
drivers/ata/libata.h
drivers/macintosh/smu.c
drivers/media/dvb/cinergyT2/cinergyT2.c
drivers/net/spider_net.c
drivers/net/sungem.c
fs/ocfs2/alloc.c
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/journal.c
fs/ocfs2/journal.h
fs/ocfs2/ocfs2.h
fs/ocfs2/super.c
include/linux/libata.h

Simple merge
Simple merge
index 4c32d93d44b1a0b0e5d1d985c76a670502a21ace,8eaace94d9631e9e2b64fdc3443ca26d0d41bf66..664e1377b54c7a4be21761bc9b4ea95146abee6f
@@@ -3203,19 -3086,30 +3087,31 @@@ static int ata_scsi_user_scan(struct Sc
   *    LOCKING:
   *    Kernel thread context (may sleep).
   */
 -void ata_scsi_dev_rescan(void *data)
 +void ata_scsi_dev_rescan(struct work_struct *work)
  {
 -      struct ata_port *ap = data;
 +      struct ata_port *ap =
 +              container_of(work, struct ata_port, scsi_rescan_task);
-       struct ata_device *dev;
+       unsigned long flags;
        unsigned int i;
  
+       spin_lock_irqsave(ap->lock, flags);
        for (i = 0; i < ATA_MAX_DEVICES; i++) {
-               dev = &ap->device[i];
+               struct ata_device *dev = &ap->device[i];
+               struct scsi_device *sdev = dev->sdev;
  
-               if (ata_dev_enabled(dev) && dev->sdev)
-                       scsi_rescan_device(&(dev->sdev->sdev_gendev));
+               if (!ata_dev_enabled(dev) || !sdev)
+                       continue;
+               if (scsi_device_get(sdev))
+                       continue;
+               spin_unlock_irqrestore(ap->lock, flags);
+               scsi_rescan_device(&(sdev->sdev_gendev));
+               scsi_device_put(sdev);
+               spin_lock_irqsave(ap->lock, flags);
        }
+       spin_unlock_irqrestore(ap->lock, flags);
  }
  
  /**
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 5be161a4ad9f122912eea56f23d34569ff08ad26,d86cb960b7ec0e74ffb2120470af6ba90fa3eed7..899112ad813679da5035903c57cc79b6c2a97aea
@@@ -133,46 -132,8 +132,8 @@@ static inline void ocfs2_inode_set_new(
        spin_unlock(&trans_inc_lock);
  }
  
- extern kmem_cache_t *ocfs2_lock_cache;
- struct ocfs2_journal_lock {
-       struct inode     *jl_inode;
-       struct list_head  jl_lock_list;
- };
- struct ocfs2_journal_handle {
-       handle_t            *k_handle; /* kernel handle.                */
-       struct ocfs2_journal        *journal;
-       u32                 flags;     /* see flags below.              */
-       int                 max_buffs; /* Buffs reserved by this handle */
-       /* The following two fields are for ocfs2_handle_add_lock */
-       int                 num_locks;
-       struct list_head    locks;     /* A bunch of locks to
-                                       * release on commit. This
-                                       * should be a list_head */
-       struct list_head     inode_list;
- };
- #define OCFS2_HANDLE_STARTED                  1
- /* should we sync-commit this handle? */
- #define OCFS2_HANDLE_SYNC                     2
- static inline int ocfs2_handle_started(struct ocfs2_journal_handle *handle)
- {
-       return handle->flags & OCFS2_HANDLE_STARTED;
- }
- static inline void ocfs2_handle_set_sync(struct ocfs2_journal_handle *handle, int sync)
- {
-       if (sync)
-               handle->flags |= OCFS2_HANDLE_SYNC;
-       else
-               handle->flags &= ~OCFS2_HANDLE_SYNC;
- }
  /* Exported only for the journal struct init code in super.c. Do not call. */
 -void ocfs2_complete_recovery(void *data);
 +void ocfs2_complete_recovery(struct work_struct *work);
  
  /*
   *  Journal Control:
Simple merge
Simple merge
index b3f32eadbef53ecd611b18743004b4774c648655,202283b5df96b9ebaaf2a035261a391d39509840..ab2754830322f96a5e1a80538104fa143a6028b1
@@@ -745,10 -753,9 +754,9 @@@ extern int ata_scsi_device_suspend(stru
  extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);
  extern void ata_host_resume(struct ata_host *host);
  extern int ata_ratelimit(void);
- extern unsigned int ata_busy_sleep(struct ata_port *ap,
-                                  unsigned long timeout_pat,
-                                  unsigned long timeout);
+ extern int ata_busy_sleep(struct ata_port *ap,
+                         unsigned long timeout_pat, unsigned long timeout);
 -extern void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *),
 +extern void ata_port_queue_task(struct ata_port *ap, work_func_t fn,
                                void *data, unsigned long delay);
  extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
                             unsigned long interval_msec,