#include <linux/ceph/ceph_debug.h>
#include <linux/exportfs.h>
#include <linux/slab.h>
#include <asm/unaligned.h>
#include "super.h"
#include "mds_client.h"
#include "crypto.h"
struct ceph_nfs_fh { … } __attribute__ ((packed));
struct ceph_nfs_confh { … } __attribute__ ((packed));
struct ceph_nfs_snapfh { … } __attribute__ ((packed));
static int ceph_encode_snapfh(struct inode *inode, u32 *rawfh, int *max_len,
struct inode *parent_inode)
{ … }
static int ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len,
struct inode *parent_inode)
{ … }
static struct inode *__lookup_inode(struct super_block *sb, u64 ino)
{ … }
struct inode *ceph_lookup_inode(struct super_block *sb, u64 ino)
{ … }
static struct dentry *__fh_to_dentry(struct super_block *sb, u64 ino)
{ … }
static struct dentry *__snapfh_to_dentry(struct super_block *sb,
struct ceph_nfs_snapfh *sfh,
bool want_parent)
{ … }
static struct dentry *ceph_fh_to_dentry(struct super_block *sb,
struct fid *fid,
int fh_len, int fh_type)
{ … }
static struct dentry *__get_parent(struct super_block *sb,
struct dentry *child, u64 ino)
{ … }
static struct dentry *ceph_get_parent(struct dentry *child)
{ … }
static struct dentry *ceph_fh_to_parent(struct super_block *sb,
struct fid *fid,
int fh_len, int fh_type)
{ … }
static int __get_snap_name(struct dentry *parent, char *name,
struct dentry *child)
{ … }
static int ceph_get_name(struct dentry *parent, char *name,
struct dentry *child)
{ … }
const struct export_operations ceph_export_ops = …;