aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/md.h')
-rw-r--r--drivers/md/md.h54
1 files changed, 0 insertions, 54 deletions
diff --git a/drivers/md/md.h b/drivers/md/md.h
index b50eb4ac1b82..09db03455801 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -731,58 +731,4 @@ static inline void mddev_check_write_zeroes(struct mddev *mddev, struct bio *bio
731 !bdev_get_queue(bio->bi_bdev)->limits.max_write_zeroes_sectors) 731 !bdev_get_queue(bio->bi_bdev)->limits.max_write_zeroes_sectors)
732 mddev->queue->limits.max_write_zeroes_sectors = 0; 732 mddev->queue->limits.max_write_zeroes_sectors = 0;
733} 733}
734
735/* Maximum size of each resync request */
736#define RESYNC_BLOCK_SIZE (64*1024)
737#define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE)
738
739/* for managing resync I/O pages */
740struct resync_pages {
741 unsigned idx; /* for get/put page from the pool */
742 void *raid_bio;
743 struct page *pages[RESYNC_PAGES];
744};
745
746static inline int resync_alloc_pages(struct resync_pages *rp,
747 gfp_t gfp_flags)
748{
749 int i;
750
751 for (i = 0; i < RESYNC_PAGES; i++) {
752 rp->pages[i] = alloc_page(gfp_flags);
753 if (!rp->pages[i])
754 goto out_free;
755 }
756
757 return 0;
758
759out_free:
760 while (--i >= 0)
761 put_page(rp->pages[i]);
762 return -ENOMEM;
763}
764
765static inline void resync_free_pages(struct resync_pages *rp)
766{
767 int i;
768
769 for (i = 0; i < RESYNC_PAGES; i++)
770 put_page(rp->pages[i]);
771}
772
773static inline void resync_get_all_pages(struct resync_pages *rp)
774{
775 int i;
776
777 for (i = 0; i < RESYNC_PAGES; i++)
778 get_page(rp->pages[i]);
779}
780
781static inline struct page *resync_fetch_page(struct resync_pages *rp,
782 unsigned idx)
783{
784 if (WARN_ON_ONCE(idx >= RESYNC_PAGES))
785 return NULL;
786 return rp->pages[idx];
787}
788#endif /* _MD_MD_H */ 734#endif /* _MD_MD_H */