int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags, int tags_9bytes) { if (yaffs_version == 2) { if ((WRITE_SIZE(mtd) < YAFFS_MIN_YAFFS2_CHUNK_SIZE || mtd->oobsize < YAFFS_MIN_YAFFS2_SPARE_SIZE) && !inband_tags) { yaffs_trace(YAFFS_TRACE_ALWAYS, "MTD device does not have the right page sizes" ); return -1; } } else { if (WRITE_SIZE(mtd) < YAFFS_BYTES_PER_CHUNK || mtd->oobsize != YAFFS_BYTES_PER_SPARE) { yaffs_trace(YAFFS_TRACE_ALWAYS, "MTD device does not support have the right page sizes" ); return -1; } if (tags_9bytes && mtd->oobavail < 9) { yaffs_trace(YAFFS_TRACE_ALWAYS, "MTD device does not support 9-byte tags"); return -1; } } return 0; }
struct mtd_info * yaffs_get_mtd_device(dev_t sdev) { struct mtd_info *mtd; mtd = yaffs_get_mtd_device(sdev); /* Check it's an mtd device..... */ if (MAJOR(sdev) != MTD_BLOCK_MAJOR) return NULL; /* This isn't an mtd device */ /* Check it's NAND */ if (mtd->type != MTD_NANDFLASH) { yaffs_trace(YAFFS_TRACE_ALWAYS, "yaffs: MTD device is not NAND it's type %d", mtd->type); return NULL; } yaffs_trace(YAFFS_TRACE_OS, " %s %d", WRITE_SIZE_STR, WRITE_SIZE(mtd)); yaffs_trace(YAFFS_TRACE_OS, " oobsize %d", mtd->oobsize); yaffs_trace(YAFFS_TRACE_OS, " erasesize %d", mtd->erasesize); #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) yaffs_trace(YAFFS_TRACE_OS, " size %u", mtd->size); #else yaffs_trace(YAFFS_TRACE_OS, " size %lld", mtd->size); #endif return mtd; }
int main(int argc, char * argv[]) { WRITE_SIZE(userrec); WRITE_SIZE(slrec); WRITE_SIZE(valrec); WRITE_SIZE(arcrec); WRITE_SIZE(configrec); WRITE_SIZE(configoverrec); WRITE_SIZE(statusrec); WRITE_SIZE(colorrec); WRITE_SIZE(subboardrec); WRITE_SIZE(directoryrec); WRITE_SIZE(smalrec); WRITE_SIZE(messagerec); WRITE_SIZE(postrec); WRITE_SIZE(mailrec); WRITE_SIZE(tmpmailrec); WRITE_SIZE(shortmsgrec); WRITE_SIZE(voting_response); WRITE_SIZE(uploadsrec); WRITE_SIZE(tagrec); WRITE_SIZE(zlogrec); WRITE_SIZE(chainfilerec); WRITE_SIZE(chainregrec); WRITE_SIZE(newexternalrec); WRITE_SIZE(editorrec); WRITE_SIZE(usersubrec); WRITE_SIZE(userconfrec); WRITE_SIZE(batchrec); WRITE_SIZE(ext_desc_type); WRITE_SIZE(gfiledirrec); WRITE_SIZE(gfilerec); WRITE_SIZE(languagerec); WRITE_SIZE(result_info); WRITE_SIZE(modem_info); WRITE_SIZE(filestatusrec); WRITE_SIZE(asv_rec); WRITE_SIZE(adv_asv_rec); WRITE_SIZE(cbv_rec); WRITE_SIZE(phonerec); WRITE_SIZE(eventsrec); WRITE_SIZE(ext_desc_rec); WRITE_SIZE(instancerec); return 0; }