mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-12 23:33:55 +08:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md
Pull MD fix from Shaohua Li: "As you know, Neil steps down from MD. I'm looking after it. Here are some patches queued. A build fix from Gayatri and several trival patches from me" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md: md-cluster: delete useless code md-cluster: fix missing memory free raid6/algos.c : bug fix : Add the missing definitions to the pq.h file MD: add myself as MD maintainer MD: rename some functions
This commit is contained in:
commit
5787c25240
@ -10154,6 +10154,7 @@ S: Supported
|
|||||||
F: drivers/media/pci/solo6x10/
|
F: drivers/media/pci/solo6x10/
|
||||||
|
|
||||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||||
|
M: Shaohua Li <shli@kernel.org>
|
||||||
L: linux-raid@vger.kernel.org
|
L: linux-raid@vger.kernel.org
|
||||||
T: git git://neil.brown.name/md
|
T: git git://neil.brown.name/md
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -210,10 +210,6 @@ static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
|
|||||||
struct block_device *bdev;
|
struct block_device *bdev;
|
||||||
struct mddev *mddev = bitmap->mddev;
|
struct mddev *mddev = bitmap->mddev;
|
||||||
struct bitmap_storage *store = &bitmap->storage;
|
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) {
|
while ((rdev = next_active_rdev(rdev, mddev)) != NULL) {
|
||||||
int size = PAGE_SIZE;
|
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;
|
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;
|
struct faulty_conf *conf = mddev->private;
|
||||||
int failit = 0;
|
int failit = 0;
|
||||||
@ -226,7 +226,7 @@ static void make_request(struct mddev *mddev, struct bio *bio)
|
|||||||
generic_make_request(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;
|
struct faulty_conf *conf = mddev->private;
|
||||||
int n;
|
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 mode = mddev->new_layout & ModeMask;
|
||||||
int count = mddev->new_layout >> ModeShift;
|
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;
|
return sectors;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int run(struct mddev *mddev)
|
static int faulty_run(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
int i;
|
int i;
|
||||||
@ -327,7 +327,7 @@ static int run(struct mddev *mddev)
|
|||||||
md_set_array_sectors(mddev, faulty_size(mddev, 0, 0));
|
md_set_array_sectors(mddev, faulty_size(mddev, 0, 0));
|
||||||
mddev->private = conf;
|
mddev->private = conf;
|
||||||
|
|
||||||
reshape(mddev);
|
faulty_reshape(mddev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -344,11 +344,11 @@ static struct md_personality faulty_personality =
|
|||||||
.name = "faulty",
|
.name = "faulty",
|
||||||
.level = LEVEL_FAULTY,
|
.level = LEVEL_FAULTY,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = faulty_make_request,
|
||||||
.run = run,
|
.run = faulty_run,
|
||||||
.free = faulty_free,
|
.free = faulty_free,
|
||||||
.status = status,
|
.status = faulty_status,
|
||||||
.check_reshape = reshape,
|
.check_reshape = faulty_reshape,
|
||||||
.size = faulty_size,
|
.size = faulty_size,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -293,6 +293,7 @@ static void recover_bitmaps(struct md_thread *thread)
|
|||||||
dlm_unlock:
|
dlm_unlock:
|
||||||
dlm_unlock_sync(bm_lockres);
|
dlm_unlock_sync(bm_lockres);
|
||||||
clear_bit:
|
clear_bit:
|
||||||
|
lockres_free(bm_lockres);
|
||||||
clear_bit(slot, &cinfo->recovery_map);
|
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);
|
bm_lockres = lockres_init(mddev, str, NULL, 1);
|
||||||
if (!bm_lockres)
|
if (!bm_lockres)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
if (i == (cinfo->slot_number - 1))
|
if (i == (cinfo->slot_number - 1)) {
|
||||||
|
lockres_free(bm_lockres);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
bm_lockres->flags |= DLM_LKF_NOQUEUE;
|
bm_lockres->flags |= DLM_LKF_NOQUEUE;
|
||||||
ret = dlm_lock_sync(bm_lockres, DLM_LOCK_PW);
|
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->token_lockres);
|
||||||
lockres_free(cinfo->ack_lockres);
|
lockres_free(cinfo->ack_lockres);
|
||||||
lockres_free(cinfo->no_new_dev_lockres);
|
lockres_free(cinfo->no_new_dev_lockres);
|
||||||
|
lockres_free(cinfo->resync_lockres);
|
||||||
lockres_free(cinfo->bitmap_lockres);
|
lockres_free(cinfo->bitmap_lockres);
|
||||||
unlock_all_bitmaps(mddev);
|
unlock_all_bitmaps(mddev);
|
||||||
dlm_release_lockspace(cinfo->lockspace, 2);
|
dlm_release_lockspace(cinfo->lockspace, 2);
|
||||||
|
@ -1044,7 +1044,7 @@ static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
|
|||||||
kfree(plug);
|
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 r1conf *conf = mddev->private;
|
||||||
struct raid1_info *mirror;
|
struct raid1_info *mirror;
|
||||||
@ -1422,7 +1422,7 @@ read_again:
|
|||||||
wake_up(&conf->wait_barrier);
|
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;
|
struct r1conf *conf = mddev->private;
|
||||||
int i;
|
int i;
|
||||||
@ -1439,7 +1439,7 @@ static void status(struct seq_file *seq, struct mddev *mddev)
|
|||||||
seq_printf(seq, "]");
|
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];
|
char b[BDEVNAME_SIZE];
|
||||||
struct r1conf *conf = mddev->private;
|
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.
|
* 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 r1conf *conf = mddev->private;
|
||||||
struct r1bio *r1_bio;
|
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 void raid1_free(struct mddev *mddev, void *priv);
|
||||||
static int run(struct mddev *mddev)
|
static int raid1_run(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
struct r1conf *conf;
|
struct r1conf *conf;
|
||||||
int i;
|
int i;
|
||||||
@ -3170,15 +3171,15 @@ static struct md_personality raid1_personality =
|
|||||||
.name = "raid1",
|
.name = "raid1",
|
||||||
.level = 1,
|
.level = 1,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = raid1_make_request,
|
||||||
.run = run,
|
.run = raid1_run,
|
||||||
.free = raid1_free,
|
.free = raid1_free,
|
||||||
.status = status,
|
.status = raid1_status,
|
||||||
.error_handler = error,
|
.error_handler = raid1_error,
|
||||||
.hot_add_disk = raid1_add_disk,
|
.hot_add_disk = raid1_add_disk,
|
||||||
.hot_remove_disk= raid1_remove_disk,
|
.hot_remove_disk= raid1_remove_disk,
|
||||||
.spare_active = raid1_spare_active,
|
.spare_active = raid1_spare_active,
|
||||||
.sync_request = sync_request,
|
.sync_request = raid1_sync_request,
|
||||||
.resize = raid1_resize,
|
.resize = raid1_resize,
|
||||||
.size = raid1_size,
|
.size = raid1_size,
|
||||||
.check_reshape = raid1_reshape,
|
.check_reshape = raid1_reshape,
|
||||||
|
@ -1442,7 +1442,7 @@ retry_write:
|
|||||||
one_write_done(r10_bio);
|
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;
|
struct r10conf *conf = mddev->private;
|
||||||
sector_t chunk_mask = (conf->geo.chunk_mask & conf->prev.chunk_mask);
|
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);
|
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;
|
struct r10conf *conf = mddev->private;
|
||||||
int i;
|
int i;
|
||||||
@ -1562,7 +1562,7 @@ static int enough(struct r10conf *conf, int ignore)
|
|||||||
_enough(conf, 1, 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];
|
char b[BDEVNAME_SIZE];
|
||||||
struct r10conf *conf = mddev->private;
|
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)
|
int *skipped)
|
||||||
{
|
{
|
||||||
struct r10conf *conf = mddev->private;
|
struct r10conf *conf = mddev->private;
|
||||||
@ -3523,7 +3523,7 @@ static struct r10conf *setup_conf(struct mddev *mddev)
|
|||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int run(struct mddev *mddev)
|
static int raid10_run(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
struct r10conf *conf;
|
struct r10conf *conf;
|
||||||
int i, disk_idx, chunk_size;
|
int i, disk_idx, chunk_size;
|
||||||
@ -4617,15 +4617,15 @@ static struct md_personality raid10_personality =
|
|||||||
.name = "raid10",
|
.name = "raid10",
|
||||||
.level = 10,
|
.level = 10,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = raid10_make_request,
|
||||||
.run = run,
|
.run = raid10_run,
|
||||||
.free = raid10_free,
|
.free = raid10_free,
|
||||||
.status = status,
|
.status = raid10_status,
|
||||||
.error_handler = error,
|
.error_handler = raid10_error,
|
||||||
.hot_add_disk = raid10_add_disk,
|
.hot_add_disk = raid10_add_disk,
|
||||||
.hot_remove_disk= raid10_remove_disk,
|
.hot_remove_disk= raid10_remove_disk,
|
||||||
.spare_active = raid10_spare_active,
|
.spare_active = raid10_spare_active,
|
||||||
.sync_request = sync_request,
|
.sync_request = raid10_sync_request,
|
||||||
.quiesce = raid10_quiesce,
|
.quiesce = raid10_quiesce,
|
||||||
.size = raid10_size,
|
.size = raid10_size,
|
||||||
.resize = raid10_resize,
|
.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);
|
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];
|
char b[BDEVNAME_SIZE];
|
||||||
struct r5conf *conf = mddev->private;
|
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
|
* 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
|
* reference count to avoid race. The reference count should already be
|
||||||
* increased before this function is called (for example, in
|
* 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
|
* stripe. If a stripe is owned by one stripe, the stripe lock will
|
||||||
* protect it.
|
* 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;
|
struct r5conf *conf = mddev->private;
|
||||||
int dd_idx;
|
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,
|
new_sector = raid5_compute_sector(conf, logical_sector,
|
||||||
previous,
|
previous,
|
||||||
&dd_idx, NULL);
|
&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)new_sector,
|
||||||
(unsigned long long)logical_sector);
|
(unsigned long long)logical_sector);
|
||||||
|
|
||||||
@ -5575,7 +5575,8 @@ ret:
|
|||||||
return retn;
|
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 r5conf *conf = mddev->private;
|
||||||
struct stripe_head *sh;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int run(struct mddev *mddev)
|
static int raid5_run(struct mddev *mddev)
|
||||||
{
|
{
|
||||||
struct r5conf *conf;
|
struct r5conf *conf;
|
||||||
int working_disks = 0;
|
int working_disks = 0;
|
||||||
@ -7048,7 +7049,7 @@ static void raid5_free(struct mddev *mddev, void *priv)
|
|||||||
mddev->to_remove = &raid5_attrs_group;
|
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;
|
struct r5conf *conf = mddev->private;
|
||||||
int i;
|
int i;
|
||||||
@ -7864,15 +7865,15 @@ static struct md_personality raid6_personality =
|
|||||||
.name = "raid6",
|
.name = "raid6",
|
||||||
.level = 6,
|
.level = 6,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = raid5_make_request,
|
||||||
.run = run,
|
.run = raid5_run,
|
||||||
.free = raid5_free,
|
.free = raid5_free,
|
||||||
.status = status,
|
.status = raid5_status,
|
||||||
.error_handler = error,
|
.error_handler = raid5_error,
|
||||||
.hot_add_disk = raid5_add_disk,
|
.hot_add_disk = raid5_add_disk,
|
||||||
.hot_remove_disk= raid5_remove_disk,
|
.hot_remove_disk= raid5_remove_disk,
|
||||||
.spare_active = raid5_spare_active,
|
.spare_active = raid5_spare_active,
|
||||||
.sync_request = sync_request,
|
.sync_request = raid5_sync_request,
|
||||||
.resize = raid5_resize,
|
.resize = raid5_resize,
|
||||||
.size = raid5_size,
|
.size = raid5_size,
|
||||||
.check_reshape = raid6_check_reshape,
|
.check_reshape = raid6_check_reshape,
|
||||||
@ -7887,15 +7888,15 @@ static struct md_personality raid5_personality =
|
|||||||
.name = "raid5",
|
.name = "raid5",
|
||||||
.level = 5,
|
.level = 5,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = raid5_make_request,
|
||||||
.run = run,
|
.run = raid5_run,
|
||||||
.free = raid5_free,
|
.free = raid5_free,
|
||||||
.status = status,
|
.status = raid5_status,
|
||||||
.error_handler = error,
|
.error_handler = raid5_error,
|
||||||
.hot_add_disk = raid5_add_disk,
|
.hot_add_disk = raid5_add_disk,
|
||||||
.hot_remove_disk= raid5_remove_disk,
|
.hot_remove_disk= raid5_remove_disk,
|
||||||
.spare_active = raid5_spare_active,
|
.spare_active = raid5_spare_active,
|
||||||
.sync_request = sync_request,
|
.sync_request = raid5_sync_request,
|
||||||
.resize = raid5_resize,
|
.resize = raid5_resize,
|
||||||
.size = raid5_size,
|
.size = raid5_size,
|
||||||
.check_reshape = raid5_check_reshape,
|
.check_reshape = raid5_check_reshape,
|
||||||
@ -7911,15 +7912,15 @@ static struct md_personality raid4_personality =
|
|||||||
.name = "raid4",
|
.name = "raid4",
|
||||||
.level = 4,
|
.level = 4,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.make_request = make_request,
|
.make_request = raid5_make_request,
|
||||||
.run = run,
|
.run = raid5_run,
|
||||||
.free = raid5_free,
|
.free = raid5_free,
|
||||||
.status = status,
|
.status = raid5_status,
|
||||||
.error_handler = error,
|
.error_handler = raid5_error,
|
||||||
.hot_add_disk = raid5_add_disk,
|
.hot_add_disk = raid5_add_disk,
|
||||||
.hot_remove_disk= raid5_remove_disk,
|
.hot_remove_disk= raid5_remove_disk,
|
||||||
.spare_active = raid5_spare_active,
|
.spare_active = raid5_spare_active,
|
||||||
.sync_request = sync_request,
|
.sync_request = raid5_sync_request,
|
||||||
.resize = raid5_resize,
|
.resize = raid5_resize,
|
||||||
.size = raid5_size,
|
.size = raid5_size,
|
||||||
.check_reshape = raid5_check_reshape,
|
.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 jiffies raid6_jiffies()
|
||||||
# define printk printf
|
# 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 GFP_KERNEL 0
|
||||||
# define __get_free_pages(x, y) ((unsigned long)mmap(NULL, PAGE_SIZE << (y), \
|
# define __get_free_pages(x, y) ((unsigned long)mmap(NULL, PAGE_SIZE << (y), \
|
||||||
PROT_READ|PROT_WRITE, \
|
PROT_READ|PROT_WRITE, \
|
||||||
|
Loading…
Reference in New Issue
Block a user