A few more fixes for md in 3.4
Two are tagged for -stable. They can cause an oops, but very rarely. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iQIVAwUAT4ZxRTnsnt1WYoG5AQKaaQ/9HCaffA6TpN2hiA/utmfzurQGqXkhWmxj 3nggDy221mHwVPQqouk0OniOIMObGPxKXHeiMMNZM3prLDPBemDx2UJ54NgQonyL gB8siqhkwOMJ2G2dYW3gQiS6+euuxoEB0QpJJZ7Jye162FYmo3LGcFu2LQViMaNe 9eaneUddH3AsDsJ5YSID1ylV1zYBceQK7trtd7mStWILV+lqNU0HBWpGplT+BOsb Jbe60nxnpWAgy0YUKDv4DVglM9YS7i3sJ1HfS8MZ30fCGAED+1Rkxk6DxOwVnKWL ogS2xVNxBQ6hXBIwXPNBU4tEtT6VdI4GQRZkBKczRFhJ4B2LHMronoDXA1A5hrKP +ELcFn4CWN9DfO9X0CpjU//JHh6vNl/p0RoOKRsABDP+VJfU7zSPn6lxrI/KCEGU Q66WUEYWrd0RDihqTQ2gkdJL8m1JmNDx3J4fKqWR528v0bgWoJOK4oIUdvLJ3zlW vAhejlKGOEbWKtwxi1mAVQ6XdFISkL4UR/tdjJkCj+H+SlL0HdTITCKcQju2qiQ/ CPwapez6sZVwUQ7852OhycCUyz7AztkURbio+clcGVAttRqxkfvt4uN/RPpQMtKO QBoFz4pN6hqAVM8p+G8fgmDUJ9nC5PHzf3iPaLCEFR69CubGDF/O9rD6T7SwxUtS FexjkBeW2OU= =yJBa -----END PGP SIGNATURE----- Merge tag 'md-3.4-fixes' of git://neil.brown.name/md Pull a few more fixes for md from NeilBrown: "Two are tagged for -stable. They can cause an oops, but very rarely." * tag 'md-3.4-fixes' of git://neil.brown.name/md: md/bitmap: prevent bitmap_daemon_work running while initialising bitmap md/raid1,raid10: Fix calculation of 'vcnt' when processing error recovery. MD: Bitmap version cleanup.
This commit is contained in:
commit
e42bd6e4a6
|
@ -539,9 +539,6 @@ static int bitmap_new_disk_sb(struct bitmap *bitmap)
|
|||
bitmap->events_cleared = bitmap->mddev->events;
|
||||
sb->events_cleared = cpu_to_le64(bitmap->mddev->events);
|
||||
|
||||
bitmap->flags |= BITMAP_HOSTENDIAN;
|
||||
sb->version = cpu_to_le32(BITMAP_MAJOR_HOSTENDIAN);
|
||||
|
||||
kunmap_atomic(sb);
|
||||
|
||||
return 0;
|
||||
|
@ -1788,7 +1785,9 @@ int bitmap_load(struct mddev *mddev)
|
|||
* re-add of a missing device */
|
||||
start = mddev->recovery_cp;
|
||||
|
||||
mutex_lock(&mddev->bitmap_info.mutex);
|
||||
err = bitmap_init_from_disk(bitmap, start);
|
||||
mutex_unlock(&mddev->bitmap_info.mutex);
|
||||
|
||||
if (err)
|
||||
goto out;
|
||||
|
|
|
@ -1712,6 +1712,7 @@ static int process_checks(struct r1bio *r1_bio)
|
|||
struct r1conf *conf = mddev->private;
|
||||
int primary;
|
||||
int i;
|
||||
int vcnt;
|
||||
|
||||
for (primary = 0; primary < conf->raid_disks * 2; primary++)
|
||||
if (r1_bio->bios[primary]->bi_end_io == end_sync_read &&
|
||||
|
@ -1721,9 +1722,9 @@ static int process_checks(struct r1bio *r1_bio)
|
|||
break;
|
||||
}
|
||||
r1_bio->read_disk = primary;
|
||||
vcnt = (r1_bio->sectors + PAGE_SIZE / 512 - 1) >> (PAGE_SHIFT - 9);
|
||||
for (i = 0; i < conf->raid_disks * 2; i++) {
|
||||
int j;
|
||||
int vcnt = r1_bio->sectors >> (PAGE_SHIFT- 9);
|
||||
struct bio *pbio = r1_bio->bios[primary];
|
||||
struct bio *sbio = r1_bio->bios[i];
|
||||
int size;
|
||||
|
|
|
@ -1788,6 +1788,7 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio)
|
|||
struct r10conf *conf = mddev->private;
|
||||
int i, first;
|
||||
struct bio *tbio, *fbio;
|
||||
int vcnt;
|
||||
|
||||
atomic_set(&r10_bio->remaining, 1);
|
||||
|
||||
|
@ -1802,10 +1803,10 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio)
|
|||
first = i;
|
||||
fbio = r10_bio->devs[i].bio;
|
||||
|
||||
vcnt = (r10_bio->sectors + (PAGE_SIZE >> 9) - 1) >> (PAGE_SHIFT - 9);
|
||||
/* now find blocks with errors */
|
||||
for (i=0 ; i < conf->copies ; i++) {
|
||||
int j, d;
|
||||
int vcnt = r10_bio->sectors >> (PAGE_SHIFT-9);
|
||||
|
||||
tbio = r10_bio->devs[i].bio;
|
||||
|
||||
|
@ -1871,7 +1872,6 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio)
|
|||
*/
|
||||
for (i = 0; i < conf->copies; i++) {
|
||||
int j, d;
|
||||
int vcnt = r10_bio->sectors >> (PAGE_SHIFT-9);
|
||||
|
||||
tbio = r10_bio->devs[i].repl_bio;
|
||||
if (!tbio || !tbio->bi_end_io)
|
||||
|
|
Loading…
Reference in New Issue