Lines Matching refs:wp
587 static inline void __wp_update_state(struct write_point *wp, enum write_point_state state) in __wp_update_state() argument
589 if (state != wp->state) { in __wp_update_state()
592 if (wp->last_state_change && in __wp_update_state()
593 time_after64(now, wp->last_state_change)) in __wp_update_state()
594 wp->time[wp->state] += now - wp->last_state_change; in __wp_update_state()
595 wp->state = state; in __wp_update_state()
596 wp->last_state_change = now; in __wp_update_state()
600 static inline void wp_update_state(struct write_point *wp, bool running) in wp_update_state() argument
605 !list_empty(&wp->writes) ? WRITE_POINT_waiting_io in wp_update_state()
608 __wp_update_state(wp, state); in wp_update_state()
614 struct write_point *wp = op->wp; in CLOSURE_CALLBACK() local
622 spin_lock_irqsave(&wp->writes_lock, flags); in CLOSURE_CALLBACK()
623 if (wp->state == WRITE_POINT_waiting_io) in CLOSURE_CALLBACK()
624 __wp_update_state(wp, WRITE_POINT_waiting_work); in CLOSURE_CALLBACK()
625 list_add_tail(&op->wp_list, &wp->writes); in CLOSURE_CALLBACK()
626 spin_unlock_irqrestore (&wp->writes_lock, flags); in CLOSURE_CALLBACK()
628 queue_work(wq, &wp->index_update_work); in CLOSURE_CALLBACK()
631 static inline void bch2_write_queue(struct bch_write_op *op, struct write_point *wp) in bch2_write_queue() argument
633 op->wp = wp; in bch2_write_queue()
635 if (wp->state == WRITE_POINT_stopped) { in bch2_write_queue()
636 spin_lock_irq(&wp->writes_lock); in bch2_write_queue()
637 __wp_update_state(wp, WRITE_POINT_waiting_io); in bch2_write_queue()
638 spin_unlock_irq(&wp->writes_lock); in bch2_write_queue()
644 struct write_point *wp = in bch2_write_point_do_index_updates() local
649 spin_lock_irq(&wp->writes_lock); in bch2_write_point_do_index_updates()
650 op = list_pop_entry(&wp->writes, struct bch_write_op, wp_list); in bch2_write_point_do_index_updates()
651 wp_update_state(wp, op != NULL); in bch2_write_point_do_index_updates()
652 spin_unlock_irq(&wp->writes_lock); in bch2_write_point_do_index_updates()
713 struct write_point *wp, in init_append_extent() argument
731 bch2_alloc_sectors_append_ptrs_inlined(op->c, wp, &e->k_i, crc.compressed_size, in init_append_extent()
738 struct write_point *wp, in bch2_write_bio_alloc() argument
746 min(wp->sectors_free << 9, src->bi_iter.bi_size); in bch2_write_bio_alloc()
844 } bch2_write_prep_encoded_data(struct bch_write_op *op, struct write_point *wp) in bch2_write_prep_encoded_data() argument
857 op->crc.compressed_size <= wp->sectors_free && in bch2_write_prep_encoded_data()
917 static int bch2_write_extent(struct bch_write_op *op, struct write_point *wp, in bch2_write_extent() argument
931 ec_buf = bch2_writepoint_ec_buf(c, wp); in bch2_write_extent()
933 switch (bch2_write_prep_encoded_data(op, wp)) { in bch2_write_extent()
944 dst = bch2_write_bio_alloc(c, wp, src, in bch2_write_extent()
950 init_append_extent(op, wp, op->version, op->crc); in bch2_write_extent()
960 dst = bch2_write_bio_alloc(c, wp, src, in bch2_write_extent()
974 dst->bi_iter.bi_size < (wp->sectors_free << 9) && in bch2_write_extent()
991 dst_len = min_t(unsigned, dst_len, wp->sectors_free << 9); in bch2_write_extent()
1073 init_append_extent(op, wp, version, crc); in bch2_write_extent()
1082 wp->sectors_free && in bch2_write_extent()
1430 struct write_point *wp = NULL; in __bch2_write() local
1476 &op->cl, &wp))); in __bch2_write()
1484 EBUG_ON(!wp); in __bch2_write()
1486 bch2_open_bucket_get(c, wp, &op->open_buckets); in __bch2_write()
1487 ret = bch2_write_extent(op, wp, &bio); in __bch2_write()
1489 bch2_alloc_sectors_done_inlined(c, wp); in __bch2_write()
1538 bch2_write_queue(op, wp); in __bch2_write()