Merge branch 'master' of ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2
[yaffs2.git] / yaffs_guts.c
index 3672e8d41b692bf93088f317d303a8e4ce345f0a..1fd464d68af798c5fcdd02c537c7804bcbd05a5f 100644 (file)
@@ -980,7 +980,7 @@ static int yaffs_find_chunk_in_group(struct yaffs_dev *dev, int the_chunk,
        return -1;
 }
 
-static int yaffs_find_chunk_in_file(struct yaffs_obj *in, int inode_chunk,
+int yaffs_find_chunk_in_file(struct yaffs_obj *in, int inode_chunk,
                                    struct yaffs_ext_tags *tags)
 {
        /*Get the Tnode, then get the level 0 offset chunk offset */
@@ -5060,3 +5060,23 @@ loff_t yaffs_oh_to_size(struct yaffs_obj_hdr *oh)
 
        return retval;
 }
+
+
+void yaffs_count_blocks_by_state(struct yaffs_dev *dev, int bs[10])
+{
+       int i;
+       struct yaffs_block_info *bi;
+       int s;
+
+       for(i = 0; i < 10; i++)
+               bs[i] = 0;
+
+       for(i = dev->internal_start_block; i <= dev->internal_end_block; i++) {
+               bi = yaffs_get_block_info(dev, i);
+               s = bi->block_state;
+               if(s > YAFFS_BLOCK_STATE_DEAD || s < YAFFS_BLOCK_STATE_UNKNOWN)
+                       bs[0]++;
+               else
+                       bs[s]++;
+       }
+}