X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=btrfsck.h;h=e16f52f59b018f9da2e24a1892e3fdd7ccab172d;hb=7a8d5d50145e6f3898bb382360857dcc080a4a78;hp=7a50648093478ed92cf4552e0deaf6eb309bade7;hpb=0ffacad2906cdb8f62fb56565632160a1a82ad14;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/btrfsck.h b/btrfsck.h index 7a50648..e16f52f 100644 --- a/btrfsck.h +++ b/btrfsck.h @@ -17,15 +17,17 @@ * Boston, MA 021110-1307, USA. */ -#ifndef __CHUNK_CHECK_H__ -#define __CHUNK_CHECK_H__ +#ifndef __BTRFS_CHECK_H__ +#define __BTRFS_CHECK_H__ #if BTRFS_FLAT_INCLUDES #include "kerncompat.h" +#include "ctree.h" #include "extent-cache.h" #include "list.h" #else #include +#include #include #include #endif /* BTRFS_FLAT_INCLUDES */ @@ -140,6 +142,23 @@ static inline unsigned long btrfs_chunk_record_size(int num_stripes) } void free_chunk_cache_tree(struct cache_tree *chunk_cache); +/* + * Function to check validation for num_stripes, or it can call + * float point error for 0 division + * return < 0 for invalid combination + * return 0 for valid combination + */ +static inline int check_num_stripes(u64 type, int num_stripes) +{ + if (num_stripes == 0) + return -1; + if (type & BTRFS_BLOCK_GROUP_RAID5 && num_stripes <= 1) + return -1; + if (type & BTRFS_BLOCK_GROUP_RAID6 && num_stripes <= 2) + return -1; + return 0; +} + u64 calc_stripe_length(u64 type, u64 length, int num_stripes); /* For block group tree */ static inline void block_group_tree_init(struct block_group_tree *tree)