mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 00:52:01 +00:00
Merge branch 'mymd/for-next' into mymd/for-linus
This commit is contained in:
commit
9ea064158f
@ -10174,6 +10174,7 @@ S: Supported
|
||||
F: drivers/media/pci/solo6x10/
|
||||
|
||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||
M: Shaohua Li <shli@kernel.org>
|
||||
L: linux-raid@vger.kernel.org
|
||||
T: git git://neil.brown.name/md
|
||||
S: Supported
|
||||
|
@ -210,10 +210,6 @@ static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
|
||||
struct block_device *bdev;
|
||||
struct mddev *mddev = bitmap->mddev;
|
||||
struct bitmap_storage *store = &bitmap->storage;
|
||||
int node_offset = 0;
|
||||
|
||||
if (mddev_is_clustered(bitmap->mddev))
|
||||
node_offset = bitmap->cluster_slot * store->file_pages;
|
||||
|
||||
while ((rdev = next_active_rdev(rdev, mddev)) != NULL) {
|
||||
int size = PAGE_SIZE;
|
||||
|
@ -170,7 +170,7 @@ static void add_sector(struct faulty_conf *conf, sector_t start, int mode)
|
||||
conf->nfaults = n+1;
|
||||
}
|
||||
|
||||
static void make_request(struct mddev *mddev, struct bio *bio)
|
||||
static void faulty_make_request(struct mddev *mddev, struct bio *bio)
|
||||
{
|
||||
struct faulty_conf *conf = mddev->private;
|
||||
int failit = 0;
|
||||
@ -226,7 +226,7 @@ static void make_request(struct mddev *mddev, struct bio *bio)
|
||||
generic_make_request(bio);
|
||||
}
|
||||
|
||||
static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
static void faulty_status(struct seq_file *seq, struct mddev *mddev)
|
||||
{
|
||||
struct faulty_conf *conf = mddev->private;
|
||||
int n;
|
||||
@ -259,7 +259,7 @@ static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
}
|
||||
|
||||
|
||||
static int reshape(struct mddev *mddev)
|
||||
static int faulty_reshape(struct mddev *mddev)
|
||||
{
|
||||
int mode = mddev->new_layout & ModeMask;
|
||||
int count = mddev->new_layout >> ModeShift;
|
||||
@ -299,7 +299,7 @@ static sector_t faulty_size(struct mddev *mddev, sector_t sectors, int raid_disk
|
||||
return sectors;
|
||||
}
|
||||
|
||||
static int run(struct mddev *mddev)
|
||||
static int faulty_run(struct mddev *mddev)
|
||||
{
|
||||
struct md_rdev *rdev;
|
||||
int i;
|
||||
@ -327,7 +327,7 @@ static int run(struct mddev *mddev)
|
||||
md_set_array_sectors(mddev, faulty_size(mddev, 0, 0));
|
||||
mddev->private = conf;
|
||||
|
||||
reshape(mddev);
|
||||
faulty_reshape(mddev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -344,11 +344,11 @@ static struct md_personality faulty_personality =
|
||||
.name = "faulty",
|
||||
.level = LEVEL_FAULTY,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = faulty_make_request,
|
||||
.run = faulty_run,
|
||||
.free = faulty_free,
|
||||
.status = status,
|
||||
.check_reshape = reshape,
|
||||
.status = faulty_status,
|
||||
.check_reshape = faulty_reshape,
|
||||
.size = faulty_size,
|
||||
};
|
||||
|
||||
|
@ -293,6 +293,7 @@ static void recover_bitmaps(struct md_thread *thread)
|
||||
dlm_unlock:
|
||||
dlm_unlock_sync(bm_lockres);
|
||||
clear_bit:
|
||||
lockres_free(bm_lockres);
|
||||
clear_bit(slot, &cinfo->recovery_map);
|
||||
}
|
||||
}
|
||||
@ -682,8 +683,10 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots)
|
||||
bm_lockres = lockres_init(mddev, str, NULL, 1);
|
||||
if (!bm_lockres)
|
||||
return -ENOMEM;
|
||||
if (i == (cinfo->slot_number - 1))
|
||||
if (i == (cinfo->slot_number - 1)) {
|
||||
lockres_free(bm_lockres);
|
||||
continue;
|
||||
}
|
||||
|
||||
bm_lockres->flags |= DLM_LKF_NOQUEUE;
|
||||
ret = dlm_lock_sync(bm_lockres, DLM_LOCK_PW);
|
||||
@ -858,6 +861,7 @@ static int leave(struct mddev *mddev)
|
||||
lockres_free(cinfo->token_lockres);
|
||||
lockres_free(cinfo->ack_lockres);
|
||||
lockres_free(cinfo->no_new_dev_lockres);
|
||||
lockres_free(cinfo->resync_lockres);
|
||||
lockres_free(cinfo->bitmap_lockres);
|
||||
unlock_all_bitmaps(mddev);
|
||||
dlm_release_lockspace(cinfo->lockspace, 2);
|
||||
|
@ -1044,7 +1044,7 @@ static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
|
||||
kfree(plug);
|
||||
}
|
||||
|
||||
static void make_request(struct mddev *mddev, struct bio * bio)
|
||||
static void raid1_make_request(struct mddev *mddev, struct bio * bio)
|
||||
{
|
||||
struct r1conf *conf = mddev->private;
|
||||
struct raid1_info *mirror;
|
||||
@ -1422,7 +1422,7 @@ read_again:
|
||||
wake_up(&conf->wait_barrier);
|
||||
}
|
||||
|
||||
static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
static void raid1_status(struct seq_file *seq, struct mddev *mddev)
|
||||
{
|
||||
struct r1conf *conf = mddev->private;
|
||||
int i;
|
||||
@ -1439,7 +1439,7 @@ static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
seq_printf(seq, "]");
|
||||
}
|
||||
|
||||
static void error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
static void raid1_error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
{
|
||||
char b[BDEVNAME_SIZE];
|
||||
struct r1conf *conf = mddev->private;
|
||||
@ -2472,7 +2472,8 @@ static int init_resync(struct r1conf *conf)
|
||||
* that can be installed to exclude normal IO requests.
|
||||
*/
|
||||
|
||||
static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped)
|
||||
static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
int *skipped)
|
||||
{
|
||||
struct r1conf *conf = mddev->private;
|
||||
struct r1bio *r1_bio;
|
||||
@ -2890,7 +2891,7 @@ static struct r1conf *setup_conf(struct mddev *mddev)
|
||||
}
|
||||
|
||||
static void raid1_free(struct mddev *mddev, void *priv);
|
||||
static int run(struct mddev *mddev)
|
||||
static int raid1_run(struct mddev *mddev)
|
||||
{
|
||||
struct r1conf *conf;
|
||||
int i;
|
||||
@ -3170,15 +3171,15 @@ static struct md_personality raid1_personality =
|
||||
.name = "raid1",
|
||||
.level = 1,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = raid1_make_request,
|
||||
.run = raid1_run,
|
||||
.free = raid1_free,
|
||||
.status = status,
|
||||
.error_handler = error,
|
||||
.status = raid1_status,
|
||||
.error_handler = raid1_error,
|
||||
.hot_add_disk = raid1_add_disk,
|
||||
.hot_remove_disk= raid1_remove_disk,
|
||||
.spare_active = raid1_spare_active,
|
||||
.sync_request = sync_request,
|
||||
.sync_request = raid1_sync_request,
|
||||
.resize = raid1_resize,
|
||||
.size = raid1_size,
|
||||
.check_reshape = raid1_reshape,
|
||||
|
@ -1442,7 +1442,7 @@ retry_write:
|
||||
one_write_done(r10_bio);
|
||||
}
|
||||
|
||||
static void make_request(struct mddev *mddev, struct bio *bio)
|
||||
static void raid10_make_request(struct mddev *mddev, struct bio *bio)
|
||||
{
|
||||
struct r10conf *conf = mddev->private;
|
||||
sector_t chunk_mask = (conf->geo.chunk_mask & conf->prev.chunk_mask);
|
||||
@ -1484,7 +1484,7 @@ static void make_request(struct mddev *mddev, struct bio *bio)
|
||||
wake_up(&conf->wait_barrier);
|
||||
}
|
||||
|
||||
static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
static void raid10_status(struct seq_file *seq, struct mddev *mddev)
|
||||
{
|
||||
struct r10conf *conf = mddev->private;
|
||||
int i;
|
||||
@ -1562,7 +1562,7 @@ static int enough(struct r10conf *conf, int ignore)
|
||||
_enough(conf, 1, ignore);
|
||||
}
|
||||
|
||||
static void error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
static void raid10_error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
{
|
||||
char b[BDEVNAME_SIZE];
|
||||
struct r10conf *conf = mddev->private;
|
||||
@ -2802,7 +2802,7 @@ static int init_resync(struct r10conf *conf)
|
||||
*
|
||||
*/
|
||||
|
||||
static sector_t sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
int *skipped)
|
||||
{
|
||||
struct r10conf *conf = mddev->private;
|
||||
@ -3523,7 +3523,7 @@ static struct r10conf *setup_conf(struct mddev *mddev)
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
static int run(struct mddev *mddev)
|
||||
static int raid10_run(struct mddev *mddev)
|
||||
{
|
||||
struct r10conf *conf;
|
||||
int i, disk_idx, chunk_size;
|
||||
@ -4617,15 +4617,15 @@ static struct md_personality raid10_personality =
|
||||
.name = "raid10",
|
||||
.level = 10,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = raid10_make_request,
|
||||
.run = raid10_run,
|
||||
.free = raid10_free,
|
||||
.status = status,
|
||||
.error_handler = error,
|
||||
.status = raid10_status,
|
||||
.error_handler = raid10_error,
|
||||
.hot_add_disk = raid10_add_disk,
|
||||
.hot_remove_disk= raid10_remove_disk,
|
||||
.spare_active = raid10_spare_active,
|
||||
.sync_request = sync_request,
|
||||
.sync_request = raid10_sync_request,
|
||||
.quiesce = raid10_quiesce,
|
||||
.size = raid10_size,
|
||||
.resize = raid10_resize,
|
||||
|
@ -2496,7 +2496,7 @@ static void raid5_build_block(struct stripe_head *sh, int i, int previous)
|
||||
dev->sector = raid5_compute_blocknr(sh, i, previous);
|
||||
}
|
||||
|
||||
static void error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
static void raid5_error(struct mddev *mddev, struct md_rdev *rdev)
|
||||
{
|
||||
char b[BDEVNAME_SIZE];
|
||||
struct r5conf *conf = mddev->private;
|
||||
@ -2958,7 +2958,7 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx,
|
||||
* If several bio share a stripe. The bio bi_phys_segments acts as a
|
||||
* reference count to avoid race. The reference count should already be
|
||||
* increased before this function is called (for example, in
|
||||
* make_request()), so other bio sharing this stripe will not free the
|
||||
* raid5_make_request()), so other bio sharing this stripe will not free the
|
||||
* stripe. If a stripe is owned by one stripe, the stripe lock will
|
||||
* protect it.
|
||||
*/
|
||||
@ -5135,7 +5135,7 @@ static void make_discard_request(struct mddev *mddev, struct bio *bi)
|
||||
}
|
||||
}
|
||||
|
||||
static void make_request(struct mddev *mddev, struct bio * bi)
|
||||
static void raid5_make_request(struct mddev *mddev, struct bio * bi)
|
||||
{
|
||||
struct r5conf *conf = mddev->private;
|
||||
int dd_idx;
|
||||
@ -5225,7 +5225,7 @@ static void make_request(struct mddev *mddev, struct bio * bi)
|
||||
new_sector = raid5_compute_sector(conf, logical_sector,
|
||||
previous,
|
||||
&dd_idx, NULL);
|
||||
pr_debug("raid456: make_request, sector %llu logical %llu\n",
|
||||
pr_debug("raid456: raid5_make_request, sector %llu logical %llu\n",
|
||||
(unsigned long long)new_sector,
|
||||
(unsigned long long)logical_sector);
|
||||
|
||||
@ -5575,7 +5575,8 @@ ret:
|
||||
return retn;
|
||||
}
|
||||
|
||||
static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipped)
|
||||
static inline sector_t raid5_sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
int *skipped)
|
||||
{
|
||||
struct r5conf *conf = mddev->private;
|
||||
struct stripe_head *sh;
|
||||
@ -6674,7 +6675,7 @@ static int only_parity(int raid_disk, int algo, int raid_disks, int max_degraded
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int run(struct mddev *mddev)
|
||||
static int raid5_run(struct mddev *mddev)
|
||||
{
|
||||
struct r5conf *conf;
|
||||
int working_disks = 0;
|
||||
@ -7048,7 +7049,7 @@ static void raid5_free(struct mddev *mddev, void *priv)
|
||||
mddev->to_remove = &raid5_attrs_group;
|
||||
}
|
||||
|
||||
static void status(struct seq_file *seq, struct mddev *mddev)
|
||||
static void raid5_status(struct seq_file *seq, struct mddev *mddev)
|
||||
{
|
||||
struct r5conf *conf = mddev->private;
|
||||
int i;
|
||||
@ -7864,15 +7865,15 @@ static struct md_personality raid6_personality =
|
||||
.name = "raid6",
|
||||
.level = 6,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = raid5_make_request,
|
||||
.run = raid5_run,
|
||||
.free = raid5_free,
|
||||
.status = status,
|
||||
.error_handler = error,
|
||||
.status = raid5_status,
|
||||
.error_handler = raid5_error,
|
||||
.hot_add_disk = raid5_add_disk,
|
||||
.hot_remove_disk= raid5_remove_disk,
|
||||
.spare_active = raid5_spare_active,
|
||||
.sync_request = sync_request,
|
||||
.sync_request = raid5_sync_request,
|
||||
.resize = raid5_resize,
|
||||
.size = raid5_size,
|
||||
.check_reshape = raid6_check_reshape,
|
||||
@ -7887,15 +7888,15 @@ static struct md_personality raid5_personality =
|
||||
.name = "raid5",
|
||||
.level = 5,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = raid5_make_request,
|
||||
.run = raid5_run,
|
||||
.free = raid5_free,
|
||||
.status = status,
|
||||
.error_handler = error,
|
||||
.status = raid5_status,
|
||||
.error_handler = raid5_error,
|
||||
.hot_add_disk = raid5_add_disk,
|
||||
.hot_remove_disk= raid5_remove_disk,
|
||||
.spare_active = raid5_spare_active,
|
||||
.sync_request = sync_request,
|
||||
.sync_request = raid5_sync_request,
|
||||
.resize = raid5_resize,
|
||||
.size = raid5_size,
|
||||
.check_reshape = raid5_check_reshape,
|
||||
@ -7911,15 +7912,15 @@ static struct md_personality raid4_personality =
|
||||
.name = "raid4",
|
||||
.level = 4,
|
||||
.owner = THIS_MODULE,
|
||||
.make_request = make_request,
|
||||
.run = run,
|
||||
.make_request = raid5_make_request,
|
||||
.run = raid5_run,
|
||||
.free = raid5_free,
|
||||
.status = status,
|
||||
.error_handler = error,
|
||||
.status = raid5_status,
|
||||
.error_handler = raid5_error,
|
||||
.hot_add_disk = raid5_add_disk,
|
||||
.hot_remove_disk= raid5_remove_disk,
|
||||
.spare_active = raid5_spare_active,
|
||||
.sync_request = sync_request,
|
||||
.sync_request = raid5_sync_request,
|
||||
.resize = raid5_resize,
|
||||
.size = raid5_size,
|
||||
.check_reshape = raid5_check_reshape,
|
||||
|
@ -152,6 +152,8 @@ void raid6_dual_recov(int disks, size_t bytes, int faila, int failb,
|
||||
|
||||
# define jiffies raid6_jiffies()
|
||||
# define printk printf
|
||||
# define pr_err(format, ...) fprintf(stderr, format, ## __VA_ARGS__)
|
||||
# define pr_info(format, ...) fprintf(stdout, format, ## __VA_ARGS__)
|
||||
# define GFP_KERNEL 0
|
||||
# define __get_free_pages(x, y) ((unsigned long)mmap(NULL, PAGE_SIZE << (y), \
|
||||
PROT_READ|PROT_WRITE, \
|
||||
|
Loading…
Reference in New Issue
Block a user