^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #ifndef _MD_CLUSTER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define _MD_CLUSTER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include "md.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) struct mddev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) struct md_rdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) struct md_cluster_operations {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) int (*join)(struct mddev *mddev, int nodes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) int (*leave)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) int (*slot_number)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int (*resync_info_update)(struct mddev *mddev, sector_t lo, sector_t hi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) void (*resync_info_get)(struct mddev *mddev, sector_t *lo, sector_t *hi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) int (*metadata_update_start)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) int (*metadata_update_finish)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) void (*metadata_update_cancel)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) int (*resync_start)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int (*resync_finish)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) int (*area_resyncing)(struct mddev *mddev, int direction, sector_t lo, sector_t hi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) int (*add_new_disk)(struct mddev *mddev, struct md_rdev *rdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) void (*add_new_disk_cancel)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) int (*new_disk_ack)(struct mddev *mddev, bool ack);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) int (*remove_disk)(struct mddev *mddev, struct md_rdev *rdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) void (*load_bitmaps)(struct mddev *mddev, int total_slots);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int (*gather_bitmaps)(struct md_rdev *rdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) int (*resize_bitmaps)(struct mddev *mddev, sector_t newsize, sector_t oldsize);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) int (*lock_all_bitmaps)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) void (*unlock_all_bitmaps)(struct mddev *mddev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) void (*update_size)(struct mddev *mddev, sector_t old_dev_sectors);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #endif /* _MD_CLUSTER_H */