diff options
| -rw-r--r-- | fs/aio.c | 27 | 
1 files changed, 15 insertions, 12 deletions
@@ -67,13 +67,6 @@ struct kioctx {  	unsigned long		user_id;  	struct hlist_node	list; -	wait_queue_head_t	wait; - -	spinlock_t		ctx_lock; - -	atomic_t		reqs_active; -	struct list_head	active_reqs;	/* used for cancellation */ -  	/*  	 * This is what userspace passed to io_setup(), it's not used for  	 * anything but counting against the global max_reqs quota. @@ -92,19 +85,29 @@ struct kioctx {  	struct page		**ring_pages;  	long			nr_pages; +	struct rcu_head		rcu_head; +	struct work_struct	rcu_work; + +	struct { +		atomic_t	reqs_active; +	} ____cacheline_aligned_in_smp; + +	struct { +		spinlock_t	ctx_lock; +		struct list_head active_reqs;	/* used for cancellation */ +	} ____cacheline_aligned_in_smp; +  	struct {  		struct mutex	ring_lock; -	} ____cacheline_aligned; +		wait_queue_head_t wait; +	} ____cacheline_aligned_in_smp;  	struct {  		unsigned	tail;  		spinlock_t	completion_lock; -	} ____cacheline_aligned; +	} ____cacheline_aligned_in_smp;  	struct page		*internal_pages[AIO_RING_PAGES]; - -	struct rcu_head		rcu_head; -	struct work_struct	rcu_work;  };  /*------ sysctl variables----*/  |