mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 17:41:50 +00:00
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: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
c80c98f0dc
commit
cc3c0b533a
6 changed files with 23 additions and 27 deletions
|
@ -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,
|
||||||
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,
|
||||||
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)
|
||||||
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);
|
||||||
*/
|
*/
|
||||||
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 @@ unknown_parameter:
|
||||||
}
|
}
|
||||||
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.
|
||||||
|
|
10
fs/fsopen.c
10
fs/fsopen.c
|
@ -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)
|
||||||
|
|
||||||
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 {
|
||||||
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 {
|
||||||
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,
|
||||||
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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue