Commit b27661cf authored by Gao Xiang's avatar Gao Xiang Committed by Greg Kroah-Hartman
Browse files

staging: erofs: fold in `__update_workgrp_llen'



There is the only one user to use `__update_workgrp_llen'.
Fold it in `z_erofs_vle_work_iter_begin' and cleanup related code.

Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 83a3b2ff
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -422,18 +422,6 @@ skip:
	return work;
}

static inline void __update_workgrp_llen(struct z_erofs_vle_workgroup *grp,
					 unsigned int llen)
{
	while (1) {
		unsigned int orig_llen = grp->llen;

		if (orig_llen >= llen || orig_llen ==
			cmpxchg(&grp->llen, orig_llen, llen))
			break;
	}
}

#define builder_is_followed(builder) \
	((builder)->role >= Z_EROFS_VLE_WORK_PRIMARY_FOLLOWED)

@@ -466,7 +454,13 @@ static int z_erofs_vle_work_iter_begin(struct z_erofs_vle_work_builder *builder,
repeat:
	work = z_erofs_vle_work_lookup(&finder);
	if (work != NULL) {
		__update_workgrp_llen(grp, map->m_llen);
		unsigned int orig_llen;

		/* increase workgroup `llen' if needed */
		while ((orig_llen = READ_ONCE(grp->llen)) < map->m_llen &&
		       orig_llen != cmpxchg_relaxed(&grp->llen,
						    orig_llen, map->m_llen))
			cpu_relax();
		goto got_it;
	}