1 2 3 #ifndef _MD_CLUSTER_H 4 #define _MD_CLUSTER_H 5 6 #include "md.h" 7 8 struct mddev; 9 struct md_rdev; 10 11 struct md_cluster_operations { 12 int (*join)(struct mddev *mddev, int nodes); 13 int (*leave)(struct mddev *mddev); 14 int (*slot_number)(struct mddev *mddev); 15 int (*resync_info_update)(struct mddev *mddev, sector_t lo, sector_t hi); 16 int (*metadata_update_start)(struct mddev *mddev); 17 int (*metadata_update_finish)(struct mddev *mddev); 18 void (*metadata_update_cancel)(struct mddev *mddev); 19 int (*resync_start)(struct mddev *mddev); 20 int (*resync_finish)(struct mddev *mddev); 21 int (*area_resyncing)(struct mddev *mddev, int direction, sector_t lo, sector_t hi); 22 int (*add_new_disk)(struct mddev *mddev, struct md_rdev *rdev); 23 void (*add_new_disk_cancel)(struct mddev *mddev); 24 int (*new_disk_ack)(struct mddev *mddev, bool ack); 25 int (*remove_disk)(struct mddev *mddev, struct md_rdev *rdev); 26 void (*load_bitmaps)(struct mddev *mddev, int total_slots); 27 int (*gather_bitmaps)(struct md_rdev *rdev); 28 int (*lock_all_bitmaps)(struct mddev *mddev); 29 void (*unlock_all_bitmaps)(struct mddev *mddev); 30 }; 31 32 #endif /* _MD_CLUSTER_H */ 33