/* This returned IO context doesn't have a specifically elevated refcount, but since the current task itself holds a reference, the context can be used in general code, so long as it stays within  */
struct io_context* current_io_context(gfp_t gfp_flags, int node)
/* This returned IO context doesn't have a specifically elevated refcount, but since the current task itself holds a reference, the context can be used in general code, so long as it stays within  */
struct io_context* current_io_context(gfp_t gfp_flags, int node)
{
	struct task_struct *tsk = current;
	struct io_context *ret;
	ret = tsk->io_context;
	if (likely(ret))
		return ret;
	ret = alloc_io_context(gfp_flags, node);
	if (ret) {
		smp_wmb();
		tsk->io_context = ret;
	}
	return ret;
}