linux/fs/ceph/export.c

// SPDX-License-Identifier: GPL-2.0
#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"

/*
 * Basic fh
 */
struct ceph_nfs_fh {} __attribute__ ((packed));

/*
 * Larger fh that includes parent ino.
 */
struct ceph_nfs_confh {} __attribute__ ((packed));

/*
 * fh for snapped inode
 */
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)
{}

/*
 * convert regular fh to dentry
 */
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)
{}

/*
 * convert regular fh to parent
 */
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 =;