yaffs2: Yaffs endian support
[yaffs2.git] / yaffs_verify.c
index b3e540dd52a3656c223587431bda39b76b56e502..4a2f5c3a0abc626ae7a78b120288a76e72b4f625 100644 (file)
 
 int yaffs_skip_verification(struct yaffs_dev *dev)
 {
-       dev = dev;
+       (void) dev;
        return !(yaffs_trace_mask &
                 (YAFFS_TRACE_VERIFY | YAFFS_TRACE_VERIFY_FULL));
 }
 
 static int yaffs_skip_full_verification(struct yaffs_dev *dev)
 {
-       dev = dev;
+       (void) dev;
        return !(yaffs_trace_mask & (YAFFS_TRACE_VERIFY_FULL));
 }
 
 static int yaffs_skip_nand_verification(struct yaffs_dev *dev)
 {
-       dev = dev;
+       (void) dev;
        return !(yaffs_trace_mask & (YAFFS_TRACE_VERIFY_NAND));
 }
 
@@ -222,11 +222,13 @@ void yaffs_verify_oh(struct yaffs_obj *obj, struct yaffs_obj_hdr *oh,
 
 void yaffs_verify_file(struct yaffs_obj *obj)
 {
+       u32 x;
        int required_depth;
        int actual_depth;
-       u32 last_chunk;
+       int last_chunk;
+       u32 offset_in_chunk;
        u32 the_chunk;
-       u32 x;
+
        u32 i;
        struct yaffs_dev *dev;
        struct yaffs_ext_tags tags;
@@ -242,9 +244,11 @@ void yaffs_verify_file(struct yaffs_obj *obj)
        dev = obj->my_dev;
        obj_id = obj->obj_id;
 
+
        /* Check file size is consistent with tnode depth */
-       last_chunk =
-           obj->variant.file_variant.file_size / dev->data_bytes_per_chunk + 1;
+       yaffs_addr_to_chunk(dev, obj->variant.file_variant.file_size,
+                               &last_chunk, &offset_in_chunk);
+       last_chunk++;
        x = last_chunk >> YAFFS_TNODES_LEVEL0_BITS;
        required_depth = 0;
        while (x > 0) {
@@ -466,12 +470,26 @@ void yaffs_verify_dir(struct yaffs_obj *directory)
 {
        struct list_head *lh;
        struct yaffs_obj *list_obj;
+       struct yaffs_dev *dev;
 
        if (!directory) {
                BUG();
                return;
        }
 
+       dev = directory->my_dev;
+
+       if (!dev) {
+               BUG();
+               return;
+       }
+
+       if (directory == dev->root_dir ||
+           directory == dev->lost_n_found ||
+           directory == dev->unlinked_dir ||
+           directory == dev->del_dir)
+               return;
+
        if (yaffs_skip_full_verification(directory->my_dev))
                return;
 
@@ -520,6 +538,6 @@ void yaffs_verify_free_chunks(struct yaffs_dev *dev)
 
 int yaffs_verify_file_sane(struct yaffs_obj *in)
 {
-       in = in;
+       (void) in;
        return YAFFS_OK;
 }