diff options
Diffstat (limited to 'drivers/md/dm-thin-metadata.c')
| -rw-r--r-- | drivers/md/dm-thin-metadata.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c index baa87ff12816..fb9efc829182 100644 --- a/drivers/md/dm-thin-metadata.c +++ b/drivers/md/dm-thin-metadata.c | |||
| @@ -76,7 +76,7 @@ | |||
| 76 | 76 | ||
| 77 | #define THIN_SUPERBLOCK_MAGIC 27022010 | 77 | #define THIN_SUPERBLOCK_MAGIC 27022010 |
| 78 | #define THIN_SUPERBLOCK_LOCATION 0 | 78 | #define THIN_SUPERBLOCK_LOCATION 0 |
| 79 | #define THIN_VERSION 1 | 79 | #define THIN_VERSION 2 |
| 80 | #define THIN_METADATA_CACHE_SIZE 64 | 80 | #define THIN_METADATA_CACHE_SIZE 64 |
| 81 | #define SECTOR_TO_BLOCK_SHIFT 3 | 81 | #define SECTOR_TO_BLOCK_SHIFT 3 |
| 82 | 82 | ||
| @@ -1755,3 +1755,38 @@ int dm_pool_register_metadata_threshold(struct dm_pool_metadata *pmd, | |||
| 1755 | 1755 | ||
| 1756 | return r; | 1756 | return r; |
| 1757 | } | 1757 | } |
| 1758 | |||
| 1759 | int dm_pool_metadata_set_needs_check(struct dm_pool_metadata *pmd) | ||
| 1760 | { | ||
| 1761 | int r; | ||
| 1762 | struct dm_block *sblock; | ||
| 1763 | struct thin_disk_superblock *disk_super; | ||
| 1764 | |||
| 1765 | down_write(&pmd->root_lock); | ||
| 1766 | pmd->flags |= THIN_METADATA_NEEDS_CHECK_FLAG; | ||
| 1767 | |||
| 1768 | r = superblock_lock(pmd, &sblock); | ||
| 1769 | if (r) { | ||
| 1770 | DMERR("couldn't read superblock"); | ||
| 1771 | goto out; | ||
| 1772 | } | ||
| 1773 | |||
| 1774 | disk_super = dm_block_data(sblock); | ||
| 1775 | disk_super->flags = cpu_to_le32(pmd->flags); | ||
| 1776 | |||
| 1777 | dm_bm_unlock(sblock); | ||
| 1778 | out: | ||
| 1779 | up_write(&pmd->root_lock); | ||
| 1780 | return r; | ||
| 1781 | } | ||
| 1782 | |||
| 1783 | bool dm_pool_metadata_needs_check(struct dm_pool_metadata *pmd) | ||
| 1784 | { | ||
| 1785 | bool needs_check; | ||
| 1786 | |||
| 1787 | down_read(&pmd->root_lock); | ||
| 1788 | needs_check = pmd->flags & THIN_METADATA_NEEDS_CHECK_FLAG; | ||
| 1789 | up_read(&pmd->root_lock); | ||
| 1790 | |||
| 1791 | return needs_check; | ||
| 1792 | } | ||
