mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
aio: give shared kioctx fields their own cachelines
[akpm@linux-foundation.org: make reqs_active __cacheline_aligned_in_smp] Signed-off-by: Kent Overstreet <koverstreet@google.com> Cc: Zach Brown <zab@redhat.com> Cc: Felipe Balbi <balbi@ti.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Mark Fasheh <mfasheh@suse.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Jens Axboe <axboe@kernel.dk> Cc: Asai Thambi S P <asamymuthupa@micron.com> Cc: Selvan Mani <smani@micron.com> Cc: Sam Bradshaw <sbradshaw@micron.com> Cc: Jeff Moyer <jmoyer@redhat.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Benjamin LaHaise <bcrl@kvack.org> Reviewed-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
58c85dc20a
commit
4e23bcaeb9
27
fs/aio.c
27
fs/aio.c
@ -67,13 +67,6 @@ struct kioctx {
|
|||||||
unsigned long user_id;
|
unsigned long user_id;
|
||||||
struct hlist_node list;
|
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
|
* This is what userspace passed to io_setup(), it's not used for
|
||||||
* anything but counting against the global max_reqs quota.
|
* anything but counting against the global max_reqs quota.
|
||||||
@ -92,19 +85,29 @@ struct kioctx {
|
|||||||
struct page **ring_pages;
|
struct page **ring_pages;
|
||||||
long nr_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 {
|
||||||
struct mutex ring_lock;
|
struct mutex ring_lock;
|
||||||
} ____cacheline_aligned;
|
wait_queue_head_t wait;
|
||||||
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned tail;
|
unsigned tail;
|
||||||
spinlock_t completion_lock;
|
spinlock_t completion_lock;
|
||||||
} ____cacheline_aligned;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
struct page *internal_pages[AIO_RING_PAGES];
|
struct page *internal_pages[AIO_RING_PAGES];
|
||||||
|
|
||||||
struct rcu_head rcu_head;
|
|
||||||
struct work_struct rcu_work;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*------ sysctl variables----*/
|
/*------ sysctl variables----*/
|
||||||
|
Loading…
Reference in New Issue
Block a user