In preparation for sharing an io-wq across different users, add a
reference count that manages destruction of it.
Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
        struct mm_struct *mm;
        refcount_t refs;
        struct completion done;
+
+       refcount_t use_refs;
 };
 
 static bool io_worker_get(struct io_worker *worker)
                        ret = -ENOMEM;
                        goto err;
                }
+               refcount_set(&wq->use_refs, 1);
                reinit_completion(&wq->done);
                return wq;
        }
        return false;
 }
 
-void io_wq_destroy(struct io_wq *wq)
+static void __io_wq_destroy(struct io_wq *wq)
 {
        int node;
 
        kfree(wq->wqes);
        kfree(wq);
 }
+
+void io_wq_destroy(struct io_wq *wq)
+{
+       if (refcount_dec_and_test(&wq->use_refs))
+               __io_wq_destroy(wq);
+}