Lines Matching refs:trans
23 int bch2_extent_fallocate(struct btree_trans *trans, in bch2_extent_fallocate() argument
31 struct bch_fs *c = trans->c; in bch2_extent_fallocate()
46 k = bch2_btree_iter_peek_slot(trans, iter); in bch2_extent_fallocate()
85 ret = bch2_alloc_sectors_start_trans(trans, in bch2_extent_fallocate()
111 ret = bch2_extent_update(trans, inum, iter, new.k, &disk_res, in bch2_extent_fallocate()
118 lockrestart_do(trans, in bch2_extent_fallocate()
119 bch2_inum_offset_err_msg_trans(trans, &buf, inum, iter->pos.offset << 9)); in bch2_extent_fallocate()
131 bch2_trans_unlock_long(trans); in bch2_extent_fallocate()
139 int bch2_fpunch_snapshot(struct btree_trans *trans, struct bpos start, struct bpos end) in bch2_fpunch_snapshot() argument
141 u32 restart_count = trans->restart_count; in bch2_fpunch_snapshot()
142 struct bch_fs *c = trans->c; in bch2_fpunch_snapshot()
147 int ret = for_each_btree_key_max_commit(trans, iter, BTREE_ID_extents, in bch2_fpunch_snapshot()
157 bch2_extent_trim_atomic(trans, &iter, &delete) ?: in bch2_fpunch_snapshot()
158 bch2_trans_update(trans, &iter, &delete, 0); in bch2_fpunch_snapshot()
162 return ret ?: trans_was_restarted(trans, restart_count); in bch2_fpunch_snapshot()
168 int bch2_fpunch_at(struct btree_trans *trans, struct btree_iter *iter, in bch2_fpunch_at() argument
172 struct bch_fs *c = trans->c; in bch2_fpunch_at()
188 bch2_trans_begin(trans); in bch2_fpunch_at()
190 ret = bch2_subvolume_get_snapshot(trans, inum.subvol, &snapshot); in bch2_fpunch_at()
194 bch2_btree_iter_set_snapshot(trans, iter, snapshot); in bch2_fpunch_at()
199 k = bch2_btree_iter_peek_max(trans, iter, end_pos); in bch2_fpunch_at()
214 ret = bch2_extent_update(trans, inum, iter, &delete, in bch2_fpunch_at()
225 struct btree_trans *trans = bch2_trans_get(c); in bch2_fpunch() local
229 bch2_trans_iter_init(trans, &iter, BTREE_ID_extents, in bch2_fpunch()
233 ret = bch2_fpunch_at(trans, &iter, inum, end, i_sectors_delta); in bch2_fpunch()
235 bch2_trans_iter_exit(trans, &iter); in bch2_fpunch()
236 bch2_trans_put(trans); in bch2_fpunch()
255 static int truncate_set_isize(struct btree_trans *trans, in truncate_set_isize() argument
264 ret = __bch2_inode_peek(trans, &iter, &inode_u, inum, BTREE_ITER_intent, warn) ?: in truncate_set_isize()
266 bch2_inode_write(trans, &iter, &inode_u); in truncate_set_isize()
268 bch2_trans_iter_exit(trans, &iter); in truncate_set_isize()
272 static int __bch2_resume_logged_op_truncate(struct btree_trans *trans, in __bch2_resume_logged_op_truncate() argument
276 struct bch_fs *c = trans->c; in __bch2_resume_logged_op_truncate()
284 ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, in __bch2_resume_logged_op_truncate()
285 truncate_set_isize(trans, inum, new_i_size, i_sectors_delta != NULL)); in __bch2_resume_logged_op_truncate()
289 bch2_trans_iter_init(trans, &fpunch_iter, BTREE_ID_extents, in __bch2_resume_logged_op_truncate()
292 ret = bch2_fpunch_at(trans, &fpunch_iter, inum, U64_MAX, i_sectors_delta); in __bch2_resume_logged_op_truncate()
293 bch2_trans_iter_exit(trans, &fpunch_iter); in __bch2_resume_logged_op_truncate()
303 int bch2_resume_logged_op_truncate(struct btree_trans *trans, struct bkey_i *op_k) in bch2_resume_logged_op_truncate() argument
305 return __bch2_resume_logged_op_truncate(trans, op_k, NULL); in bch2_resume_logged_op_truncate()
323 struct btree_trans *trans = bch2_trans_get(c); in bch2_truncate() local
324 int ret = bch2_logged_op_start(trans, &op.k_i); in bch2_truncate()
327 ret = __bch2_resume_logged_op_truncate(trans, &op.k_i, i_sectors_delta); in bch2_truncate()
328 ret = bch2_logged_op_finish(trans, &op.k_i) ?: ret; in bch2_truncate()
330 bch2_trans_put(trans); in bch2_truncate()
348 static int adjust_i_size(struct btree_trans *trans, subvol_inum inum, in adjust_i_size() argument
358 ret = __bch2_inode_peek(trans, &iter, &inode_u, inum, BTREE_ITER_intent, warn); in adjust_i_size()
375 inode_u.bi_mtime = inode_u.bi_ctime = bch2_current_time(trans->c); in adjust_i_size()
377 ret = bch2_inode_write(trans, &iter, &inode_u); in adjust_i_size()
379 bch2_trans_iter_exit(trans, &iter); in adjust_i_size()
383 static int __bch2_resume_logged_op_finsert(struct btree_trans *trans, in __bch2_resume_logged_op_finsert() argument
387 struct bch_fs *c = trans->c; in __bch2_resume_logged_op_finsert()
402 ret = bch2_inum_opts_get(trans, inum, &opts); in __bch2_resume_logged_op_finsert()
410 …ret = lockrestart_do(trans, __bch2_subvolume_get_snapshot(trans, inum.subvol, &snapshot, warn_erro… in __bch2_resume_logged_op_finsert()
414 bch2_trans_iter_init(trans, &iter, BTREE_ID_extents, in __bch2_resume_logged_op_finsert()
423 ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, in __bch2_resume_logged_op_finsert()
424 adjust_i_size(trans, inum, src_offset, len, warn_errors) ?: in __bch2_resume_logged_op_finsert()
425 bch2_logged_op_update(trans, &op->k_i)); in __bch2_resume_logged_op_finsert()
429 bch2_btree_iter_set_pos(trans, &iter, POS(inum.inum, src_offset)); in __bch2_resume_logged_op_finsert()
431 ret = bch2_fpunch_at(trans, &iter, inum, src_offset + len, i_sectors_delta); in __bch2_resume_logged_op_finsert()
435 ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, in __bch2_resume_logged_op_finsert()
436 bch2_logged_op_update(trans, &op->k_i)); in __bch2_resume_logged_op_finsert()
448 bch2_trans_begin(trans); in __bch2_resume_logged_op_finsert()
450 ret = __bch2_subvolume_get_snapshot(trans, inum.subvol, &snapshot, in __bch2_resume_logged_op_finsert()
455 bch2_btree_iter_set_snapshot(trans, &iter, snapshot); in __bch2_resume_logged_op_finsert()
456 bch2_btree_iter_set_pos(trans, &iter, SPOS(inum.inum, pos, snapshot)); in __bch2_resume_logged_op_finsert()
459 ? bch2_btree_iter_peek_prev_min(trans, &iter, POS(inum.inum, 0)) in __bch2_resume_logged_op_finsert()
460 : bch2_btree_iter_peek_max(trans, &iter, POS(inum.inum, U64_MAX)); in __bch2_resume_logged_op_finsert()
469 copy = bch2_bkey_make_mut_noupdate(trans, k); in __bch2_resume_logged_op_finsert()
495 bch2_btree_insert_trans(trans, BTREE_ID_extents, &delete, 0) ?: in __bch2_resume_logged_op_finsert()
496 bch2_btree_insert_trans(trans, BTREE_ID_extents, copy, 0) ?: in __bch2_resume_logged_op_finsert()
497 bch2_logged_op_update(trans, &op->k_i) ?: in __bch2_resume_logged_op_finsert()
498 bch2_trans_commit(trans, &disk_res, NULL, BCH_TRANS_COMMIT_no_enospc); in __bch2_resume_logged_op_finsert()
513 ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, in __bch2_resume_logged_op_finsert()
514 adjust_i_size(trans, inum, src_offset, shift, warn_errors) ?: in __bch2_resume_logged_op_finsert()
515 bch2_logged_op_update(trans, &op->k_i)); in __bch2_resume_logged_op_finsert()
518 ret = commit_do(trans, NULL, NULL, BCH_TRANS_COMMIT_no_enospc, in __bch2_resume_logged_op_finsert()
519 adjust_i_size(trans, inum, 0, 0, warn_errors) ?: in __bch2_resume_logged_op_finsert()
520 bch2_logged_op_update(trans, &op->k_i)); in __bch2_resume_logged_op_finsert()
528 bch2_trans_iter_exit(trans, &iter); in __bch2_resume_logged_op_finsert()
534 int bch2_resume_logged_op_finsert(struct btree_trans *trans, struct bkey_i *op_k) in bch2_resume_logged_op_finsert() argument
536 return __bch2_resume_logged_op_finsert(trans, op_k, NULL); in bch2_resume_logged_op_finsert()
559 struct btree_trans *trans = bch2_trans_get(c); in bch2_fcollapse_finsert() local
560 int ret = bch2_logged_op_start(trans, &op.k_i); in bch2_fcollapse_finsert()
563 ret = __bch2_resume_logged_op_finsert(trans, &op.k_i, i_sectors_delta); in bch2_fcollapse_finsert()
564 ret = bch2_logged_op_finish(trans, &op.k_i) ?: ret; in bch2_fcollapse_finsert()
566 bch2_trans_put(trans); in bch2_fcollapse_finsert()