mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
bcachefs: list_pop_entry()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
67434cd4b7
commit
5e41519938
@ -2465,11 +2465,9 @@ void bch2_fs_ec_exit(struct bch_fs *c)
|
||||
|
||||
while (1) {
|
||||
mutex_lock(&c->ec_stripe_head_lock);
|
||||
h = list_first_entry_or_null(&c->ec_stripe_head_list,
|
||||
struct ec_stripe_head, list);
|
||||
if (h)
|
||||
list_del(&h->list);
|
||||
h = list_pop_entry(&c->ec_stripe_head_list, struct ec_stripe_head, list);
|
||||
mutex_unlock(&c->ec_stripe_head_lock);
|
||||
|
||||
if (!h)
|
||||
break;
|
||||
|
||||
|
@ -637,9 +637,7 @@ void bch2_write_point_do_index_updates(struct work_struct *work)
|
||||
|
||||
while (1) {
|
||||
spin_lock_irq(&wp->writes_lock);
|
||||
op = list_first_entry_or_null(&wp->writes, struct bch_write_op, wp_list);
|
||||
if (op)
|
||||
list_del(&op->wp_list);
|
||||
op = list_pop_entry(&wp->writes, struct bch_write_op, wp_list);
|
||||
wp_update_state(wp, op != NULL);
|
||||
spin_unlock_irq(&wp->writes_lock);
|
||||
|
||||
|
@ -317,6 +317,19 @@ do { \
|
||||
_ptr ? container_of(_ptr, type, member) : NULL; \
|
||||
})
|
||||
|
||||
static inline struct list_head *list_pop(struct list_head *head)
|
||||
{
|
||||
if (list_empty(head))
|
||||
return NULL;
|
||||
|
||||
struct list_head *ret = head->next;
|
||||
list_del_init(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define list_pop_entry(head, type, member) \
|
||||
container_of_or_null(list_pop(head), type, member)
|
||||
|
||||
/* Does linear interpolation between powers of two */
|
||||
static inline unsigned fract_exp_two(unsigned x, unsigned fract_bits)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user