extern const char *ceph_msg_type_name(int type);
  extern int ceph_check_fsid(struct ceph_client *client, struct ceph_fsid *fsid);
 -extern void *ceph_kvmalloc(size_t size, gfp_t flags);
+ extern int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid);
  
  struct fs_parameter;
  struct fc_log;
 
  }
  EXPORT_SYMBOL(ceph_compare_options);
  
- static int parse_fsid(const char *str, struct ceph_fsid *fsid)
 -/*
 - * kvmalloc() doesn't fall back to the vmalloc allocator unless flags are
 - * compatible with (a superset of) GFP_KERNEL.  This is because while the
 - * actual pages are allocated with the specified flags, the page table pages
 - * are always allocated with GFP_KERNEL.
 - *
 - * ceph_kvmalloc() may be called with GFP_KERNEL, GFP_NOFS or GFP_NOIO.
 - */
 -void *ceph_kvmalloc(size_t size, gfp_t flags)
 -{
 -      void *p;
 -
 -      if ((flags & (__GFP_IO | __GFP_FS)) == (__GFP_IO | __GFP_FS)) {
 -              p = kvmalloc(size, flags);
 -      } else if ((flags & (__GFP_IO | __GFP_FS)) == __GFP_IO) {
 -              unsigned int nofs_flag = memalloc_nofs_save();
 -              p = kvmalloc(size, GFP_KERNEL);
 -              memalloc_nofs_restore(nofs_flag);
 -      } else {
 -              unsigned int noio_flag = memalloc_noio_save();
 -              p = kvmalloc(size, GFP_KERNEL);
 -              memalloc_noio_restore(noio_flag);
 -      }
 -
 -      return p;
 -}
 -
+ int ceph_parse_fsid(const char *str, struct ceph_fsid *fsid)
  {
        int i = 0;
        char tmp[3];