#define pr_fmt(fmt) …
#include <linux/sched.h>
#include <linux/cred.h>
#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/module.h>
#include <linux/kobject.h>
#include <linux/uaccess.h>
#include <linux/gfs2_ondisk.h>
#include <linux/blkdev.h>
#include "gfs2.h"
#include "incore.h"
#include "sys.h"
#include "super.h"
#include "glock.h"
#include "quota.h"
#include "util.h"
#include "glops.h"
#include "recovery.h"
struct gfs2_attr { … };
static ssize_t gfs2_attr_show(struct kobject *kobj, struct attribute *attr,
char *buf)
{ … }
static ssize_t gfs2_attr_store(struct kobject *kobj, struct attribute *attr,
const char *buf, size_t len)
{ … }
static const struct sysfs_ops gfs2_attr_ops = …;
static struct kset *gfs2_kset;
static ssize_t id_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t status_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t fsname_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t uuid_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t freeze_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t freeze_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t withdraw_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t withdraw_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t statfs_sync_store(struct gfs2_sbd *sdp, const char *buf,
size_t len)
{ … }
static ssize_t quota_sync_store(struct gfs2_sbd *sdp, const char *buf,
size_t len)
{ … }
static ssize_t quota_refresh_user_store(struct gfs2_sbd *sdp, const char *buf,
size_t len)
{ … }
static ssize_t quota_refresh_group_store(struct gfs2_sbd *sdp, const char *buf,
size_t len)
{ … }
static ssize_t demote_rq_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
#define GFS2_ATTR(name, mode, show, store) …
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
GFS2_ATTR(…);
static struct attribute *gfs2_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static void gfs2_sbd_release(struct kobject *kobj)
{ … }
static struct kobj_type gfs2_ktype = …;
static ssize_t proto_name_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t block_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t block_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t wdack_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t wdack_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t lkfirst_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t lkfirst_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t first_done_show(struct gfs2_sbd *sdp, char *buf)
{ … }
int gfs2_recover_set(struct gfs2_sbd *sdp, unsigned jid)
{ … }
static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
static ssize_t recover_done_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t recover_status_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t jid_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t jid_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
{ … }
#define GDLM_ATTR(_name,_mode,_show,_store) …
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
GDLM_ATTR(…);
static struct attribute *lock_module_attrs[] = …;
static ssize_t quota_scale_show(struct gfs2_sbd *sdp, char *buf)
{ … }
static ssize_t quota_scale_store(struct gfs2_sbd *sdp, const char *buf,
size_t len)
{ … }
static ssize_t tune_set(struct gfs2_sbd *sdp, unsigned int *field,
int check_zero, const char *buf, size_t len)
{ … }
#define TUNE_ATTR_3(name, show, store) …
#define TUNE_ATTR_2(name, store) …
#define TUNE_ATTR(name, check_zero) …
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR(…);
TUNE_ATTR_3(…);
static struct attribute *tune_attrs[] = …;
static const struct attribute_group tune_group = …;
static const struct attribute_group lock_module_group = …;
int gfs2_sys_fs_add(struct gfs2_sbd *sdp)
{ … }
void gfs2_sys_fs_del(struct gfs2_sbd *sdp)
{ … }
static int gfs2_uevent(const struct kobject *kobj, struct kobj_uevent_env *env)
{ … }
static const struct kset_uevent_ops gfs2_uevent_ops = …;
int gfs2_sys_init(void)
{ … }
void gfs2_sys_uninit(void)
{ … }