@@ -642,14 +642,6 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
642642 daemon_sleep = le32_to_cpu (sb -> daemon_sleep ) * HZ ;
643643 write_behind = le32_to_cpu (sb -> write_behind );
644644 sectors_reserved = le32_to_cpu (sb -> sectors_reserved );
645- /* Setup nodes/clustername only if bitmap version is
646- * cluster-compatible
647- */
648- if (sb -> version == cpu_to_le32 (BITMAP_MAJOR_CLUSTERED )) {
649- nodes = le32_to_cpu (sb -> nodes );
650- strlcpy (bitmap -> mddev -> bitmap_info .cluster_name ,
651- sb -> cluster_name , 64 );
652- }
653645
654646 /* verify that the bitmap-specific fields are valid */
655647 if (sb -> magic != cpu_to_le32 (BITMAP_MAGIC ))
@@ -671,6 +663,16 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
671663 goto out ;
672664 }
673665
666+ /*
667+ * Setup nodes/clustername only if bitmap version is
668+ * cluster-compatible
669+ */
670+ if (sb -> version == cpu_to_le32 (BITMAP_MAJOR_CLUSTERED )) {
671+ nodes = le32_to_cpu (sb -> nodes );
672+ strlcpy (bitmap -> mddev -> bitmap_info .cluster_name ,
673+ sb -> cluster_name , 64 );
674+ }
675+
674676 /* keep the array size field of the bitmap superblock up to date */
675677 sb -> sync_size = cpu_to_le64 (bitmap -> mddev -> resync_max_sectors );
676678
@@ -703,9 +705,9 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
703705
704706out :
705707 kunmap_atomic (sb );
706- /* Assigning chunksize is required for "re_read" */
707- bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
708708 if (err == 0 && nodes && (bitmap -> cluster_slot < 0 )) {
709+ /* Assigning chunksize is required for "re_read" */
710+ bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
709711 err = md_setup_cluster (bitmap -> mddev , nodes );
710712 if (err ) {
711713 pr_warn ("%s: Could not setup cluster service (%d)\n" ,
@@ -716,18 +718,18 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
716718 goto re_read ;
717719 }
718720
719-
720721out_no_sb :
721- if (test_bit (BITMAP_STALE , & bitmap -> flags ))
722- bitmap -> events_cleared = bitmap -> mddev -> events ;
723- bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
724- bitmap -> mddev -> bitmap_info .daemon_sleep = daemon_sleep ;
725- bitmap -> mddev -> bitmap_info .max_write_behind = write_behind ;
726- bitmap -> mddev -> bitmap_info .nodes = nodes ;
727- if (bitmap -> mddev -> bitmap_info .space == 0 ||
728- bitmap -> mddev -> bitmap_info .space > sectors_reserved )
729- bitmap -> mddev -> bitmap_info .space = sectors_reserved ;
730- if (err ) {
722+ if (err == 0 ) {
723+ if (test_bit (BITMAP_STALE , & bitmap -> flags ))
724+ bitmap -> events_cleared = bitmap -> mddev -> events ;
725+ bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
726+ bitmap -> mddev -> bitmap_info .daemon_sleep = daemon_sleep ;
727+ bitmap -> mddev -> bitmap_info .max_write_behind = write_behind ;
728+ bitmap -> mddev -> bitmap_info .nodes = nodes ;
729+ if (bitmap -> mddev -> bitmap_info .space == 0 ||
730+ bitmap -> mddev -> bitmap_info .space > sectors_reserved )
731+ bitmap -> mddev -> bitmap_info .space = sectors_reserved ;
732+ } else {
731733 md_bitmap_print_sb (bitmap );
732734 if (bitmap -> cluster_slot < 0 )
733735 md_cluster_stop (bitmap -> mddev );
0 commit comments