mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
eventfd: move 'eventfd-count' printing out of spinlock
When printing eventfd->count, interrupts will be disabled and a spinlock will be obtained, competing with eventfd_write(). By moving the "eventfd-count" print out of the spinlock and merging multiple seq_printf() into one, it could improve a bit, just like timerfd_show(). Signed-off-by: Wen Yang <wenyang.linux@foxmail.com> Link: https://lore.kernel.org/r/tencent_B0B3D2BD9861FD009E03AB18A81783322709@qq.com Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Jens Axboe <axboe@kernel.dk> Cc: Christian Brauner <brauner@kernel.org> Cc: Christoph Hellwig <hch@lst.de> Cc: Dylan Yudaken <dylany@fb.com> Cc: David Woodhouse <dwmw@amazon.co.uk> Cc: Matthew Wilcox <willy@infradead.org> Cc: Eric Biggers <ebiggers@google.com> Cc: <linux-fsdevel@vger.kernel.org> Cc: <linux-kernel@vger.kernel.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
3948abaa4e
commit
bd46543d7f
13
fs/eventfd.c
13
fs/eventfd.c
@ -283,13 +283,18 @@ static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t c
|
||||
static void eventfd_show_fdinfo(struct seq_file *m, struct file *f)
|
||||
{
|
||||
struct eventfd_ctx *ctx = f->private_data;
|
||||
__u64 cnt;
|
||||
|
||||
spin_lock_irq(&ctx->wqh.lock);
|
||||
seq_printf(m, "eventfd-count: %16llx\n",
|
||||
(unsigned long long)ctx->count);
|
||||
cnt = ctx->count;
|
||||
spin_unlock_irq(&ctx->wqh.lock);
|
||||
seq_printf(m, "eventfd-id: %d\n", ctx->id);
|
||||
seq_printf(m, "eventfd-semaphore: %d\n",
|
||||
|
||||
seq_printf(m,
|
||||
"eventfd-count: %16llx\n"
|
||||
"eventfd-id: %d\n"
|
||||
"eventfd-semaphore: %d\n",
|
||||
cnt,
|
||||
ctx->id,
|
||||
!!(ctx->flags & EFD_SEMAPHORE));
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user