Jia Zhu <zhujia.zj@xxxxxxxxxxxxx> wrote: > + if (!xa_empty(xa)) { > + xa_lock(xa); > + xa_for_each_marked(xa, index, req, CACHEFILES_REQ_NEW) { > + if (!cachefiles_ondemand_is_reopening_read(req)) { > + mask |= EPOLLIN; > + break; > + } > + } > + xa_unlock(xa); > + } I wonder if there's a more efficient way to do this. I guess it depends on how many reqs you expect to get in a queue. It might be worth taking the rcu_read_lock before calling xa_lock() and holding it over the whole loop. David