Lines Matching refs:wp

782 	bch2_dev_alloc_list(c, &req->wp->stripe, &req->devs_may_alloc, &req->devs_sorted);  in bucket_alloc_from_stripe()
815 if (ob->data_type != req->wp->data_type) in want_bucket()
819 (req->wp->data_type == BCH_DATA_btree || req->ec || req->have_cache)) in want_bucket()
837 open_bucket_for_each(c, &req->wp->ptrs, ob, i) { in bucket_alloc_set_writepoint()
843 req->wp->ptrs = req->scratch_ptrs; in bucket_alloc_set_writepoint()
901 req->devs_may_alloc = target_rw_devs(c, req->wp->data_type, req->target); in __open_bucket_add_buckets()
926 ret = bch2_bucket_alloc_set_trans(trans, req, &req->wp->stripe, cl); in __open_bucket_add_buckets()
1010 bool ec, struct write_point *wp) in bch2_writepoint_stop() argument
1016 mutex_lock(&wp->lock); in bch2_writepoint_stop()
1017 open_bucket_for_each(c, &wp->ptrs, ob, i) in bch2_writepoint_stop()
1022 wp->ptrs = ptrs; in bch2_writepoint_stop()
1023 mutex_unlock(&wp->lock); in bch2_writepoint_stop()
1088 struct write_point *wp; in __writepoint_find() local
1091 hlist_for_each_entry_rcu(wp, head, node) in __writepoint_find()
1092 if (wp->write_point == write_point) in __writepoint_find()
1093 return wp; in __writepoint_find()
1107 struct write_point *wp; in try_increase_writepoints() local
1113 wp = c->write_points + c->write_points_nr++; in try_increase_writepoints()
1114 hlist_add_head_rcu(&wp->node, writepoint_hash(c, wp->write_point)); in try_increase_writepoints()
1121 struct write_point *wp; in try_decrease_writepoints() local
1137 wp = c->write_points + --c->write_points_nr; in try_decrease_writepoints()
1139 hlist_del_rcu(&wp->node); in try_decrease_writepoints()
1142 bch2_trans_mutex_lock_norelock(trans, &wp->lock); in try_decrease_writepoints()
1143 open_bucket_for_each(c, &wp->ptrs, ob, i) in try_decrease_writepoints()
1145 wp->ptrs.nr = 0; in try_decrease_writepoints()
1146 mutex_unlock(&wp->lock); in try_decrease_writepoints()
1154 struct write_point *wp, *oldest; in writepoint_find() local
1158 wp = (struct write_point *) write_point; in writepoint_find()
1159 bch2_trans_mutex_lock_norelock(trans, &wp->lock); in writepoint_find()
1160 return wp; in writepoint_find()
1165 wp = __writepoint_find(head, write_point); in writepoint_find()
1166 if (wp) { in writepoint_find()
1168 bch2_trans_mutex_lock_norelock(trans, &wp->lock); in writepoint_find()
1169 if (wp->write_point == write_point) in writepoint_find()
1171 mutex_unlock(&wp->lock); in writepoint_find()
1176 for (wp = c->write_points; in writepoint_find()
1177 wp < c->write_points + c->write_points_nr; wp++) in writepoint_find()
1178 if (!oldest || time_before64(wp->last_used, oldest->last_used)) in writepoint_find()
1179 oldest = wp; in writepoint_find()
1190 wp = __writepoint_find(head, write_point); in writepoint_find()
1191 if (wp && wp != oldest) { in writepoint_find()
1197 wp = oldest; in writepoint_find()
1198 hlist_del_rcu(&wp->node); in writepoint_find()
1199 wp->write_point = write_point; in writepoint_find()
1200 hlist_add_head_rcu(&wp->node, head); in writepoint_find()
1203 wp->last_used = local_clock(); in writepoint_find()
1204 return wp; in writepoint_find()
1222 ob_push(c, &req->wp->ptrs, ob); in deallocate_extra_replicas()
1273 *wp_ret = req->wp = writepoint_find(trans, write_point.v); in bch2_alloc_sectors_start_trans()
1275 req->data_type = req->wp->data_type; in bch2_alloc_sectors_start_trans()
1330 open_bucket_for_each(c, &req->wp->ptrs, ob, i) in bch2_alloc_sectors_start_trans()
1333 req->wp->ptrs = req->ptrs; in bch2_alloc_sectors_start_trans()
1335 req->wp->sectors_free = UINT_MAX; in bch2_alloc_sectors_start_trans()
1337 open_bucket_for_each(c, &req->wp->ptrs, ob, i) { in bch2_alloc_sectors_start_trans()
1351 req->wp->sectors_free = min(req->wp->sectors_free, ob->sectors_free); in bch2_alloc_sectors_start_trans()
1354 req->wp->sectors_free = rounddown(req->wp->sectors_free, block_sectors(c)); in bch2_alloc_sectors_start_trans()
1357 if (unlikely(!req->wp->sectors_free)) { in bch2_alloc_sectors_start_trans()
1358 bch2_alloc_sectors_done(c, req->wp); in bch2_alloc_sectors_start_trans()
1362 BUG_ON(!req->wp->sectors_free || req->wp->sectors_free == UINT_MAX); in bch2_alloc_sectors_start_trans()
1366 open_bucket_for_each(c, &req->wp->ptrs, ob, i) in bch2_alloc_sectors_start_trans()
1371 req->wp->ptrs = req->ptrs; in bch2_alloc_sectors_start_trans()
1373 mutex_unlock(&req->wp->lock); in bch2_alloc_sectors_start_trans()
1389 void bch2_alloc_sectors_append_ptrs(struct bch_fs *c, struct write_point *wp, in bch2_alloc_sectors_append_ptrs() argument
1393 bch2_alloc_sectors_append_ptrs_inlined(c, wp, k, sectors, cached); in bch2_alloc_sectors_append_ptrs()
1400 void bch2_alloc_sectors_done(struct bch_fs *c, struct write_point *wp) in bch2_alloc_sectors_done() argument
1402 bch2_alloc_sectors_done_inlined(c, wp); in bch2_alloc_sectors_done()
1405 static inline void writepoint_init(struct write_point *wp, in writepoint_init() argument
1408 mutex_init(&wp->lock); in writepoint_init()
1409 wp->data_type = type; in writepoint_init()
1411 INIT_WORK(&wp->index_update_work, bch2_write_point_do_index_updates); in writepoint_init()
1412 INIT_LIST_HEAD(&wp->writes); in writepoint_init()
1413 spin_lock_init(&wp->writes_lock); in writepoint_init()
1419 struct write_point *wp; in bch2_fs_allocator_foreground_init() local
1440 for (wp = c->write_points; in bch2_fs_allocator_foreground_init()
1441 wp < c->write_points + c->write_points_nr; wp++) { in bch2_fs_allocator_foreground_init()
1442 writepoint_init(wp, BCH_DATA_user); in bch2_fs_allocator_foreground_init()
1444 wp->last_used = local_clock(); in bch2_fs_allocator_foreground_init()
1445 wp->write_point = (unsigned long) wp; in bch2_fs_allocator_foreground_init()
1446 hlist_add_head_rcu(&wp->node, in bch2_fs_allocator_foreground_init()
1447 writepoint_hash(c, wp->write_point)); in bch2_fs_allocator_foreground_init()
1513 struct write_point *wp) in bch2_write_point_to_text() argument
1518 mutex_lock(&wp->lock); in bch2_write_point_to_text()
1520 prt_printf(out, "%lu: ", wp->write_point); in bch2_write_point_to_text()
1521 prt_human_readable_u64(out, wp->sectors_allocated << 9); in bch2_write_point_to_text()
1524 bch2_pr_time_units(out, sched_clock() - wp->last_used); in bch2_write_point_to_text()
1528 bch2_pr_time_units(out, wp->time[i]); in bch2_write_point_to_text()
1534 open_bucket_for_each(c, &wp->ptrs, ob, i) in bch2_write_point_to_text()
1538 mutex_unlock(&wp->lock); in bch2_write_point_to_text()
1543 struct write_point *wp; in bch2_write_points_to_text() local
1546 for (wp = c->write_points; in bch2_write_points_to_text()
1547 wp < c->write_points + ARRAY_SIZE(c->write_points); in bch2_write_points_to_text()
1548 wp++) in bch2_write_points_to_text()
1549 bch2_write_point_to_text(out, c, wp); in bch2_write_points_to_text()