aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/bitmap.c12
-rw-r--r--drivers/md/dm-crypt.c14
-rw-r--r--drivers/md/md.c24
-rw-r--r--drivers/md/multipath.c4
-rw-r--r--drivers/md/raid1.c4
-rw-r--r--drivers/md/raid10.c6
6 files changed, 32 insertions, 32 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 8e67634e79a0..d6f614738bbd 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -536,7 +536,7 @@ static int bitmap_read_sb(struct bitmap *bitmap)
536 printk(KERN_INFO "%s: bitmap file is out of date (%llu < %llu) " 536 printk(KERN_INFO "%s: bitmap file is out of date (%llu < %llu) "
537 "-- forcing full recovery\n", bmname(bitmap), events, 537 "-- forcing full recovery\n", bmname(bitmap), events,
538 (unsigned long long) bitmap->mddev->events); 538 (unsigned long long) bitmap->mddev->events);
539 sb->state |= BITMAP_STALE; 539 sb->state |= cpu_to_le32(BITMAP_STALE);
540 } 540 }
541success: 541success:
542 /* assign fields using values from superblock */ 542 /* assign fields using values from superblock */
@@ -544,11 +544,11 @@ success:
544 bitmap->daemon_sleep = daemon_sleep; 544 bitmap->daemon_sleep = daemon_sleep;
545 bitmap->daemon_lastrun = jiffies; 545 bitmap->daemon_lastrun = jiffies;
546 bitmap->max_write_behind = write_behind; 546 bitmap->max_write_behind = write_behind;
547 bitmap->flags |= sb->state; 547 bitmap->flags |= le32_to_cpu(sb->state);
548 if (le32_to_cpu(sb->version) == BITMAP_MAJOR_HOSTENDIAN) 548 if (le32_to_cpu(sb->version) == BITMAP_MAJOR_HOSTENDIAN)
549 bitmap->flags |= BITMAP_HOSTENDIAN; 549 bitmap->flags |= BITMAP_HOSTENDIAN;
550 bitmap->events_cleared = le64_to_cpu(sb->events_cleared); 550 bitmap->events_cleared = le64_to_cpu(sb->events_cleared);
551 if (sb->state & BITMAP_STALE) 551 if (sb->state & cpu_to_le32(BITMAP_STALE))
552 bitmap->events_cleared = bitmap->mddev->events; 552 bitmap->events_cleared = bitmap->mddev->events;
553 err = 0; 553 err = 0;
554out: 554out:
@@ -578,9 +578,9 @@ static void bitmap_mask_state(struct bitmap *bitmap, enum bitmap_state bits,
578 spin_unlock_irqrestore(&bitmap->lock, flags); 578 spin_unlock_irqrestore(&bitmap->lock, flags);
579 sb = (bitmap_super_t *)kmap_atomic(bitmap->sb_page, KM_USER0); 579 sb = (bitmap_super_t *)kmap_atomic(bitmap->sb_page, KM_USER0);
580 switch (op) { 580 switch (op) {
581 case MASK_SET: sb->state |= bits; 581 case MASK_SET: sb->state |= cpu_to_le32(bits);
582 break; 582 break;
583 case MASK_UNSET: sb->state &= ~bits; 583 case MASK_UNSET: sb->state &= cpu_to_le32(~bits);
584 break; 584 break;
585 default: BUG(); 585 default: BUG();
586 } 586 }
@@ -1413,7 +1413,7 @@ int bitmap_create(mddev_t *mddev)
1413 int err; 1413 int err;
1414 sector_t start; 1414 sector_t start;
1415 1415
1416 BUG_ON(sizeof(bitmap_super_t) != 256); 1416 BUILD_BUG_ON(sizeof(bitmap_super_t) != 256);
1417 1417
1418 if (!file && !mddev->bitmap_offset) /* bitmap disabled, nothing to do */ 1418 if (!file && !mddev->bitmap_offset) /* bitmap disabled, nothing to do */
1419 return 0; 1419 return 0;
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 655d816760e5..08a40f4e4f60 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -16,6 +16,7 @@
16#include <linux/slab.h> 16#include <linux/slab.h>
17#include <linux/crypto.h> 17#include <linux/crypto.h>
18#include <linux/workqueue.h> 18#include <linux/workqueue.h>
19#include <linux/backing-dev.h>
19#include <asm/atomic.h> 20#include <asm/atomic.h>
20#include <linux/scatterlist.h> 21#include <linux/scatterlist.h>
21#include <asm/page.h> 22#include <asm/page.h>
@@ -602,7 +603,7 @@ static void process_write(struct crypt_io *io)
602 603
603 /* out of memory -> run queues */ 604 /* out of memory -> run queues */
604 if (remaining) 605 if (remaining)
605 blk_congestion_wait(bio_data_dir(clone), HZ/100); 606 congestion_wait(bio_data_dir(clone), HZ/100);
606 } 607 }
607} 608}
608 609
@@ -914,8 +915,6 @@ static int crypt_status(struct dm_target *ti, status_type_t type,
914 char *result, unsigned int maxlen) 915 char *result, unsigned int maxlen)
915{ 916{
916 struct crypt_config *cc = (struct crypt_config *) ti->private; 917 struct crypt_config *cc = (struct crypt_config *) ti->private;
917 const char *cipher;
918 const char *chainmode = NULL;
919 unsigned int sz = 0; 918 unsigned int sz = 0;
920 919
921 switch (type) { 920 switch (type) {
@@ -924,14 +923,11 @@ static int crypt_status(struct dm_target *ti, status_type_t type,
924 break; 923 break;
925 924
926 case STATUSTYPE_TABLE: 925 case STATUSTYPE_TABLE:
927 cipher = crypto_blkcipher_name(cc->tfm);
928
929 chainmode = cc->chainmode;
930
931 if (cc->iv_mode) 926 if (cc->iv_mode)
932 DMEMIT("%s-%s-%s ", cipher, chainmode, cc->iv_mode); 927 DMEMIT("%s-%s-%s ", cc->cipher, cc->chainmode,
928 cc->iv_mode);
933 else 929 else
934 DMEMIT("%s-%s ", cipher, chainmode); 930 DMEMIT("%s-%s ", cc->cipher, cc->chainmode);
935 931
936 if (cc->key_size > 0) { 932 if (cc->key_size > 0) {
937 if ((maxlen - sz) < ((cc->key_size << 1) + 1)) 933 if ((maxlen - sz) < ((cc->key_size << 1) + 1))
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 57fa64f93e5f..d11135604403 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -974,12 +974,13 @@ static void super_90_sync(mddev_t *mddev, mdk_rdev_t *rdev)
974 * version 1 superblock 974 * version 1 superblock
975 */ 975 */
976 976
977static unsigned int calc_sb_1_csum(struct mdp_superblock_1 * sb) 977static __le32 calc_sb_1_csum(struct mdp_superblock_1 * sb)
978{ 978{
979 unsigned int disk_csum, csum; 979 __le32 disk_csum;
980 u32 csum;
980 unsigned long long newcsum; 981 unsigned long long newcsum;
981 int size = 256 + le32_to_cpu(sb->max_dev)*2; 982 int size = 256 + le32_to_cpu(sb->max_dev)*2;
982 unsigned int *isuper = (unsigned int*)sb; 983 __le32 *isuper = (__le32*)sb;
983 int i; 984 int i;
984 985
985 disk_csum = sb->sb_csum; 986 disk_csum = sb->sb_csum;
@@ -989,7 +990,7 @@ static unsigned int calc_sb_1_csum(struct mdp_superblock_1 * sb)
989 newcsum += le32_to_cpu(*isuper++); 990 newcsum += le32_to_cpu(*isuper++);
990 991
991 if (size == 2) 992 if (size == 2)
992 newcsum += le16_to_cpu(*(unsigned short*) isuper); 993 newcsum += le16_to_cpu(*(__le16*) isuper);
993 994
994 csum = (newcsum & 0xffffffff) + (newcsum >> 32); 995 csum = (newcsum & 0xffffffff) + (newcsum >> 32);
995 sb->sb_csum = disk_csum; 996 sb->sb_csum = disk_csum;
@@ -1106,7 +1107,7 @@ static int super_1_load(mdk_rdev_t *rdev, mdk_rdev_t *refdev, int minor_version)
1106 if (le32_to_cpu(sb->chunksize)) 1107 if (le32_to_cpu(sb->chunksize))
1107 rdev->size &= ~((sector_t)le32_to_cpu(sb->chunksize)/2 - 1); 1108 rdev->size &= ~((sector_t)le32_to_cpu(sb->chunksize)/2 - 1);
1108 1109
1109 if (le32_to_cpu(sb->size) > rdev->size*2) 1110 if (le64_to_cpu(sb->size) > rdev->size*2)
1110 return -EINVAL; 1111 return -EINVAL;
1111 return ret; 1112 return ret;
1112} 1113}
@@ -1228,7 +1229,7 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
1228 else 1229 else
1229 sb->resync_offset = cpu_to_le64(0); 1230 sb->resync_offset = cpu_to_le64(0);
1230 1231
1231 sb->cnt_corrected_read = atomic_read(&rdev->corrected_errors); 1232 sb->cnt_corrected_read = cpu_to_le32(atomic_read(&rdev->corrected_errors));
1232 1233
1233 sb->raid_disks = cpu_to_le32(mddev->raid_disks); 1234 sb->raid_disks = cpu_to_le32(mddev->raid_disks);
1234 sb->size = cpu_to_le64(mddev->size<<1); 1235 sb->size = cpu_to_le64(mddev->size<<1);
@@ -2002,6 +2003,7 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi
2002 kobject_init(&rdev->kobj); 2003 kobject_init(&rdev->kobj);
2003 2004
2004 rdev->desc_nr = -1; 2005 rdev->desc_nr = -1;
2006 rdev->saved_raid_disk = -1;
2005 rdev->flags = 0; 2007 rdev->flags = 0;
2006 rdev->data_offset = 0; 2008 rdev->data_offset = 0;
2007 rdev->sb_events = 0; 2009 rdev->sb_events = 0;
@@ -3198,6 +3200,7 @@ static int do_md_run(mddev_t * mddev)
3198 3200
3199 mddev->changed = 1; 3201 mddev->changed = 1;
3200 md_new_event(mddev); 3202 md_new_event(mddev);
3203 kobject_uevent(&mddev->gendisk->kobj, KOBJ_ONLINE);
3201 return 0; 3204 return 0;
3202} 3205}
3203 3206
@@ -3311,6 +3314,7 @@ static int do_md_stop(mddev_t * mddev, int mode)
3311 3314
3312 module_put(mddev->pers->owner); 3315 module_put(mddev->pers->owner);
3313 mddev->pers = NULL; 3316 mddev->pers = NULL;
3317 kobject_uevent(&mddev->gendisk->kobj, KOBJ_OFFLINE);
3314 if (mddev->ro) 3318 if (mddev->ro)
3315 mddev->ro = 0; 3319 mddev->ro = 0;
3316 } 3320 }
@@ -4043,11 +4047,8 @@ static int update_size(mddev_t *mddev, unsigned long size)
4043 return -EBUSY; 4047 return -EBUSY;
4044 ITERATE_RDEV(mddev,rdev,tmp) { 4048 ITERATE_RDEV(mddev,rdev,tmp) {
4045 sector_t avail; 4049 sector_t avail;
4046 if (rdev->sb_offset > rdev->data_offset) 4050 avail = rdev->size * 2;
4047 avail = (rdev->sb_offset*2) - rdev->data_offset; 4051
4048 else
4049 avail = get_capacity(rdev->bdev->bd_disk)
4050 - rdev->data_offset;
4051 if (fit && (size == 0 || size > avail/2)) 4052 if (fit && (size == 0 || size > avail/2))
4052 size = avail/2; 4053 size = avail/2;
4053 if (avail < ((sector_t)size << 1)) 4054 if (avail < ((sector_t)size << 1))
@@ -4912,6 +4913,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait)
4912} 4913}
4913 4914
4914static struct file_operations md_seq_fops = { 4915static struct file_operations md_seq_fops = {
4916 .owner = THIS_MODULE,
4915 .open = md_seq_open, 4917 .open = md_seq_open,
4916 .read = seq_read, 4918 .read = seq_read,
4917 .llseek = seq_lseek, 4919 .llseek = seq_lseek,
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c
index 171ff41b52b0..14da37fee37b 100644
--- a/drivers/md/multipath.c
+++ b/drivers/md/multipath.c
@@ -277,6 +277,7 @@ static void multipath_error (mddev_t *mddev, mdk_rdev_t *rdev)
277 set_bit(Faulty, &rdev->flags); 277 set_bit(Faulty, &rdev->flags);
278 set_bit(MD_CHANGE_DEVS, &mddev->flags); 278 set_bit(MD_CHANGE_DEVS, &mddev->flags);
279 conf->working_disks--; 279 conf->working_disks--;
280 mddev->degraded++;
280 printk(KERN_ALERT "multipath: IO failure on %s," 281 printk(KERN_ALERT "multipath: IO failure on %s,"
281 " disabling IO path. \n Operation continuing" 282 " disabling IO path. \n Operation continuing"
282 " on %d IO paths.\n", 283 " on %d IO paths.\n",
@@ -336,6 +337,7 @@ static int multipath_add_disk(mddev_t *mddev, mdk_rdev_t *rdev)
336 blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9); 337 blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
337 338
338 conf->working_disks++; 339 conf->working_disks++;
340 mddev->degraded--;
339 rdev->raid_disk = path; 341 rdev->raid_disk = path;
340 set_bit(In_sync, &rdev->flags); 342 set_bit(In_sync, &rdev->flags);
341 rcu_assign_pointer(p->rdev, rdev); 343 rcu_assign_pointer(p->rdev, rdev);
@@ -501,7 +503,7 @@ static int multipath_run (mddev_t *mddev)
501 mdname(mddev)); 503 mdname(mddev));
502 goto out_free_conf; 504 goto out_free_conf;
503 } 505 }
504 mddev->degraded = conf->raid_disks = conf->working_disks; 506 mddev->degraded = conf->raid_disks - conf->working_disks;
505 507
506 conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS, 508 conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS,
507 sizeof(struct multipath_bh)); 509 sizeof(struct multipath_bh));
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index dc9d2def0270..656fae912fe3 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1474,8 +1474,8 @@ static void fix_read_error(conf_t *conf, int read_disk,
1474 "raid1:%s: read error corrected " 1474 "raid1:%s: read error corrected "
1475 "(%d sectors at %llu on %s)\n", 1475 "(%d sectors at %llu on %s)\n",
1476 mdname(mddev), s, 1476 mdname(mddev), s,
1477 (unsigned long long)sect + 1477 (unsigned long long)(sect +
1478 rdev->data_offset, 1478 rdev->data_offset),
1479 bdevname(rdev->bdev, b)); 1479 bdevname(rdev->bdev, b));
1480 } 1480 }
1481 } 1481 }
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 1250f0eab4af..7492d6033ac6 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1470,8 +1470,8 @@ static void fix_read_error(conf_t *conf, mddev_t *mddev, r10bio_t *r10_bio)
1470 "raid10:%s: read error corrected" 1470 "raid10:%s: read error corrected"
1471 " (%d sectors at %llu on %s)\n", 1471 " (%d sectors at %llu on %s)\n",
1472 mdname(mddev), s, 1472 mdname(mddev), s,
1473 (unsigned long long)sect+ 1473 (unsigned long long)(sect+
1474 rdev->data_offset, 1474 rdev->data_offset),
1475 bdevname(rdev->bdev, b)); 1475 bdevname(rdev->bdev, b));
1476 1476
1477 rdev_dec_pending(rdev, mddev); 1477 rdev_dec_pending(rdev, mddev);
@@ -2079,7 +2079,7 @@ static int run(mddev_t *mddev)
2079 disk = conf->mirrors + i; 2079 disk = conf->mirrors + i;
2080 2080
2081 if (!disk->rdev || 2081 if (!disk->rdev ||
2082 !test_bit(In_sync, &rdev->flags)) { 2082 !test_bit(In_sync, &disk->rdev->flags)) {
2083 disk->head_position = 0; 2083 disk->head_position = 0;
2084 mddev->degraded++; 2084 mddev->degraded++;
2085 } 2085 }