struct io_rsrc_data *file_data;
struct io_rsrc_data *buf_data;
- /* protected by ->uring_lock */
- struct io_alloc_cache rsrc_node_cache;
-
u32 pers_next;
struct xarray personalities;
INIT_LIST_HEAD(&ctx->sqd_list);
INIT_LIST_HEAD(&ctx->cq_overflow_list);
INIT_LIST_HEAD(&ctx->io_buffers_cache);
- ret = io_alloc_cache_init(&ctx->rsrc_node_cache, IO_NODE_ALLOC_CACHE_MAX,
- sizeof(struct io_rsrc_node));
- ret |= io_alloc_cache_init(&ctx->apoll_cache, IO_POLL_ALLOC_CACHE_MAX,
+ ret = io_alloc_cache_init(&ctx->apoll_cache, IO_POLL_ALLOC_CACHE_MAX,
sizeof(struct async_poll));
ret |= io_alloc_cache_init(&ctx->netmsg_cache, IO_ALLOC_CACHE_MAX,
sizeof(struct io_async_msghdr));
free_ref:
percpu_ref_exit(&ctx->refs);
err:
- io_alloc_cache_free(&ctx->rsrc_node_cache, kfree);
io_alloc_cache_free(&ctx->apoll_cache, kfree);
io_alloc_cache_free(&ctx->netmsg_cache, io_netmsg_cache_free);
io_alloc_cache_free(&ctx->rw_cache, io_rw_cache_free);
WARN_ON_ONCE(!list_empty(&ctx->ltimeout_list));
- io_alloc_cache_free(&ctx->rsrc_node_cache, kfree);
if (ctx->mm_account) {
mmdrop(ctx->mm_account);
ctx->mm_account = NULL;
#include <uapi/linux/io_uring.h>
#include "io_uring.h"
-#include "alloc_cache.h"
#include "openclose.h"
#include "rsrc.h"
#include "memmap.h"
{
struct io_rsrc_node *node;
- node = io_alloc_cache_get(&ctx->rsrc_node_cache);
- if (!node) {
- node = kzalloc(sizeof(*node), GFP_KERNEL);
- if (!node)
- return NULL;
+ node = kzalloc(sizeof(*node), GFP_KERNEL);
+ if (node) {
+ node->ctx = ctx;
+ node->refs = 1;
+ node->type = type;
}
-
- node->ctx = ctx;
- node->refs = 1;
- node->type = type;
return node;
}
break;
}
- if (!io_alloc_cache_put(&ctx->rsrc_node_cache, node))
- kfree(node);
+ kfree(node);
}
static void __io_sqe_files_unregister(struct io_ring_ctx *ctx)