Re: [RFC v3 12/13] vfs: add debugfs support
From: Zhi Yong Wu <hidden>
Date: 2012-10-15 08:47:51
Also in:
linux-btrfs, linux-fsdevel, lkml
On Mon, Oct 15, 2012 at 4:04 PM, Dave Chinner [off-list ref] wrote:
On Wed, Oct 10, 2012 at 06:07:34PM +0800, zwu.kernel@gmail.com wrote:quoted
From: Zhi Yong Wu <redacted> Add a /sys/kernel/debug/hot_track/<device_name>/ directory for each volume that contains two files. The first, `inode_data', contains the heat information for inodes that have been brought into the hot data map structures. The second, `range_data', contains similar information for subfile ranges. Signed-off-by: Zhi Yong Wu <redacted> --- fs/hot_tracking.c | 462 +++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/hot_tracking.h | 43 +++++ 2 files changed, 505 insertions(+), 0 deletions(-).....quoted
+static int hot_debugfs_copy(struct debugfs_vol_data *data, char *msg, int len) +{ + struct lstring *debugfs_log = data->debugfs_log; + uint new_log_alloc_size; + char *new_log; + static char err_msg[] = "No more memory!\n"; + + if (len >= data->log_alloc_size - debugfs_log->len) {......quoted
+ } + + memcpy(debugfs_log->str + debugfs_log->len, data->log_work_buff, len); + debugfs_log->len += (unsigned long) len; + + return len; +} + +/* Returns the number of bytes written to the log. */ +static int hot_debugfs_log(struct debugfs_vol_data *data, const char *fmt, ...) +{ + struct lstring *debugfs_log = data->debugfs_log; + va_list args; + int len; + static char trunc_msg[] = + "The next message has been truncated.\n"; + + if (debugfs_log->str == NULL) + return -1; + + spin_lock(&data->log_lock); + + va_start(args, fmt); + len = vsnprintf(data->log_work_buff, + sizeof(data->log_work_buff), fmt, args); + va_end(args); + + if (len >= sizeof(data->log_work_buff)) { + hot_debugfs_copy(data, trunc_msg, sizeof(trunc_msg)); + } + + len = hot_debugfs_copy(data, data->log_work_buff, len); + spin_unlock(&data->log_lock); + + return len; +}Aren't you just recreating seq_printf() here? i.e. can't you replace all this complexity with generic seq_file/seq_operations constructs?
It seems to be a good suggestion, let me try it. thanks.
Cheers, Dave. -- Dave Chinner david@fromorbit.com
-- Regards, Zhi Yong Wu