projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'from-linus' into upstream
[powerpc.git]
/
drivers
/
md
/
dm-mpath.c
diff --git
a/drivers/md/dm-mpath.c
b/drivers/md/dm-mpath.c
index
f9b7b32
..
1816f30
100644
(file)
--- a/
drivers/md/dm-mpath.c
+++ b/
drivers/md/dm-mpath.c
@@
-179,8
+179,7
@@
static struct multipath *alloc_multipath(void)
m->queue_io = 1;
INIT_WORK(&m->process_queued_ios, process_queued_ios, m);
INIT_WORK(&m->trigger_event, trigger_event, m);
m->queue_io = 1;
INIT_WORK(&m->process_queued_ios, process_queued_ios, m);
INIT_WORK(&m->trigger_event, trigger_event, m);
- m->mpio_pool = mempool_create(MIN_IOS, mempool_alloc_slab,
- mempool_free_slab, _mpio_cache);
+ m->mpio_pool = mempool_create_slab_pool(MIN_IOS, _mpio_cache);
if (!m->mpio_pool) {
kfree(m);
return NULL;
if (!m->mpio_pool) {
kfree(m);
return NULL;
@@
-1000,6
+999,7
@@
static int do_end_io(struct multipath *m, struct bio *bio,
{
struct hw_handler *hwh = &m->hw_handler;
unsigned err_flags = MP_FAIL_PATH; /* Default behavior */
{
struct hw_handler *hwh = &m->hw_handler;
unsigned err_flags = MP_FAIL_PATH; /* Default behavior */
+ unsigned long flags;
if (!error)
return 0; /* I/O complete */
if (!error)
return 0; /* I/O complete */
@@
-1010,17
+1010,17
@@
static int do_end_io(struct multipath *m, struct bio *bio,
if (error == -EOPNOTSUPP)
return error;
if (error == -EOPNOTSUPP)
return error;
- spin_lock
(&m->lock
);
+ spin_lock
_irqsave(&m->lock, flags
);
if (!m->nr_valid_paths) {
if (!m->queue_if_no_path) {
if (!m->nr_valid_paths) {
if (!m->queue_if_no_path) {
- spin_unlock
(&m->lock
);
+ spin_unlock
_irqrestore(&m->lock, flags
);
return -EIO;
} else {
return -EIO;
} else {
- spin_unlock
(&m->lock
);
+ spin_unlock
_irqrestore(&m->lock, flags
);
goto requeue;
}
}
goto requeue;
}
}
- spin_unlock
(&m->lock
);
+ spin_unlock
_irqrestore(&m->lock, flags
);
if (hwh->type && hwh->type->error)
err_flags = hwh->type->error(hwh, bio);
if (hwh->type && hwh->type->error)
err_flags = hwh->type->error(hwh, bio);
@@
-1040,12
+1040,12
@@
static int do_end_io(struct multipath *m, struct bio *bio,
dm_bio_restore(&mpio->details, bio);
/* queue for the daemon to resubmit or fail */
dm_bio_restore(&mpio->details, bio);
/* queue for the daemon to resubmit or fail */
- spin_lock
(&m->lock
);
+ spin_lock
_irqsave(&m->lock, flags
);
bio_list_add(&m->queued_ios, bio);
m->queue_size++;
if (!m->queue_io)
queue_work(kmultipathd, &m->process_queued_ios);
bio_list_add(&m->queued_ios, bio);
m->queue_size++;
if (!m->queue_io)
queue_work(kmultipathd, &m->process_queued_ios);
- spin_unlock
(&m->lock
);
+ spin_unlock
_irqrestore(&m->lock, flags
);
return 1; /* io not complete */
}
return 1; /* io not complete */
}