dout("server path '%s'\n", fsopt->server_path);
 
        ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name,
-                                pctx->copts, fc->log);
+                                pctx->copts, fc->log.log);
        if (ret)
                return ret;
 
        unsigned int mode;
        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)
                return ret;
 
 
        fc->fs_type     = get_filesystem(fs_type);
        fc->cred        = get_current_cred();
        fc->net_ns      = get_net(current->nsproxy->net_ns);
+       fc->log.prefix  = fs_type->name;
 
        mutex_init(&fc->uapi_mutex);
 
        get_net(fc->net_ns);
        get_user_ns(fc->user_ns);
        get_cred(fc->cred);
-       if (fc->log)
-               refcount_inc(&fc->log->usage);
+       if (fc->log.log)
+               refcount_inc(&fc->log.log->usage);
 
        /* Can't call put until we've called ->dup */
        ret = fc->ops->dup(fc, src_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;
 
        if (log) {
                if (refcount_dec_and_test(&log->usage)) {
-                       fc->log = NULL;
+                       fc->log.log = NULL;
                        for (i = 0; i <= 7; i++)
                                if (log->need_free & (1 << i))
                                        kfree(log->buffer[i]);
 
 }
 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
  * @fc: The filesystem context to log errors through.
 
                              char __user *_buf, size_t len, loff_t *pos)
 {
        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);
        ssize_t ret;
        char *p;
 
 static int fscontext_alloc_log(struct fs_context *fc)
 {
-       fc->log = kzalloc(sizeof(*fc->log), GFP_KERNEL);
-       if (!fc->log)
+       fc->log.log = kzalloc(sizeof(*fc->log.log), GFP_KERNEL);
+       if (!fc->log.log)
                return -ENOMEM;
-       refcount_set(&fc->log->usage, 1);
-       fc->log->owner = fc->fs_type->owner;
+       refcount_set(&fc->log.log->usage, 1);
+       fc->log.log->owner = fc->fs_type->owner;
        return 0;
 }
 
 
        struct user_namespace   *user_ns;       /* The user namespace for this mount */
        struct net              *net_ns;        /* The network namespace for this mount */
        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) */
        void                    *security;      /* Linux S&M options */
        void                    *s_fs_info;     /* Proposed s_fs_info */
 extern __attribute__((format(printf, 4, 5)))
 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__)
 #define __plog(p, l, fmt, ...) logfc((p)->log, (p)->prefix, \
                                        l, fmt, ## __VA_ARGS__)
 
                    const struct fs_parameter_description *desc,
                    struct fs_parameter *value,
                    struct fs_parse_result *result);
-extern int fs_parse(struct fs_context *fc,
-                   const struct fs_parameter_description *desc,
-                   struct fs_parameter *value,
-                   struct fs_parse_result *result);
+
+static inline int fs_parse(struct fs_context *fc,
+            const struct fs_parameter_description *desc,
+            struct fs_parameter *param,
+            struct fs_parse_result *result)
+{
+       return __fs_parse(&fc->log, desc, param, result);
+}
+
 extern int fs_lookup_param(struct fs_context *fc,
                           struct fs_parameter *param,
                           bool want_bdev,