@@ -1792,11 +1792,12 @@ static int discard_in_flight_add(struct bch_dev *ca, u64 bucket, bool in_progres
17921792 int ret ;
17931793
17941794 mutex_lock (& ca -> discard_buckets_in_flight_lock );
1795- darray_for_each (ca -> discard_buckets_in_flight , i )
1796- if (i -> bucket == bucket ) {
1797- ret = - BCH_ERR_EEXIST_discard_in_flight_add ;
1798- goto out ;
1799- }
1795+ struct discard_in_flight * i =
1796+ darray_find_p (ca -> discard_buckets_in_flight , i , i -> bucket == bucket );
1797+ if (i ) {
1798+ ret = - BCH_ERR_EEXIST_discard_in_flight_add ;
1799+ goto out ;
1800+ }
18001801
18011802 ret = darray_push (& ca -> discard_buckets_in_flight , ((struct discard_in_flight ) {
18021803 .in_progress = in_progress ,
@@ -1810,14 +1811,11 @@ static int discard_in_flight_add(struct bch_dev *ca, u64 bucket, bool in_progres
18101811static void discard_in_flight_remove (struct bch_dev * ca , u64 bucket )
18111812{
18121813 mutex_lock (& ca -> discard_buckets_in_flight_lock );
1813- darray_for_each (ca -> discard_buckets_in_flight , i )
1814- if (i -> bucket == bucket ) {
1815- BUG_ON (!i -> in_progress );
1816- darray_remove_item (& ca -> discard_buckets_in_flight , i );
1817- goto found ;
1818- }
1819- BUG ();
1820- found :
1814+ struct discard_in_flight * i =
1815+ darray_find_p (ca -> discard_buckets_in_flight , i , i -> bucket == bucket );
1816+ BUG_ON (!i || !i -> in_progress );
1817+
1818+ darray_remove_item (& ca -> discard_buckets_in_flight , i );
18211819 mutex_unlock (& ca -> discard_buckets_in_flight_lock );
18221820}
18231821
0 commit comments