| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 |  | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef _MD_CLUSTER_H | 
|---|
| 5 | #define _MD_CLUSTER_H | 
|---|
| 6 |  | 
|---|
| 7 | #include "md.h" | 
|---|
| 8 |  | 
|---|
| 9 | struct mddev; | 
|---|
| 10 | struct md_rdev; | 
|---|
| 11 |  | 
|---|
| 12 | struct md_cluster_operations { | 
|---|
| 13 | struct md_submodule_head head; | 
|---|
| 14 |  | 
|---|
| 15 | int (*join)(struct mddev *mddev, int nodes); | 
|---|
| 16 | int (*leave)(struct mddev *mddev); | 
|---|
| 17 | int (*slot_number)(struct mddev *mddev); | 
|---|
| 18 | int (*resync_info_update)(struct mddev *mddev, sector_t lo, sector_t hi); | 
|---|
| 19 | int (*resync_start_notify)(struct mddev *mddev); | 
|---|
| 20 | int (*resync_status_get)(struct mddev *mddev); | 
|---|
| 21 | void (*resync_info_get)(struct mddev *mddev, sector_t *lo, sector_t *hi); | 
|---|
| 22 | int (*metadata_update_start)(struct mddev *mddev); | 
|---|
| 23 | int (*metadata_update_finish)(struct mddev *mddev); | 
|---|
| 24 | void (*metadata_update_cancel)(struct mddev *mddev); | 
|---|
| 25 | int (*resync_start)(struct mddev *mddev); | 
|---|
| 26 | int (*resync_finish)(struct mddev *mddev); | 
|---|
| 27 | int (*area_resyncing)(struct mddev *mddev, int direction, sector_t lo, sector_t hi); | 
|---|
| 28 | int (*add_new_disk)(struct mddev *mddev, struct md_rdev *rdev); | 
|---|
| 29 | void (*add_new_disk_cancel)(struct mddev *mddev); | 
|---|
| 30 | int (*new_disk_ack)(struct mddev *mddev, bool ack); | 
|---|
| 31 | int (*remove_disk)(struct mddev *mddev, struct md_rdev *rdev); | 
|---|
| 32 | void (*load_bitmaps)(struct mddev *mddev, int total_slots); | 
|---|
| 33 | int (*gather_bitmaps)(struct md_rdev *rdev); | 
|---|
| 34 | int (*resize_bitmaps)(struct mddev *mddev, sector_t newsize, sector_t oldsize); | 
|---|
| 35 | int (*lock_all_bitmaps)(struct mddev *mddev); | 
|---|
| 36 | void (*unlock_all_bitmaps)(struct mddev *mddev); | 
|---|
| 37 | void (*update_size)(struct mddev *mddev, sector_t old_dev_sectors); | 
|---|
| 38 | }; | 
|---|
| 39 |  | 
|---|
| 40 | extern int md_setup_cluster(struct mddev *mddev, int nodes); | 
|---|
| 41 | extern void md_cluster_stop(struct mddev *mddev); | 
|---|
| 42 | extern void md_reload_sb(struct mddev *mddev, int raid_disk); | 
|---|
| 43 |  | 
|---|
| 44 | #endif /* _MD_CLUSTER_H */ | 
|---|
| 45 |  | 
|---|