Re: Re: fr1-2.16 patch for 2.6.10 kernel
denis bonnenfant <[email protected]>
| Newsgroups | gmane.linux.enbd.general |
|---|---|
| Message-ID | <[email protected]> |
Peter T. Breuer a écrit : > "Also sprach denis bonnenfant:" > >>>Can you replace: >>> >>>#ifdef MD_BITMAP_SUPPORT >>> /* get the component's superblock */ >>>+ read_disk_sb(rdev); >>> sb = (mdp_super_t *)page_address(rdev->sb_page); >>> >>> >>>(untested - you are guinea pig). >>> >>>It looks as though one can skip that if rdev->sb_page is non-null and >>>if rdev->sb_loaded is nonzero. But try that first. >> >>It's better. fast resync 5-6 times successivly, but now, > > > There' a call to import_device about 20 lines higher up that might do > instead. It has a -1 in the args that means "don't retest the > superblock". If it is changed to 0, it might also work the trick. Ok, it does the job too. about events : first fail/add : sda1 (read) [events: 00000164] ....... md0: repairing old mirror component 800001 (disk 356 >= bitmap 232) fail / mount / add : sda1 (read) [events: 00000168] .... md0: new disk 800001 too old for repair (disk 360 < bitmap 362) raid1: synced dirty sectors 0-979711 raid1: synced dirty sectors 0-979839 mount has changed the bitmap count ? fail /add : sda1 (read) [events: 00000172] .... md0: repairing old mirror component 800001 (disk 370 >= bitmap 362) raid1: skipped clean sectors 0-490239 raid1: synced dirty sectors 490240-491007 raid1: skipped clean sectors 491008-979711 fail / write /sync / add sda1 (read) [events: 00000176] md0: repairing old mirror component 800001 (disk 374 >= bitmap 362) raid1: synced dirty sectors 0-511 raid1: skipped clean sectors 512-122495 raid1: synced dirty sectors 122496-122751 raid1: skipped clean sectors 122752-490239 raid1: synced dirty sectors 490240-491007 raid1: skipped clean sectors 491008-979711 fail / umount / add sda1 (read) [events: 00000188] md0: repairing old mirror component 800001 (disk 392 >= bitmap 362) raid1: synced dirty sectors 0-511 raid1: skipped clean sectors 512-122495 raid1: synced dirty sectors 122496-122751 raid1: skipped clean sectors 122752-490239 raid1: synced dirty sectors 490240-491007 raid1: skipped clean sectors 491008-979711 same as above : bitmap not cleared ? fail / add sda1 (read) [events: 00000190] md0: repairing old mirror component 800001 (disk 400 >= bitmap 362) raid1: synced dirty sectors 0-511 raid1: skipped clean sectors 512-122495 raid1: synced dirty sectors 122496-122751 raid1: skipped clean sectors 122752-490239 raid1: synced dirty sectors 490240-491007 raid1: skipped clean sectors 491008-979711 ... and so on, no changes. The latter are interesting, because raid is not mounted, so it seems that it reuse the bitmap from previous cycle and doesn't detect that nothing has changed on disks and reinitialize bitmap. It is not harmful, but clearly suboptimal, especially in case of network devices, as large chunks of disks may be synced multiple times. mount / fail /add : md0: repairing old mirror component 800001 (disk 414 >= bitmap 362) raid1: synced dirty sectors 0-511 raid1: skipped clean sectors 512-122495 raid1: synced dirty sectors 122496-122751 raid1: skipped clean sectors 122752-490239 raid1: synced dirty sectors 490240-490623 <- changes, ok raid1: skipped clean sectors 490624-979711 umount... fail/ mount / add : md0: repairing old mirror component 800001 (disk 480 >= bitmap 362) this time nothing has changed : mount doesn't change bitmap count ? only the first time ?