Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 360745
b: refs/heads/master
c: 51acbce
h: refs/heads/master
i:
  360743: 1ef05a6
v: v3
  • Loading branch information
NeilBrown committed Feb 27, 2013
1 parent a99d193 commit 6e1508b
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 49 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ee0b0244030434cdda26777bfb98962447e080cd
refs/heads/master: 51acbcec6c42b24482bac18e42befc822524535d
11 changes: 0 additions & 11 deletions trunk/drivers/md/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -154,17 +154,6 @@ config MD_RAID456

If unsure, say Y.

config MULTICORE_RAID456
bool "RAID-4/RAID-5/RAID-6 Multicore processing (EXPERIMENTAL)"
depends on MD_RAID456
depends on SMP
depends on EXPERIMENTAL
---help---
Enable the raid456 module to dispatch per-stripe raid operations to a
thread pool.

If unsure, say N.

config MD_MULTIPATH
tristate "Multipath I/O support"
depends on BLK_DEV_MD
Expand Down
38 changes: 1 addition & 37 deletions trunk/drivers/md/raid5.c
Original file line number Diff line number Diff line change
Expand Up @@ -1406,7 +1406,7 @@ static void ops_run_check_pq(struct stripe_head *sh, struct raid5_percpu *percpu
&sh->ops.zero_sum_result, percpu->spare_page, &submit);
}

static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
{
int overlap_clear = 0, i, disks = sh->disks;
struct dma_async_tx_descriptor *tx = NULL;
Expand Down Expand Up @@ -1471,36 +1471,6 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
put_cpu();
}

#ifdef CONFIG_MULTICORE_RAID456
static void async_run_ops(void *param, async_cookie_t cookie)
{
struct stripe_head *sh = param;
unsigned long ops_request = sh->ops.request;

clear_bit_unlock(STRIPE_OPS_REQ_PENDING, &sh->state);
wake_up(&sh->ops.wait_for_ops);

__raid_run_ops(sh, ops_request);
release_stripe(sh);
}

static void raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
{
/* since handle_stripe can be called outside of raid5d context
* we need to ensure sh->ops.request is de-staged before another
* request arrives
*/
wait_event(sh->ops.wait_for_ops,
!test_and_set_bit_lock(STRIPE_OPS_REQ_PENDING, &sh->state));
sh->ops.request = ops_request;

atomic_inc(&sh->count);
async_schedule(async_run_ops, sh);
}
#else
#define raid_run_ops __raid_run_ops
#endif

static int grow_one_stripe(struct r5conf *conf)
{
struct stripe_head *sh;
Expand All @@ -1509,9 +1479,6 @@ static int grow_one_stripe(struct r5conf *conf)
return 0;

sh->raid_conf = conf;
#ifdef CONFIG_MULTICORE_RAID456
init_waitqueue_head(&sh->ops.wait_for_ops);
#endif

spin_lock_init(&sh->stripe_lock);

Expand Down Expand Up @@ -1630,9 +1597,6 @@ static int resize_stripes(struct r5conf *conf, int newsize)
break;

nsh->raid_conf = conf;
#ifdef CONFIG_MULTICORE_RAID456
init_waitqueue_head(&nsh->ops.wait_for_ops);
#endif
spin_lock_init(&nsh->stripe_lock);

list_add(&nsh->lru, &newstripes);
Expand Down

0 comments on commit 6e1508b

Please sign in to comment.