[PATCH] Keys: Remove incorrect and obsolete '!' operators
[linux-block.git] / fs / aio.c
CommitLineData
1da177e4
LT
1/*
2 * An async IO implementation for Linux
3 * Written by Benjamin LaHaise <bcrl@kvack.org>
4 *
5 * Implements an efficient asynchronous io interface.
6 *
7 * Copyright 2000, 2001, 2002 Red Hat, Inc. All Rights Reserved.
8 *
9 * See ../COPYING for licensing terms.
10 */
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/errno.h>
14#include <linux/time.h>
15#include <linux/aio_abi.h>
16#include <linux/module.h>
17#include <linux/syscalls.h>
18
19#define DEBUG 0
20
21#include <linux/sched.h>
22#include <linux/fs.h>
23#include <linux/file.h>
24#include <linux/mm.h>
25#include <linux/mman.h>
26#include <linux/slab.h>
27#include <linux/timer.h>
28#include <linux/aio.h>
29#include <linux/highmem.h>
30#include <linux/workqueue.h>
31#include <linux/security.h>
ab2af1f5 32#include <linux/rcuref.h>
1da177e4
LT
33
34#include <asm/kmap_types.h>
35#include <asm/uaccess.h>
36#include <asm/mmu_context.h>
37
38#if DEBUG > 1
39#define dprintk printk
40#else
41#define dprintk(x...) do { ; } while (0)
42#endif
43
1da177e4
LT
44/*------ sysctl variables----*/
45atomic_t aio_nr = ATOMIC_INIT(0); /* current system wide number of aio requests */
46unsigned aio_max_nr = 0x10000; /* system wide maximum number of aio requests */
47/*----end sysctl variables---*/
48
49static kmem_cache_t *kiocb_cachep;
50static kmem_cache_t *kioctx_cachep;
51
52static struct workqueue_struct *aio_wq;
53
54/* Used for rare fput completion. */
55static void aio_fput_routine(void *);
56static DECLARE_WORK(fput_work, aio_fput_routine, NULL);
57
58static DEFINE_SPINLOCK(fput_lock);
25ee7e38 59static LIST_HEAD(fput_head);
1da177e4
LT
60
61static void aio_kick_handler(void *);