From 8def9141bc86d3179e8b87739d9e1ba48086d545 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Fri, 3 Feb 2017 14:21:57 -0800 Subject: [PATCH] Add scoutfs_key_init_buf_len() As of yet the static key users have key and buffer lengths that match. We're about to add a link backref caller who searches with a small key but gets a result copied into a larger buffer. Signed-off-by: Zach Brown --- kmod/src/key.h | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/kmod/src/key.h b/kmod/src/key.h index 2ed2f3f6..7d3b2230 100644 --- a/kmod/src/key.h +++ b/kmod/src/key.h @@ -19,6 +19,22 @@ void scoutfs_key_inc_cur_len(struct scoutfs_key_buf *key); void scoutfs_key_dec(struct scoutfs_key_buf *key); void scoutfs_key_dec_cur_len(struct scoutfs_key_buf *key); +/* + * Initialize a small key in a larger allocated buffer. This lets + * callers, for example, search for a small key and get a larger key + * copied in. + */ +static inline void scoutfs_key_init_buf_len(struct scoutfs_key_buf *key, + void *data, u16 key_len, + u16 buf_len) +{ + WARN_ON_ONCE(buf_len > SCOUTFS_MAX_KEY_SIZE); + WARN_ON_ONCE(key_len > buf_len); + + key->data = data; + key->key_len = key_len; + key->buf_len = buf_len; +} /* * Point the key buf, usually statically allocated, at an existing @@ -27,11 +43,7 @@ void scoutfs_key_dec_cur_len(struct scoutfs_key_buf *key); static inline void scoutfs_key_init(struct scoutfs_key_buf *key, void *data, u16 len) { - WARN_ON_ONCE(len > SCOUTFS_MAX_KEY_SIZE); - - key->data = data; - key->key_len = len; - key->buf_len = len; + scoutfs_key_init_buf_len(key, data, len, len); } /*