aboutsummaryrefslogtreecommitdiffstats
path: root/fs/debugfs
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2015-01-21 15:03:40 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2015-02-17 12:21:51 -0500
commite59b4e9187bd5175b9845dc10fedb0879b7efbfd (patch)
treed1194fe02bcb93cd0fbf4924c9756158717338e9 /fs/debugfs
parent77b3da6e3232d3b4d4b8addb4b05799fe98f3bf8 (diff)
debugfs: Provide a file creation function that also takes an initial size
Provide a file creation function that also takes an initial size so that the caller doesn't have to set i_size, thus meaning that we don't have to call deal with ->d_inode in the callers. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/debugfs')
-rw-r--r--fs/debugfs/inode.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 957c40ce09f6..45b18a5e225c 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -338,6 +338,46 @@ struct dentry *debugfs_create_file(const char *name, umode_t mode,
338EXPORT_SYMBOL_GPL(debugfs_create_file); 338EXPORT_SYMBOL_GPL(debugfs_create_file);
339 339
340/** 340/**
341 * debugfs_create_file_size - create a file in the debugfs filesystem
342 * @name: a pointer to a string containing the name of the file to create.
343 * @mode: the permission that the file should have.
344 * @parent: a pointer to the parent dentry for this file. This should be a
345 * directory dentry if set. If this parameter is NULL, then the
346 * file will be created in the root of the debugfs filesystem.
347 * @data: a pointer to something that the caller will want to get to later
348 * on. The inode.i_private pointer will point to this value on
349 * the open() call.
350 * @fops: a pointer to a struct file_operations that should be used for
351 * this file.
352 * @file_size: initial file size
353 *
354 * This is the basic "create a file" function for debugfs. It allows for a
355 * wide range of flexibility in creating a file, or a directory (if you want
356 * to create a directory, the debugfs_create_dir() function is
357 * recommended to be used instead.)
358 *
359 * This function will return a pointer to a dentry if it succeeds. This
360 * pointer must be passed to the debugfs_remove() function when the file is
361 * to be removed (no automatic cleanup happens if your module is unloaded,
362 * you are responsible here.) If an error occurs, %NULL will be returned.
363 *
364 * If debugfs is not enabled in the kernel, the value -%ENODEV will be
365 * returned.
366 */
367struct dentry *debugfs_create_file_size(const char *name, umode_t mode,
368 struct dentry *parent, void *data,
369 const struct file_operations *fops,
370 loff_t file_size)
371{
372 struct dentry *de = debugfs_create_file(name, mode, parent, data, fops);
373
374 if (de)
375 de->d_inode->i_size = file_size;
376 return de;
377}
378EXPORT_SYMBOL_GPL(debugfs_create_file_size);
379
380/**
341 * debugfs_create_dir - create a directory in the debugfs filesystem 381 * debugfs_create_dir - create a directory in the debugfs filesystem
342 * @name: a pointer to a string containing the name of the directory to 382 * @name: a pointer to a string containing the name of the directory to
343 * create. 383 * create.