Commit 7d684b93 authored by Neil Brown's avatar Neil Brown Committed by Christoph Hellwig

[PATCH] Tidy up raid5 code

- remove md_ prefix from some calls that used to be
  defined in md_compatability.h

- remove "raid5_" prefix from some static functions,
  in line with recent changes to raid1.c

?? should cpu_has_mmx be moved to in processor.h ?
parent bd415ca2
...@@ -251,7 +251,7 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, unsigned long s ...@@ -251,7 +251,7 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, unsigned long s
PRINTK("get_stripe, sector %lu\n", sector); PRINTK("get_stripe, sector %lu\n", sector);
md_spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
do { do {
if (conf->buffer_size == 0 || if (conf->buffer_size == 0 ||
...@@ -325,7 +325,7 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, unsigned long s ...@@ -325,7 +325,7 @@ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, unsigned long s
if (sh) if (sh)
atomic_inc(&sh->count); atomic_inc(&sh->count);
md_spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
return sh; return sh;
} }
...@@ -449,13 +449,13 @@ static void raid5_end_write_request (struct buffer_head *bh, int uptodate) ...@@ -449,13 +449,13 @@ static void raid5_end_write_request (struct buffer_head *bh, int uptodate)
return; return;
} }
md_spin_lock_irqsave(&conf->device_lock, flags); spin_lock_irqsave(&conf->device_lock, flags);
if (!uptodate) if (!uptodate)
md_error(conf->mddev, bh->b_bdev); md_error(conf->mddev, bh->b_bdev);
clear_buffer_locked(bh); clear_buffer_locked(bh);
set_bit(STRIPE_HANDLE, &sh->state); set_bit(STRIPE_HANDLE, &sh->state);
__release_stripe(conf, sh); __release_stripe(conf, sh);
md_spin_unlock_irqrestore(&conf->device_lock, flags); spin_unlock_irqrestore(&conf->device_lock, flags);
} }
...@@ -476,14 +476,14 @@ static struct buffer_head *raid5_build_block (struct stripe_head *sh, int i) ...@@ -476,14 +476,14 @@ static struct buffer_head *raid5_build_block (struct stripe_head *sh, int i)
return bh; return bh;
} }
static int raid5_error (mddev_t *mddev, kdev_t dev) static int error (mddev_t *mddev, kdev_t dev)
{ {
raid5_conf_t *conf = (raid5_conf_t *) mddev->private; raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
mdp_super_t *sb = mddev->sb; mdp_super_t *sb = mddev->sb;
struct disk_info *disk; struct disk_info *disk;
int i; int i;
PRINTK("raid5_error called\n"); PRINTK("raid5: error called\n");
for (i = 0, disk = conf->disks; i < conf->raid_disks; i++, disk++) { for (i = 0, disk = conf->disks; i < conf->raid_disks; i++, disk++) {
if (kdev_same(disk->dev, dev)) { if (kdev_same(disk->dev, dev)) {
...@@ -1192,7 +1192,7 @@ static inline void raid5_plug_device(raid5_conf_t *conf) ...@@ -1192,7 +1192,7 @@ static inline void raid5_plug_device(raid5_conf_t *conf)
spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
} }
static int raid5_make_request (mddev_t *mddev, int rw, struct buffer_head * bh) static int make_request (mddev_t *mddev, int rw, struct buffer_head * bh)
{ {
raid5_conf_t *conf = (raid5_conf_t *) mddev->private; raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
const unsigned int raid_disks = conf->raid_disks; const unsigned int raid_disks = conf->raid_disks;
...@@ -1211,7 +1211,7 @@ static int raid5_make_request (mddev_t *mddev, int rw, struct buffer_head * bh) ...@@ -1211,7 +1211,7 @@ static int raid5_make_request (mddev_t *mddev, int rw, struct buffer_head * bh)
new_sector = raid5_compute_sector(bh->b_rsector, new_sector = raid5_compute_sector(bh->b_rsector,
raid_disks, data_disks, &dd_idx, &pd_idx, conf); raid_disks, data_disks, &dd_idx, &pd_idx, conf);
PRINTK("raid5_make_request, sector %lu\n", new_sector); PRINTK("raid5: make_request, sector %lu\n", new_sector);
sh = get_active_stripe(conf, new_sector, bh->b_size, read_ahead); sh = get_active_stripe(conf, new_sector, bh->b_size, read_ahead);
if (sh) { if (sh) {
sh->pd_idx = pd_idx; sh->pd_idx = pd_idx;
...@@ -1226,7 +1226,7 @@ static int raid5_make_request (mddev_t *mddev, int rw, struct buffer_head * bh) ...@@ -1226,7 +1226,7 @@ static int raid5_make_request (mddev_t *mddev, int rw, struct buffer_head * bh)
return 0; return 0;
} }
static int raid5_sync_request (mddev_t *mddev, unsigned long sector_nr) static int sync_request (mddev_t *mddev, unsigned long sector_nr)
{ {
raid5_conf_t *conf = (raid5_conf_t *) mddev->private; raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
struct stripe_head *sh; struct stripe_head *sh;
...@@ -1280,7 +1280,7 @@ static void raid5d (void *data) ...@@ -1280,7 +1280,7 @@ static void raid5d (void *data)
mddev->sb_dirty = 0; mddev->sb_dirty = 0;
md_update_sb(mddev); md_update_sb(mddev);
} }
md_spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
while (1) { while (1) {
struct list_head *first; struct list_head *first;
...@@ -1300,17 +1300,17 @@ static void raid5d (void *data) ...@@ -1300,17 +1300,17 @@ static void raid5d (void *data)
atomic_inc(&sh->count); atomic_inc(&sh->count);
if (atomic_read(&sh->count)!= 1) if (atomic_read(&sh->count)!= 1)
BUG(); BUG();
md_spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
handled++; handled++;
handle_stripe(sh); handle_stripe(sh);
release_stripe(sh); release_stripe(sh);
md_spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
} }
PRINTK("%d stripes handled\n", handled); PRINTK("%d stripes handled\n", handled);
md_spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
PRINTK("--- raid5d inactive\n"); PRINTK("--- raid5d inactive\n");
} }
...@@ -1340,7 +1340,7 @@ static void raid5syncd (void *data) ...@@ -1340,7 +1340,7 @@ static void raid5syncd (void *data)
printk("raid5: resync finished.\n"); printk("raid5: resync finished.\n");
} }
static int raid5_run (mddev_t *mddev) static int run (mddev_t *mddev)
{ {
raid5_conf_t *conf; raid5_conf_t *conf;
int i, j, raid_disk, memory; int i, j, raid_disk, memory;
...@@ -1348,7 +1348,7 @@ static int raid5_run (mddev_t *mddev) ...@@ -1348,7 +1348,7 @@ static int raid5_run (mddev_t *mddev)
mdp_disk_t *desc; mdp_disk_t *desc;
mdk_rdev_t *rdev; mdk_rdev_t *rdev;
struct disk_info *disk; struct disk_info *disk;
struct md_list_head *tmp; struct list_head *tmp;
int start_recovery = 0; int start_recovery = 0;
MOD_INC_USE_COUNT; MOD_INC_USE_COUNT;
...@@ -1365,12 +1365,12 @@ static int raid5_run (mddev_t *mddev) ...@@ -1365,12 +1365,12 @@ static int raid5_run (mddev_t *mddev)
memset (conf, 0, sizeof (*conf)); memset (conf, 0, sizeof (*conf));
conf->mddev = mddev; conf->mddev = mddev;
if ((conf->stripe_hashtbl = (struct stripe_head **) md__get_free_pages(GFP_ATOMIC, HASH_PAGES_ORDER)) == NULL) if ((conf->stripe_hashtbl = (struct stripe_head **) __get_free_pages(GFP_ATOMIC, HASH_PAGES_ORDER)) == NULL)
goto abort; goto abort;
memset(conf->stripe_hashtbl, 0, HASH_PAGES * PAGE_SIZE); memset(conf->stripe_hashtbl, 0, HASH_PAGES * PAGE_SIZE);
conf->device_lock = MD_SPIN_LOCK_UNLOCKED; conf->device_lock = SPIN_LOCK_UNLOCKED;
md_init_waitqueue_head(&conf->wait_for_stripe); init_waitqueue_head(&conf->wait_for_stripe);
INIT_LIST_HEAD(&conf->handle_list); INIT_LIST_HEAD(&conf->handle_list);
INIT_LIST_HEAD(&conf->delayed_list); INIT_LIST_HEAD(&conf->delayed_list);
INIT_LIST_HEAD(&conf->inactive_list); INIT_LIST_HEAD(&conf->inactive_list);
...@@ -1383,7 +1383,7 @@ static int raid5_run (mddev_t *mddev) ...@@ -1383,7 +1383,7 @@ static int raid5_run (mddev_t *mddev)
conf->plug_tq.routine = &raid5_unplug_device; conf->plug_tq.routine = &raid5_unplug_device;
conf->plug_tq.data = conf; conf->plug_tq.data = conf;
PRINTK("raid5_run(md%d) called.\n", mdidx(mddev)); PRINTK("raid5: run(md%d) called.\n", mdidx(mddev));
ITERATE_RDEV(mddev,rdev,tmp) { ITERATE_RDEV(mddev,rdev,tmp) {
/* /*
...@@ -1580,7 +1580,7 @@ static int raid5_run (mddev_t *mddev) ...@@ -1580,7 +1580,7 @@ static int raid5_run (mddev_t *mddev)
return -EIO; return -EIO;
} }
static int raid5_stop_resync (mddev_t *mddev) static int stop_resync (mddev_t *mddev)
{ {
raid5_conf_t *conf = mddev_to_conf(mddev); raid5_conf_t *conf = mddev_to_conf(mddev);
mdk_thread_t *thread = conf->resync_thread; mdk_thread_t *thread = conf->resync_thread;
...@@ -1597,7 +1597,7 @@ static int raid5_stop_resync (mddev_t *mddev) ...@@ -1597,7 +1597,7 @@ static int raid5_stop_resync (mddev_t *mddev)
return 0; return 0;
} }
static int raid5_restart_resync (mddev_t *mddev) static int restart_resync (mddev_t *mddev)
{ {
raid5_conf_t *conf = mddev_to_conf(mddev); raid5_conf_t *conf = mddev_to_conf(mddev);
...@@ -1616,7 +1616,7 @@ static int raid5_restart_resync (mddev_t *mddev) ...@@ -1616,7 +1616,7 @@ static int raid5_restart_resync (mddev_t *mddev)
} }
static int raid5_stop (mddev_t *mddev) static int stop (mddev_t *mddev)
{ {
raid5_conf_t *conf = (raid5_conf_t *) mddev->private; raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
...@@ -1651,7 +1651,7 @@ static void printall (raid5_conf_t *conf) ...@@ -1651,7 +1651,7 @@ static void printall (raid5_conf_t *conf)
struct stripe_head *sh; struct stripe_head *sh;
int i; int i;
md_spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
for (i = 0; i < NR_HASH; i++) { for (i = 0; i < NR_HASH; i++) {
sh = conf->stripe_hashtbl[i]; sh = conf->stripe_hashtbl[i];
for (; sh; sh = sh->hash_next) { for (; sh; sh = sh->hash_next) {
...@@ -1660,13 +1660,13 @@ static void printall (raid5_conf_t *conf) ...@@ -1660,13 +1660,13 @@ static void printall (raid5_conf_t *conf)
print_sh(sh); print_sh(sh);
} }
} }
md_spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
PRINTK("--- raid5d inactive\n"); PRINTK("--- raid5d inactive\n");
} }
#endif #endif
static int raid5_status (char *page, mddev_t *mddev) static int status (char *page, mddev_t *mddev)
{ {
raid5_conf_t *conf = (raid5_conf_t *) mddev->private; raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
mdp_super_t *sb = mddev->sb; mdp_super_t *sb = mddev->sb;
...@@ -1711,7 +1711,7 @@ static void print_raid5_conf (raid5_conf_t *conf) ...@@ -1711,7 +1711,7 @@ static void print_raid5_conf (raid5_conf_t *conf)
} }
} }
static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state) static int diskop(mddev_t *mddev, mdp_disk_t **d, int state)
{ {
int err = 0; int err = 0;
int i, failed_disk=-1, spare_disk=-1, removed_disk=-1, added_disk=-1; int i, failed_disk=-1, spare_disk=-1, removed_disk=-1, added_disk=-1;
...@@ -1722,7 +1722,7 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state) ...@@ -1722,7 +1722,7 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state)
mdk_rdev_t *spare_rdev, *failed_rdev; mdk_rdev_t *spare_rdev, *failed_rdev;
print_raid5_conf(conf); print_raid5_conf(conf);
md_spin_lock_irq(&conf->device_lock); spin_lock_irq(&conf->device_lock);
/* /*
* find the disk ... * find the disk ...
*/ */
...@@ -1980,7 +1980,7 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state) ...@@ -1980,7 +1980,7 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state)
goto abort; goto abort;
} }
abort: abort:
md_spin_unlock_irq(&conf->device_lock); spin_unlock_irq(&conf->device_lock);
print_raid5_conf(conf); print_raid5_conf(conf);
return err; return err;
} }
...@@ -1988,18 +1988,18 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state) ...@@ -1988,18 +1988,18 @@ static int raid5_diskop(mddev_t *mddev, mdp_disk_t **d, int state)
static mdk_personality_t raid5_personality= static mdk_personality_t raid5_personality=
{ {
name: "raid5", name: "raid5",
make_request: raid5_make_request, make_request: make_request,
run: raid5_run, run: run,
stop: raid5_stop, stop: stop,
status: raid5_status, status: status,
error_handler: raid5_error, error_handler: error,
diskop: raid5_diskop, diskop: diskop,
stop_resync: raid5_stop_resync, stop_resync: stop_resync,
restart_resync: raid5_restart_resync, restart_resync: restart_resync,
sync_request: raid5_sync_request sync_request: sync_request
}; };
static int md__init raid5_init (void) static int __init raid5_init (void)
{ {
return register_md_personality (RAID5, &raid5_personality); return register_md_personality (RAID5, &raid5_personality);
} }
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#define BH_TRACE 0 #define BH_TRACE 0
#include <linux/module.h> #include <linux/module.h>
#include <linux/raid/md.h> #include <linux/raid/md.h>
#include <linux/raid/md_compatible.h>
#include <linux/raid/xor.h> #include <linux/raid/xor.h>
#include <asm/xor.h> #include <asm/xor.h>
...@@ -103,7 +102,7 @@ calibrate_xor_block(void) ...@@ -103,7 +102,7 @@ calibrate_xor_block(void)
void *b1, *b2; void *b1, *b2;
struct xor_block_template *f, *fastest; struct xor_block_template *f, *fastest;
b1 = (void *) md__get_free_pages(GFP_KERNEL, 2); b1 = (void *) __get_free_pages(GFP_KERNEL, 2);
if (! b1) { if (! b1) {
printk("raid5: Yikes! No memory available.\n"); printk("raid5: Yikes! No memory available.\n");
return -ENOMEM; return -ENOMEM;
...@@ -137,7 +136,7 @@ calibrate_xor_block(void) ...@@ -137,7 +136,7 @@ calibrate_xor_block(void)
return 0; return 0;
} }
MD_EXPORT_SYMBOL(xor_block); EXPORT_SYMBOL(xor_block);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(calibrate_xor_block); module_init(calibrate_xor_block);
...@@ -839,6 +839,8 @@ static struct xor_block_template xor_block_pIII_sse = { ...@@ -839,6 +839,8 @@ static struct xor_block_template xor_block_pIII_sse = {
/* Also try the generic routines. */ /* Also try the generic routines. */
#include <asm-generic/xor.h> #include <asm-generic/xor.h>
#define cpu_has_mmx (test_bit(X86_FEATURE_MMX, boot_cpu_data.x86_capability))
#undef XOR_TRY_TEMPLATES #undef XOR_TRY_TEMPLATES
#define XOR_TRY_TEMPLATES \ #define XOR_TRY_TEMPLATES \
do { \ do { \
...@@ -846,7 +848,7 @@ static struct xor_block_template xor_block_pIII_sse = { ...@@ -846,7 +848,7 @@ static struct xor_block_template xor_block_pIII_sse = {
xor_speed(&xor_block_32regs); \ xor_speed(&xor_block_32regs); \
if (cpu_has_xmm) \ if (cpu_has_xmm) \
xor_speed(&xor_block_pIII_sse); \ xor_speed(&xor_block_pIII_sse); \
if (md_cpu_has_mmx()) { \ if (cpu_has_mmx) { \
xor_speed(&xor_block_pII_mmx); \ xor_speed(&xor_block_pII_mmx); \
xor_speed(&xor_block_p5_mmx); \ xor_speed(&xor_block_p5_mmx); \
} \ } \
......
...@@ -215,11 +215,11 @@ struct raid5_private_data { ...@@ -215,11 +215,11 @@ struct raid5_private_data {
*/ */
atomic_t active_stripes; atomic_t active_stripes;
struct list_head inactive_list; struct list_head inactive_list;
md_wait_queue_head_t wait_for_stripe; wait_queue_head_t wait_for_stripe;
int inactive_blocked; /* release of inactive stripes blocked, int inactive_blocked; /* release of inactive stripes blocked,
* waiting for 25% to be free * waiting for 25% to be free
*/ */
md_spinlock_t device_lock; spinlock_t device_lock;
int plugged; int plugged;
struct tq_struct plug_tq; struct tq_struct plug_tq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment