root/drivers/block/aoe/aoemain.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. discover_timer
  2. aoe_exit
  3. aoe_init

   1 /* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
   2 /*
   3  * aoemain.c
   4  * Module initialization routines, discover timer
   5  */
   6 
   7 #include <linux/hdreg.h>
   8 #include <linux/blkdev.h>
   9 #include <linux/module.h>
  10 #include <linux/skbuff.h>
  11 #include "aoe.h"
  12 
  13 MODULE_LICENSE("GPL");
  14 MODULE_AUTHOR("Sam Hopkins <sah@coraid.com>");
  15 MODULE_DESCRIPTION("AoE block/char driver for 2.6.2 and newer 2.6 kernels");
  16 MODULE_VERSION(VERSION);
  17 
  18 static struct timer_list timer;
  19 
  20 static void discover_timer(struct timer_list *t)
  21 {
  22         mod_timer(t, jiffies + HZ * 60); /* one minute */
  23 
  24         aoecmd_cfg(0xffff, 0xff);
  25 }
  26 
  27 static void __exit
  28 aoe_exit(void)
  29 {
  30         del_timer_sync(&timer);
  31 
  32         aoenet_exit();
  33         unregister_blkdev(AOE_MAJOR, DEVICE_NAME);
  34         aoecmd_exit();
  35         aoechr_exit();
  36         aoedev_exit();
  37         aoeblk_exit();          /* free cache after de-allocating bufs */
  38 }
  39 
  40 static int __init
  41 aoe_init(void)
  42 {
  43         int ret;
  44 
  45         ret = aoedev_init();
  46         if (ret)
  47                 return ret;
  48         ret = aoechr_init();
  49         if (ret)
  50                 goto chr_fail;
  51         ret = aoeblk_init();
  52         if (ret)
  53                 goto blk_fail;
  54         ret = aoenet_init();
  55         if (ret)
  56                 goto net_fail;
  57         ret = aoecmd_init();
  58         if (ret)
  59                 goto cmd_fail;
  60         ret = register_blkdev(AOE_MAJOR, DEVICE_NAME);
  61         if (ret < 0) {
  62                 printk(KERN_ERR "aoe: can't register major\n");
  63                 goto blkreg_fail;
  64         }
  65         printk(KERN_INFO "aoe: AoE v%s initialised.\n", VERSION);
  66 
  67         timer_setup(&timer, discover_timer, 0);
  68         discover_timer(&timer);
  69         return 0;
  70  blkreg_fail:
  71         aoecmd_exit();
  72  cmd_fail:
  73         aoenet_exit();
  74  net_fail:
  75         aoeblk_exit();
  76  blk_fail:
  77         aoechr_exit();
  78  chr_fail:
  79         aoedev_exit();
  80 
  81         printk(KERN_INFO "aoe: initialisation failure.\n");
  82         return ret;
  83 }
  84 
  85 module_init(aoe_init);
  86 module_exit(aoe_exit);
  87 

/* [<][>][^][v][top][bottom][index][help] */