Commit ab44d7bd authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Fix a transaction path overflow

readdir() in a directory with many subvolumes could overflow transaction
paths - this is a simple hack around the issue.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
parent de924abb
......@@ -529,6 +529,15 @@ int bch2_readdir(struct bch_fs *c, subvol_inum inum, struct dir_context *ctx)
vfs_d_type(dirent.v->d_type)))
break;
ctx->pos = dirent.k->p.offset + 1;
/*
* read_target looks up subvolumes, we can overflow paths if the
* directory has many subvolumes in it
*/
if (hweight64(trans.paths_allocated) > BTREE_ITER_MAX / 2) {
ret = -EINTR;
break;
}
}
bch2_trans_iter_exit(&trans, &iter);
err:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment