mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
fs/pipe: move check to pipe_has_watch_queue()
[ Upstream commitb4bd6b4bac
] This declutters the code by reducing the number of #ifdefs and makes the watch_queue checks simpler. This has no runtime effect; the machine code is identical. Signed-off-by: Max Kellermann <max.kellermann@ionos.com> Message-Id: <20230921075755.1378787-2-max.kellermann@ionos.com> Reviewed-by: David Howells <dhowells@redhat.com> Signed-off-by: Christian Brauner <brauner@kernel.org> Stable-dep-of:e95aada4cb
("pipe: wakeup wr_wait after setting max_usage") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
28f010dc50
commit
6f5c4aaddd
12
fs/pipe.c
12
fs/pipe.c
@ -436,12 +436,10 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
|
||||
goto out;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_WATCH_QUEUE
|
||||
if (pipe->watch_queue) {
|
||||
if (pipe_has_watch_queue(pipe)) {
|
||||
ret = -EXDEV;
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If it wasn't empty we try to merge new data into
|
||||
@ -1320,10 +1318,8 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long arg)
|
||||
unsigned int nr_slots, size;
|
||||
long ret = 0;
|
||||
|
||||
#ifdef CONFIG_WATCH_QUEUE
|
||||
if (pipe->watch_queue)
|
||||
if (pipe_has_watch_queue(pipe))
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
size = round_pipe_size(arg);
|
||||
nr_slots = size >> PAGE_SHIFT;
|
||||
@ -1375,10 +1371,8 @@ struct pipe_inode_info *get_pipe_info(struct file *file, bool for_splice)
|
||||
|
||||
if (file->f_op != &pipefifo_fops || !pipe)
|
||||
return NULL;
|
||||
#ifdef CONFIG_WATCH_QUEUE
|
||||
if (for_splice && pipe->watch_queue)
|
||||
if (for_splice && pipe_has_watch_queue(pipe))
|
||||
return NULL;
|
||||
#endif
|
||||
return pipe;
|
||||
}
|
||||
|
||||
|
@ -124,6 +124,22 @@ struct pipe_buf_operations {
|
||||
bool (*get)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
};
|
||||
|
||||
/**
|
||||
* pipe_has_watch_queue - Check whether the pipe is a watch_queue,
|
||||
* i.e. it was created with O_NOTIFICATION_PIPE
|
||||
* @pipe: The pipe to check
|
||||
*
|
||||
* Return: true if pipe is a watch queue, false otherwise.
|
||||
*/
|
||||
static inline bool pipe_has_watch_queue(const struct pipe_inode_info *pipe)
|
||||
{
|
||||
#ifdef CONFIG_WATCH_QUEUE
|
||||
return pipe->watch_queue != NULL;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* pipe_empty - Return true if the pipe is empty
|
||||
* @head: The pipe ring head pointer
|
||||
|
Loading…
Reference in New Issue
Block a user