Lines Matching defs:mddev
52 struct mddev *mddev; /* RAID array if running */
295 * mddev->curr_resync stores the current sector of the resync but
309 struct mddev {
530 void (*sync_super)(struct mddev *mddev, struct md_rdev *rdev);
577 static inline bool md_is_rdwr(struct mddev *mddev)
579 return (mddev->ro == MD_RDWR);
582 static inline bool is_md_suspended(struct mddev *mddev)
584 return percpu_ref_is_dying(&mddev->active_io);
587 static inline int __must_check mddev_lock(struct mddev *mddev)
589 return mutex_lock_interruptible(&mddev->reconfig_mutex);
595 static inline void mddev_lock_nointr(struct mddev *mddev)
597 mutex_lock(&mddev->reconfig_mutex);
600 static inline int mddev_trylock(struct mddev *mddev)
602 return mutex_trylock(&mddev->reconfig_mutex);
604 extern void mddev_unlock(struct mddev *mddev);
622 bool __must_check (*make_request)(struct mddev *mddev, struct bio *bio);
627 int (*run)(struct mddev *mddev);
629 int (*start)(struct mddev *mddev);
630 void (*free)(struct mddev *mddev, void *priv);
631 void (*status)(struct seq_file *seq, struct mddev *mddev);
635 void (*error_handler)(struct mddev *mddev, struct md_rdev *rdev);
636 int (*hot_add_disk) (struct mddev *mddev, struct md_rdev *rdev);
637 int (*hot_remove_disk) (struct mddev *mddev, struct md_rdev *rdev);
638 int (*spare_active) (struct mddev *mddev);
639 sector_t (*sync_request)(struct mddev *mddev, sector_t sector_nr, int *skipped);
640 int (*resize) (struct mddev *mddev, sector_t sectors);
641 sector_t (*size) (struct mddev *mddev, sector_t sectors, int raid_disks);
642 int (*check_reshape) (struct mddev *mddev);
643 int (*start_reshape) (struct mddev *mddev);
644 void (*finish_reshape) (struct mddev *mddev);
645 void (*update_reshape_pos) (struct mddev *mddev);
646 void (*prepare_suspend) (struct mddev *mddev);
651 void (*quiesce) (struct mddev *mddev, int quiesce);
661 void *(*takeover) (struct mddev *mddev);
663 int (*change_consistency_policy)(struct mddev *mddev, const char *buf);
668 ssize_t (*show)(struct mddev *, char *);
669 ssize_t (*store)(struct mddev *, const char *, size_t);
685 static inline char * mdname (struct mddev * mddev)
687 return mddev->gendisk ? mddev->gendisk->disk_name : "mdX";
690 static inline int sysfs_link_rdev(struct mddev *mddev, struct md_rdev *rdev)
695 mddev->kobj.sd) {
697 return sysfs_create_link(&mddev->kobj, &rdev->kobj, nm);
702 static inline void sysfs_unlink_rdev(struct mddev *mddev, struct md_rdev *rdev)
707 mddev->kobj.sd) {
709 sysfs_remove_link(&mddev->kobj, nm);
723 #define rdev_for_each(rdev, mddev) \
724 list_for_each_entry(rdev, &((mddev)->disks), same_set)
726 #define rdev_for_each_safe(rdev, tmp, mddev) \
727 list_for_each_entry_safe(rdev, tmp, &((mddev)->disks), same_set)
729 #define rdev_for_each_rcu(rdev, mddev) \
730 list_for_each_entry_rcu(rdev, &((mddev)->disks), same_set)
734 struct mddev *mddev;
743 struct mddev *mddev;
761 extern int md_setup_cluster(struct mddev *mddev, int nodes);
762 extern void md_cluster_stop(struct mddev *mddev);
765 struct mddev *mddev,
767 extern void md_unregister_thread(struct mddev *mddev, struct md_thread __rcu **threadp);
769 extern void md_check_recovery(struct mddev *mddev);
770 extern void md_reap_sync_thread(struct mddev *mddev);
771 extern int mddev_init_writes_pending(struct mddev *mddev);
772 extern bool md_write_start(struct mddev *mddev, struct bio *bi);
773 extern void md_write_inc(struct mddev *mddev, struct bio *bi);
774 extern void md_write_end(struct mddev *mddev);
775 extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
776 extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
777 extern void md_finish_reshape(struct mddev *mddev);
778 void md_submit_discard_bio(struct mddev *mddev, struct md_rdev *rdev,
780 void md_account_bio(struct mddev *mddev, struct bio **bio);
782 extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
783 extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
785 extern int md_super_wait(struct mddev *mddev);
790 extern void md_allow_write(struct mddev *mddev);
791 extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev);
792 extern void md_set_array_sectors(struct mddev *mddev, sector_t array_sectors);
793 extern int md_check_no_bitmap(struct mddev *mddev);
794 extern int md_integrity_register(struct mddev *mddev);
795 extern int md_integrity_add_rdev(struct md_rdev *rdev, struct mddev *mddev);
798 extern void mddev_init(struct mddev *mddev);
799 struct mddev *md_alloc(dev_t dev, char *name);
800 void mddev_put(struct mddev *mddev);
801 extern int md_run(struct mddev *mddev);
802 extern int md_start(struct mddev *mddev);
803 extern void md_stop(struct mddev *mddev);
804 extern void md_stop_writes(struct mddev *mddev);
808 extern void md_handle_request(struct mddev *mddev, struct bio *bio);
809 extern void mddev_suspend(struct mddev *mddev);
810 extern void mddev_resume(struct mddev *mddev);
812 extern void md_reload_sb(struct mddev *mddev, int raid_disk);
813 extern void md_update_sb(struct mddev *mddev, int force);
814 extern void mddev_create_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
816 extern void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
818 struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr);
819 struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev);
826 static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
830 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
831 md_wakeup_thread(mddev->thread);
836 static inline int mddev_is_clustered(struct mddev *mddev)
838 return mddev->cluster_info && mddev->bitmap_info.nodes > 1;
842 static inline void mddev_clear_unsupported_flags(struct mddev *mddev,
845 mddev->flags &= ~unsupported_flags;
848 static inline void mddev_check_write_zeroes(struct mddev *mddev, struct bio *bio)
852 mddev->queue->limits.max_write_zeroes_sectors = 0;
861 int md_set_array_info(struct mddev *mddev, struct mdu_array_info_s *info);
862 int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info);
863 int do_md_run(struct mddev *mddev);