]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/i2o.h
[PATCH] splice: pass offset around for ->splice_read() and ->splice_write()
[linux-2.6-omap-h63xx.git] / include / linux / i2o.h
index 9e359a9812215ed987e6f2cbebb6782a9b317213..dd7d627bf66f306b4ee9401f06ed4fb574896a85 100644 (file)
 
 /* defines for max_sectors and max_phys_segments */
 #define I2O_MAX_SECTORS                        1024
-#define I2O_MAX_SECTORS_LIMITED                256
+#define I2O_MAX_SECTORS_LIMITED                128
 #define I2O_MAX_PHYS_SEGMENTS          MAX_PHYS_SEGMENTS
 
 /*
@@ -561,7 +561,6 @@ struct i2o_controller {
        struct resource mem_resource;   /* Mem resource allocated to the IOP */
 
        struct device device;
-       struct class_device *classdev;  /* I2O controller class device */
        struct i2o_device *exec;        /* Executive */
 #if BITS_PER_LONG == 64
        spinlock_t context_list_lock;   /* lock for context_list */
@@ -951,9 +950,7 @@ static inline int i2o_pool_alloc(struct i2o_pool *pool, const char *name,
        if (!pool->slab)
                goto free_name;
 
-       pool->mempool =
-           mempool_create(min_nr, mempool_alloc_slab, mempool_free_slab,
-                          pool->slab);
+       pool->mempool = mempool_create_slab_pool(min_nr, pool->slab);
        if (!pool->mempool)
                goto free_slab;
 
@@ -1116,9 +1113,11 @@ static inline struct i2o_message *i2o_msg_get(struct i2o_controller *c)
                return ERR_PTR(-ENOMEM);
 
        mmsg->mfa = readl(c->in_port);
-       if (mmsg->mfa == I2O_QUEUE_EMPTY) {
+       if (unlikely(mmsg->mfa >= c->in_queue.len)) {
                mempool_free(mmsg, c->in_msg.mempool);
-               return ERR_PTR(-EBUSY);
+               if(mmsg->mfa == I2O_QUEUE_EMPTY)
+                       return ERR_PTR(-EBUSY);
+               return ERR_PTR(-EFAULT);
        }
 
        return &mmsg->msg;