diff options
Diffstat (limited to 'fs/ubifs/debug.c')
| -rw-r--r-- | fs/ubifs/debug.c | 19 | 
1 files changed, 15 insertions, 4 deletions
diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c index 84a7e6f3c04..bb3167257aa 100644 --- a/fs/ubifs/debug.c +++ b/fs/ubifs/debug.c @@ -2802,6 +2802,8 @@ static ssize_t dfs_file_read(struct file *file, char __user *u, size_t count,  		val = d->chk_fs;  	else if (dent == d->dfs_tst_rcvry)  		val = d->tst_rcvry; +	else if (dent == d->dfs_ro_error) +		val = c->ro_error;  	else  		return -EINVAL; @@ -2885,6 +2887,8 @@ static ssize_t dfs_file_write(struct file *file, const char __user *u,  		d->chk_fs = val;  	else if (dent == d->dfs_tst_rcvry)  		d->tst_rcvry = val; +	else if (dent == d->dfs_ro_error) +		c->ro_error = !!val;  	else  		return -EINVAL; @@ -2918,7 +2922,7 @@ int dbg_debugfs_init_fs(struct ubifs_info *c)  	struct dentry *dent;  	struct ubifs_debug_info *d = c->dbg; -	if (!IS_ENABLED(DEBUG_FS)) +	if (!IS_ENABLED(CONFIG_DEBUG_FS))  		return 0;  	n = snprintf(d->dfs_dir_name, UBIFS_DFS_DIR_LEN + 1, UBIFS_DFS_DIR_NAME, @@ -2996,6 +3000,13 @@ int dbg_debugfs_init_fs(struct ubifs_info *c)  		goto out_remove;  	d->dfs_tst_rcvry = dent; +	fname = "ro_error"; +	dent = debugfs_create_file(fname, S_IRUSR | S_IWUSR, d->dfs_dir, c, +				   &dfs_fops); +	if (IS_ERR_OR_NULL(dent)) +		goto out_remove; +	d->dfs_ro_error = dent; +  	return 0;  out_remove: @@ -3013,7 +3024,7 @@ out:   */  void dbg_debugfs_exit_fs(struct ubifs_info *c)  { -	if (IS_ENABLED(DEBUG_FS)) +	if (IS_ENABLED(CONFIG_DEBUG_FS))  		debugfs_remove_recursive(c->dbg->dfs_dir);  } @@ -3099,7 +3110,7 @@ int dbg_debugfs_init(void)  	const char *fname;  	struct dentry *dent; -	if (!IS_ENABLED(DEBUG_FS)) +	if (!IS_ENABLED(CONFIG_DEBUG_FS))  		return 0;  	fname = "ubifs"; @@ -3166,7 +3177,7 @@ out:   */  void dbg_debugfs_exit(void)  { -	if (IS_ENABLED(DEBUG_FS)) +	if (IS_ENABLED(CONFIG_DEBUG_FS))  		debugfs_remove_recursive(dfs_rootdir);  }  |