mutex_lock(&monc->statfs_mutex);
req = radix_tree_lookup(&monc->statfs_request_tree, tid);
if (req) {
- radix_tree_delete(&monc->statfs_request_tree, tid);
- monc->num_statfs_requests--;
- if (monc->num_statfs_requests == 0)
- cancel_delayed_work(&monc->statfs_delayed_work);
req->buf->f_total = reply->st.f_total;
req->buf->f_free = reply->st.f_free;
req->buf->f_avail = reply->st.f_avail;
if (err)
return err;
err = wait_for_completion_interruptible(&req.completion);
+
+ mutex_lock(&monc->statfs_mutex);
+ radix_tree_delete(&monc->statfs_request_tree, req.tid);
+ monc->num_statfs_requests--;
+ if (monc->num_statfs_requests == 0)
+ cancel_delayed_work(&monc->statfs_delayed_work);
+ mutex_unlock(&monc->statfs_mutex);
+
if (err == -EINTR)
return err;
return req.result;