Commit cc3c0b53 authored by Al Viro's avatar Al Viro

add prefix to fs_context->log

... turning it into struct p_log embedded into fs_context.  Initialize
the prefix with fs_type->name, turning fs_parse() into a trivial
inline wrapper for __fs_parse().

This makes fs_parameter_description->name completely unused.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c80c98f0
...@@ -250,7 +250,7 @@ static int ceph_parse_source(struct fs_parameter *param, struct fs_context *fc) ...@@ -250,7 +250,7 @@ static int ceph_parse_source(struct fs_parameter *param, struct fs_context *fc)
dout("server path '%s'\n", fsopt->server_path); dout("server path '%s'\n", fsopt->server_path);
ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name, ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name,
pctx->copts, fc->log); pctx->copts, fc->log.log);
if (ret) if (ret)
return ret; return ret;
...@@ -268,7 +268,7 @@ static int ceph_parse_mount_param(struct fs_context *fc, ...@@ -268,7 +268,7 @@ static int ceph_parse_mount_param(struct fs_context *fc,
unsigned int mode; unsigned int mode;
int token, ret; int token, ret;
ret = ceph_parse_param(param, pctx->copts, fc->log); ret = ceph_parse_param(param, pctx->copts, fc->log.log);
if (ret != -ENOPARAM) if (ret != -ENOPARAM)
return ret; return ret;
......
...@@ -271,6 +271,7 @@ static struct fs_context *alloc_fs_context(struct file_system_type *fs_type, ...@@ -271,6 +271,7 @@ static struct fs_context *alloc_fs_context(struct file_system_type *fs_type,
fc->fs_type = get_filesystem(fs_type); fc->fs_type = get_filesystem(fs_type);
fc->cred = get_current_cred(); fc->cred = get_current_cred();
fc->net_ns = get_net(current->nsproxy->net_ns); fc->net_ns = get_net(current->nsproxy->net_ns);
fc->log.prefix = fs_type->name;
mutex_init(&fc->uapi_mutex); mutex_init(&fc->uapi_mutex);
...@@ -364,8 +365,8 @@ struct fs_context *vfs_dup_fs_context(struct fs_context *src_fc) ...@@ -364,8 +365,8 @@ struct fs_context *vfs_dup_fs_context(struct fs_context *src_fc)
get_net(fc->net_ns); get_net(fc->net_ns);
get_user_ns(fc->user_ns); get_user_ns(fc->user_ns);
get_cred(fc->cred); get_cred(fc->cred);
if (fc->log) if (fc->log.log)
refcount_inc(&fc->log->usage); refcount_inc(&fc->log.log->usage);
/* Can't call put until we've called ->dup */ /* Can't call put until we've called ->dup */
ret = fc->ops->dup(fc, src_fc); ret = fc->ops->dup(fc, src_fc);
...@@ -442,12 +443,12 @@ EXPORT_SYMBOL(logfc); ...@@ -442,12 +443,12 @@ EXPORT_SYMBOL(logfc);
*/ */
static void put_fc_log(struct fs_context *fc) static void put_fc_log(struct fs_context *fc)
{ {
struct fc_log *log = fc->log; struct fc_log *log = fc->log.log;
int i; int i;
if (log) { if (log) {
if (refcount_dec_and_test(&log->usage)) { if (refcount_dec_and_test(&log->usage)) {
fc->log = NULL; fc->log.log = NULL;
for (i = 0; i <= 7; i++) for (i = 0; i <= 7; i++)
if (log->need_free & (1 << i)) if (log->need_free & (1 << i))
kfree(log->buffer[i]); kfree(log->buffer[i]);
......
...@@ -243,16 +243,6 @@ int __fs_parse(struct p_log *log, ...@@ -243,16 +243,6 @@ int __fs_parse(struct p_log *log,
} }
EXPORT_SYMBOL(__fs_parse); EXPORT_SYMBOL(__fs_parse);
int fs_parse(struct fs_context *fc,
const struct fs_parameter_description *desc,
struct fs_parameter *param,
struct fs_parse_result *result)
{
struct p_log log = {.prefix = desc->name, .log = fc->log};
return __fs_parse(&log, desc, param, result);
}
EXPORT_SYMBOL(fs_parse);
/** /**
* fs_lookup_param - Look up a path referred to by a parameter * fs_lookup_param - Look up a path referred to by a parameter
* @fc: The filesystem context to log errors through. * @fc: The filesystem context to log errors through.
......
...@@ -25,7 +25,7 @@ static ssize_t fscontext_read(struct file *file, ...@@ -25,7 +25,7 @@ static ssize_t fscontext_read(struct file *file,
char __user *_buf, size_t len, loff_t *pos) char __user *_buf, size_t len, loff_t *pos)
{ {
struct fs_context *fc = file->private_data; struct fs_context *fc = file->private_data;
struct fc_log *log = fc->log; struct fc_log *log = fc->log.log;
unsigned int logsize = ARRAY_SIZE(log->buffer); unsigned int logsize = ARRAY_SIZE(log->buffer);
ssize_t ret; ssize_t ret;
char *p; char *p;
...@@ -97,11 +97,11 @@ static int fscontext_create_fd(struct fs_context *fc, unsigned int o_flags) ...@@ -97,11 +97,11 @@ static int fscontext_create_fd(struct fs_context *fc, unsigned int o_flags)
static int fscontext_alloc_log(struct fs_context *fc) static int fscontext_alloc_log(struct fs_context *fc)
{ {
fc->log = kzalloc(sizeof(*fc->log), GFP_KERNEL); fc->log.log = kzalloc(sizeof(*fc->log.log), GFP_KERNEL);
if (!fc->log) if (!fc->log.log)
return -ENOMEM; return -ENOMEM;
refcount_set(&fc->log->usage, 1); refcount_set(&fc->log.log->usage, 1);
fc->log->owner = fc->fs_type->owner; fc->log.log->owner = fc->fs_type->owner;
return 0; return 0;
} }
......
...@@ -97,7 +97,7 @@ struct fs_context { ...@@ -97,7 +97,7 @@ struct fs_context {
struct user_namespace *user_ns; /* The user namespace for this mount */ struct user_namespace *user_ns; /* The user namespace for this mount */
struct net *net_ns; /* The network namespace for this mount */ struct net *net_ns; /* The network namespace for this mount */
const struct cred *cred; /* The mounter's credentials */ const struct cred *cred; /* The mounter's credentials */
struct fc_log *log; /* Logging buffer */ struct p_log log; /* Logging buffer */
const char *source; /* The source name (eg. dev path) */ const char *source; /* The source name (eg. dev path) */
void *security; /* Linux S&M options */ void *security; /* Linux S&M options */
void *s_fs_info; /* Proposed s_fs_info */ void *s_fs_info; /* Proposed s_fs_info */
...@@ -189,7 +189,7 @@ struct fc_log { ...@@ -189,7 +189,7 @@ struct fc_log {
extern __attribute__((format(printf, 4, 5))) extern __attribute__((format(printf, 4, 5)))
void logfc(struct fc_log *log, const char *prefix, char level, const char *fmt, ...); void logfc(struct fc_log *log, const char *prefix, char level, const char *fmt, ...);
#define __logfc(fc, l, fmt, ...) logfc((fc)->log, NULL, \ #define __logfc(fc, l, fmt, ...) logfc((fc)->log.log, NULL, \
l, fmt, ## __VA_ARGS__) l, fmt, ## __VA_ARGS__)
#define __plog(p, l, fmt, ...) logfc((p)->log, (p)->prefix, \ #define __plog(p, l, fmt, ...) logfc((p)->log, (p)->prefix, \
l, fmt, ## __VA_ARGS__) l, fmt, ## __VA_ARGS__)
......
...@@ -78,10 +78,15 @@ extern int __fs_parse(struct p_log *log, ...@@ -78,10 +78,15 @@ extern int __fs_parse(struct p_log *log,
const struct fs_parameter_description *desc, const struct fs_parameter_description *desc,
struct fs_parameter *value, struct fs_parameter *value,
struct fs_parse_result *result); struct fs_parse_result *result);
extern int fs_parse(struct fs_context *fc,
static inline int fs_parse(struct fs_context *fc,
const struct fs_parameter_description *desc, const struct fs_parameter_description *desc,
struct fs_parameter *value, struct fs_parameter *param,
struct fs_parse_result *result); struct fs_parse_result *result)
{
return __fs_parse(&fc->log, desc, param, result);
}
extern int fs_lookup_param(struct fs_context *fc, extern int fs_lookup_param(struct fs_context *fc,
struct fs_parameter *param, struct fs_parameter *param,
bool want_bdev, bool want_bdev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment