@@ -639,14 +639,6 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
639639 daemon_sleep = le32_to_cpu (sb -> daemon_sleep ) * HZ ;
640640 write_behind = le32_to_cpu (sb -> write_behind );
641641 sectors_reserved = le32_to_cpu (sb -> sectors_reserved );
642- /* Setup nodes/clustername only if bitmap version is
643- * cluster-compatible
644- */
645- if (sb -> version == cpu_to_le32 (BITMAP_MAJOR_CLUSTERED )) {
646- nodes = le32_to_cpu (sb -> nodes );
647- strlcpy (bitmap -> mddev -> bitmap_info .cluster_name ,
648- sb -> cluster_name , 64 );
649- }
650642
651643 /* verify that the bitmap-specific fields are valid */
652644 if (sb -> magic != cpu_to_le32 (BITMAP_MAGIC ))
@@ -668,6 +660,16 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
668660 goto out ;
669661 }
670662
663+ /*
664+ * Setup nodes/clustername only if bitmap version is
665+ * cluster-compatible
666+ */
667+ if (sb -> version == cpu_to_le32 (BITMAP_MAJOR_CLUSTERED )) {
668+ nodes = le32_to_cpu (sb -> nodes );
669+ strlcpy (bitmap -> mddev -> bitmap_info .cluster_name ,
670+ sb -> cluster_name , 64 );
671+ }
672+
671673 /* keep the array size field of the bitmap superblock up to date */
672674 sb -> sync_size = cpu_to_le64 (bitmap -> mddev -> resync_max_sectors );
673675
@@ -700,9 +702,9 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
700702
701703out :
702704 kunmap_atomic (sb );
703- /* Assigning chunksize is required for "re_read" */
704- bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
705705 if (err == 0 && nodes && (bitmap -> cluster_slot < 0 )) {
706+ /* Assigning chunksize is required for "re_read" */
707+ bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
706708 err = md_setup_cluster (bitmap -> mddev , nodes );
707709 if (err ) {
708710 pr_warn ("%s: Could not setup cluster service (%d)\n" ,
@@ -713,18 +715,18 @@ static int md_bitmap_read_sb(struct bitmap *bitmap)
713715 goto re_read ;
714716 }
715717
716-
717718out_no_sb :
718- if (test_bit (BITMAP_STALE , & bitmap -> flags ))
719- bitmap -> events_cleared = bitmap -> mddev -> events ;
720- bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
721- bitmap -> mddev -> bitmap_info .daemon_sleep = daemon_sleep ;
722- bitmap -> mddev -> bitmap_info .max_write_behind = write_behind ;
723- bitmap -> mddev -> bitmap_info .nodes = nodes ;
724- if (bitmap -> mddev -> bitmap_info .space == 0 ||
725- bitmap -> mddev -> bitmap_info .space > sectors_reserved )
726- bitmap -> mddev -> bitmap_info .space = sectors_reserved ;
727- if (err ) {
719+ if (err == 0 ) {
720+ if (test_bit (BITMAP_STALE , & bitmap -> flags ))
721+ bitmap -> events_cleared = bitmap -> mddev -> events ;
722+ bitmap -> mddev -> bitmap_info .chunksize = chunksize ;
723+ bitmap -> mddev -> bitmap_info .daemon_sleep = daemon_sleep ;
724+ bitmap -> mddev -> bitmap_info .max_write_behind = write_behind ;
725+ bitmap -> mddev -> bitmap_info .nodes = nodes ;
726+ if (bitmap -> mddev -> bitmap_info .space == 0 ||
727+ bitmap -> mddev -> bitmap_info .space > sectors_reserved )
728+ bitmap -> mddev -> bitmap_info .space = sectors_reserved ;
729+ } else {
728730 md_bitmap_print_sb (bitmap );
729731 if (bitmap -> cluster_slot < 0 )
730732 md_cluster_stop (bitmap -> mddev );
0 commit comments