#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/exportfs.h>
#include <linux/gfs2_ondisk.h>
#include <linux/crc32.h>
#include "gfs2.h"
#include "incore.h"
#include "dir.h"
#include "glock.h"
#include "glops.h"
#include "inode.h"
#include "super.h"
#include "rgrp.h"
#include "util.h"
#define GFS2_SMALL_FH_SIZE …
#define GFS2_LARGE_FH_SIZE …
#define GFS2_OLD_FH_SIZE …
static int gfs2_encode_fh(struct inode *inode, __u32 *p, int *len,
struct inode *parent)
{ … }
struct get_name_filldir { … };
static bool get_name_filldir(struct dir_context *ctx, const char *name,
int length, loff_t offset, u64 inum,
unsigned int type)
{ … }
static int gfs2_get_name(struct dentry *parent, char *name,
struct dentry *child)
{ … }
static struct dentry *gfs2_get_parent(struct dentry *child)
{ … }
static struct dentry *gfs2_get_dentry(struct super_block *sb,
struct gfs2_inum_host *inum)
{ … }
static struct dentry *gfs2_fh_to_dentry(struct super_block *sb, struct fid *fid,
int fh_len, int fh_type)
{ … }
static struct dentry *gfs2_fh_to_parent(struct super_block *sb, struct fid *fid,
int fh_len, int fh_type)
{ … }
const struct export_operations gfs2_export_ops = …;