File tree Expand file tree Collapse file tree 1 file changed +10
-4
lines changed Expand file tree Collapse file tree 1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -110,19 +110,25 @@ void bch2_sb_error_count(struct bch_fs *c, enum bch_sb_error_id err)
110
110
void bch2_sb_errors_from_cpu (struct bch_fs * c )
111
111
{
112
112
bch_sb_errors_cpu * src = & c -> fsck_error_counts ;
113
- struct bch_sb_field_errors * dst =
114
- bch2_sb_field_resize (& c -> disk_sb , errors ,
115
- bch2_sb_field_errors_u64s (src -> nr ));
113
+ struct bch_sb_field_errors * dst ;
116
114
unsigned i ;
117
115
116
+ mutex_lock (& c -> fsck_error_counts_lock );
117
+
118
+ dst = bch2_sb_field_resize (& c -> disk_sb , errors ,
119
+ bch2_sb_field_errors_u64s (src -> nr ));
120
+
118
121
if (!dst )
119
- return ;
122
+ goto err ;
120
123
121
124
for (i = 0 ; i < src -> nr ; i ++ ) {
122
125
SET_BCH_SB_ERROR_ENTRY_ID (& dst -> entries [i ], src -> data [i ].id );
123
126
SET_BCH_SB_ERROR_ENTRY_NR (& dst -> entries [i ], src -> data [i ].nr );
124
127
dst -> entries [i ].last_error_time = cpu_to_le64 (src -> data [i ].last_error_time );
125
128
}
129
+
130
+ err :
131
+ mutex_unlock (& c -> fsck_error_counts_lock );
126
132
}
127
133
128
134
static int bch2_sb_errors_to_cpu (struct bch_fs * c )
You can’t perform that action at this time.
0 commit comments