Re: [Intel-gfx] [PATCH 3/9] relay: make create_buf_file and remove_buf_file callbacks mandatory

2020-11-24 Thread Christoph Hellwig
On Mon, Nov 23, 2020 at 07:59:23PM +0200, Jani Nikula wrote:
> All clients provide create_buf_file and remove_buf_file callbacks, and
> they're required for relay to make sense. There is no point in them
> being optional.
> 
> Also document whether each callback is mandatory/optional.

Looks good,

Reviewed-by: Christoph Hellwig 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 3/9] relay: make create_buf_file and remove_buf_file callbacks mandatory

2020-11-23 Thread Jani Nikula
All clients provide create_buf_file and remove_buf_file callbacks, and
they're required for relay to make sense. There is no point in them
being optional.

Also document whether each callback is mandatory/optional.

Suggested-by: Christoph Hellwig 
Cc: Christoph Hellwig 
Signed-off-by: Jani Nikula 
---
 include/linux/relay.h |  6 ++
 kernel/relay.c| 26 +-
 2 files changed, 7 insertions(+), 25 deletions(-)

diff --git a/include/linux/relay.h b/include/linux/relay.h
index b3c4f49f6951..99d024475ba5 100644
--- a/include/linux/relay.h
+++ b/include/linux/relay.h
@@ -89,6 +89,8 @@ struct rchan_callbacks
 * The client should return 1 to continue logging, 0 to stop
 * logging.
 *
+* This callback is optional.
+*
 * NOTE: subbuf_start will also be invoked when the buffer is
 *   created, so that the first sub-buffer can be initialized
 *   if necessary.  In this case, prev_subbuf will be NULL.
@@ -122,6 +124,8 @@ struct rchan_callbacks
 * cause relay_open() to create a single global buffer rather
 * than the default set of per-cpu buffers.
 *
+* This callback is mandatory.
+*
 * See Documentation/filesystems/relay.rst for more info.
 */
struct dentry *(*create_buf_file)(const char *filename,
@@ -139,6 +143,8 @@ struct rchan_callbacks
 * channel buffer.
 *
 * The callback should return 0 if successful, negative if not.
+*
+* This callback is mandatory.
 */
int (*remove_buf_file)(struct dentry *dentry);
 };
diff --git a/kernel/relay.c b/kernel/relay.c
index d9b8185161a8..dd4ec4ec07f3 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -271,26 +271,6 @@ static int subbuf_start_default_callback (struct rchan_buf 
*buf,
return 1;
 }
 
-/*
- * create_buf_file_create() default callback.  Does nothing.
- */
-static struct dentry *create_buf_file_default_callback(const char *filename,
-  struct dentry *parent,
-  umode_t mode,
-  struct rchan_buf *buf,
-  int *is_global)
-{
-   return NULL;
-}
-
-/*
- * remove_buf_file() default callback.  Does nothing.
- */
-static int remove_buf_file_default_callback(struct dentry *dentry)
-{
-   return -EINVAL;
-}
-
 /**
  * wakeup_readers - wake up readers waiting on a channel
  * @work: contains the channel buffer
@@ -467,10 +447,6 @@ static void setup_callbacks(struct rchan *chan,
 {
if (!cb->subbuf_start)
cb->subbuf_start = subbuf_start_default_callback;
-   if (!cb->create_buf_file)
-   cb->create_buf_file = create_buf_file_default_callback;
-   if (!cb->remove_buf_file)
-   cb->remove_buf_file = remove_buf_file_default_callback;
chan->cb = cb;
 }
 
@@ -530,7 +506,7 @@ struct rchan *relay_open(const char *base_filename,
return NULL;
if (subbuf_size > UINT_MAX / n_subbufs)
return NULL;
-   if (!cb)
+   if (!cb || !cb->create_buf_file || !cb->remove_buf_file)
return NULL;
 
chan = kzalloc(sizeof(struct rchan), GFP_KERNEL);
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx