#include <linux/kernel.h>
#include <linux/hdreg.h>
#include <linux/blk-mq.h>
#include <linux/backing-dev.h>
#include <linux/fs.h>
#include <linux/ioctl.h>
#include <linux/slab.h>
#include <linux/ratelimit.h>
#include <linux/netdevice.h>
#include <linux/mutex.h>
#include <linux/export.h>
#include <linux/moduleparam.h>
#include <linux/debugfs.h>
#include <scsi/sg.h>
#include "aoe.h"
static DEFINE_MUTEX(aoeblk_mutex);
static struct kmem_cache *buf_pool_cache;
static struct dentry *aoe_debugfs_dir;
static int aoe_maxsectors = …;
module_param(aoe_maxsectors, int, 0644);
MODULE_PARM_DESC(…) …;
static ssize_t aoedisk_show_state(struct device *dev,
struct device_attribute *attr, char *page)
{ … }
static ssize_t aoedisk_show_mac(struct device *dev,
struct device_attribute *attr, char *page)
{ … }
static ssize_t aoedisk_show_netif(struct device *dev,
struct device_attribute *attr, char *page)
{ … }
static ssize_t aoedisk_show_fwver(struct device *dev,
struct device_attribute *attr, char *page)
{ … }
static ssize_t aoedisk_show_payload(struct device *dev,
struct device_attribute *attr, char *page)
{ … }
static int aoe_debugfs_show(struct seq_file *s, void *ignored)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
static DEVICE_ATTR(state, 0444, aoedisk_show_state, NULL);
static DEVICE_ATTR(mac, 0444, aoedisk_show_mac, NULL);
static DEVICE_ATTR(netif, 0444, aoedisk_show_netif, NULL);
static struct device_attribute dev_attr_firmware_version = …;
static DEVICE_ATTR(payload, 0444, aoedisk_show_payload, NULL);
static struct attribute *aoe_attrs[] = …;
static const struct attribute_group aoe_attr_group = …;
static const struct attribute_group *aoe_attr_groups[] = …;
static void
aoedisk_add_debugfs(struct aoedev *d)
{ … }
void
aoedisk_rm_debugfs(struct aoedev *d)
{ … }
static int
aoeblk_open(struct gendisk *disk, blk_mode_t mode)
{ … }
static void
aoeblk_release(struct gendisk *disk)
{ … }
static blk_status_t aoeblk_queue_rq(struct blk_mq_hw_ctx *hctx,
const struct blk_mq_queue_data *bd)
{ … }
static int
aoeblk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
{ … }
static int
aoeblk_ioctl(struct block_device *bdev, blk_mode_t mode, uint cmd, ulong arg)
{ … }
static const struct block_device_operations aoe_bdops = …;
static const struct blk_mq_ops aoeblk_mq_ops = …;
void
aoeblk_gdalloc(void *vp)
{ … }
void
aoeblk_exit(void)
{ … }
int __init
aoeblk_init(void)
{ … }