Introduce md_cluster_operations to handle cluster functions
PATCH 5/24 Introduce md_cluster_operations to handle cluster functions
This allows dynamic registering of cluster hooks.
Signed-off-by Goldwyn Rodrigues <[email protected]>
--- drivers/md/md-cluster.c | 18 +++++++++++++++++ drivers/md/md-cluster.h | 15 +++++++++++++++ drivers/md/md.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ drivers/md/md.h | 7 +++++++ 4 files changed, 91 insertions(+) create mode 100644 drivers/md/md-cluster.h
drivers/md/md-cluster.c +18 -0
@@ -16,6 +16,7 @@#include <linux/dlm.h> #include <linux/sched.h> #include "md.h" +#include "md-cluster.h" #define LVB_SIZE 64
@@ -118,14 +119,31 @@ static void lockres_free(struct dlm_lock_resource *res)return ; } +static int join (struct mddev *md,int nodes) +{ +return 0 ; +} + +static int leave (struct mddev *md) +{ +return 0 ; +} + +static struct md_cluster_operations cluster_ops = { + .join = join, + .leave = leave, +}; +static int __init cluster_init (void ) {pr_info ("Registering Cluster MD functions\n" ); +register_md_cluster_operations (&cluster_ops,THIS_MODULE );return 0 ; }static void cluster_exit (void ) { +unregister_md_cluster_operations (); }module_init (cluster_init);
drivers/md/md-cluster.h new file +15 -0
@@ -0,0 +1,15 @@ + + +#ifndef _MD_CLUSTER_H +#define _MD_CLUSTER_H + +#include "md.h" + +struct mddev ; + +struct md_cluster_operations { +int (*join)(struct mddev *mddev); +int (*leave)(struct mddev *mddev); +}; + +#endif /* _MD_CLUSTER_H */
drivers/md/md.c +51 -0
69 lines not on this page · raw message
drivers/md/md.h +7 -0
@@ -23,6 +23,7 @@#include <linux/timer.h> #include <linux/wait.h> #include <linux/workqueue.h> +#include "md-cluster.h" #define MaxSector (~(sector_t)0)
@@ -575,6 +576,11 @@ static inline void safe_put_page(struct page *p)extern int register_md_personality (struct md_personality *p);extern int unregister_md_personality (struct md_personality *p); +extern int register_md_cluster_operations (struct md_cluster_operations *ops, +struct module *module); +extern int unregister_md_cluster_operations (void ); +extern int md_setup_cluster (struct mddev *mddev,int nodes); +extern void md_cluster_stop (struct mddev *mddev); extern struct md_thread *md_register_thread( void (*run)(struct md_thread *thread), struct mddev *mddev,
@@ -627,4 +633,5 @@ static inline int mddev_check_plugged(struct mddev *mddev)return !!blk_check_plugged (md_unplug, mddev, sizeof(struct blk_plug_cb)); } +extern struct md_cluster_operations *md_cluster_ops;#endif /* _MD_MD_H */
Signature · 1 line
2.1.2