This repository has been archived by the owner on Oct 14, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Moxie Marlinspike
committed
Apr 3, 2011
0 parents
commit 7b670d7
Showing
53 changed files
with
18,605 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
# | ||
# YAFFS file system configurations | ||
# | ||
|
||
config YAFFS_FS | ||
tristate "YAFFS2 file system support" | ||
default n | ||
depends on MTD_BLOCK | ||
select YAFFS_YAFFS1 | ||
select YAFFS_YAFFS2 | ||
help | ||
YAFFS2, or Yet Another Flash Filing System, is a filing system | ||
optimised for NAND Flash chips. | ||
|
||
To compile the YAFFS2 file system support as a module, choose M | ||
here: the module will be called yaffs2. | ||
|
||
If unsure, say N. | ||
|
||
Further information on YAFFS2 is available at | ||
<http://www.aleph1.co.uk/yaffs/>. | ||
|
||
config YAFFS_YAFFS1 | ||
bool "512 byte / page devices" | ||
depends on YAFFS_FS | ||
default y | ||
help | ||
Enable YAFFS1 support -- yaffs for 512 byte / page devices | ||
|
||
Not needed for 2K-page devices. | ||
|
||
If unsure, say Y. | ||
|
||
config YAFFS_9BYTE_TAGS | ||
bool "Use older-style on-NAND data format with pageStatus byte" | ||
depends on YAFFS_YAFFS1 | ||
default n | ||
help | ||
|
||
Older-style on-NAND data format has a "pageStatus" byte to record | ||
chunk/page state. This byte is zero when the page is discarded. | ||
Choose this option if you have existing on-NAND data using this | ||
format that you need to continue to support. New data written | ||
also uses the older-style format. Note: Use of this option | ||
generally requires that MTD's oob layout be adjusted to use the | ||
older-style format. See notes on tags formats and MTD versions | ||
in yaffs_mtdif1.c. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_DOES_ECC | ||
bool "Lets Yaffs do its own ECC" | ||
depends on YAFFS_FS && YAFFS_YAFFS1 && !YAFFS_9BYTE_TAGS | ||
default n | ||
help | ||
This enables Yaffs to use its own ECC functions instead of using | ||
the ones from the generic MTD-NAND driver. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_ECC_WRONG_ORDER | ||
bool "Use the same ecc byte order as Steven Hill's nand_ecc.c" | ||
depends on YAFFS_FS && YAFFS_DOES_ECC && !YAFFS_9BYTE_TAGS | ||
default n | ||
help | ||
This makes yaffs_ecc.c use the same ecc byte order as Steven | ||
Hill's nand_ecc.c. If not set, then you get the same ecc byte | ||
order as SmartMedia. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_YAFFS2 | ||
bool "2048 byte (or larger) / page devices" | ||
depends on YAFFS_FS | ||
default y | ||
help | ||
Enable YAFFS2 support -- yaffs for >= 2K bytes per page devices | ||
|
||
If unsure, say Y. | ||
|
||
config YAFFS_AUTO_YAFFS2 | ||
bool "Autoselect yaffs2 format" | ||
depends on YAFFS_YAFFS2 | ||
default y | ||
help | ||
Without this, you need to explicitely use yaffs2 as the file | ||
system type. With this, you can say "yaffs" and yaffs or yaffs2 | ||
will be used depending on the device page size (yaffs on | ||
512-byte page devices, yaffs2 on 2K page devices). | ||
|
||
If unsure, say Y. | ||
|
||
config YAFFS_DISABLE_TAGS_ECC | ||
bool "Disable YAFFS from doing ECC on tags by default" | ||
depends on YAFFS_FS && YAFFS_YAFFS2 | ||
default n | ||
help | ||
This defaults Yaffs to using its own ECC calculations on tags instead of | ||
just relying on the MTD. | ||
This behavior can also be overridden with tags_ecc_on and | ||
tags_ecc_off mount options. | ||
|
||
If unsure, say N. | ||
|
||
|
||
config YAFFS_DISABLE_WIDE_TNODES | ||
bool "Turn off wide tnodes" | ||
depends on YAFFS_FS | ||
default n | ||
help | ||
Wide tnodes are only used for NAND arrays >=32MB for 512-byte | ||
page devices and >=128MB for 2k page devices. They use slightly | ||
more RAM but are faster since they eliminate chunk group | ||
searching. | ||
|
||
Setting this to 'y' will force tnode width to 16 bits and save | ||
memory but make large arrays slower. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_ALWAYS_CHECK_CHUNK_ERASED | ||
bool "Force chunk erase check" | ||
depends on YAFFS_FS | ||
default n | ||
help | ||
Normally YAFFS only checks chunks before writing until an erased | ||
chunk is found. This helps to detect any partially written | ||
chunks that might have happened due to power loss. | ||
|
||
Enabling this forces on the test that chunks are erased in flash | ||
before writing to them. This takes more time but is potentially | ||
a bit more secure. | ||
|
||
Suggest setting Y during development and ironing out driver | ||
issues etc. Suggest setting to N if you want faster writing. | ||
|
||
If unsure, say Y. | ||
|
||
config YAFFS_SHORT_NAMES_IN_RAM | ||
bool "Cache short names in RAM" | ||
depends on YAFFS_FS | ||
default y | ||
help | ||
If this config is set, then short names are stored with the | ||
yaffs_Object. This costs an extra 16 bytes of RAM per object, | ||
but makes look-ups faster. | ||
|
||
If unsure, say Y. | ||
|
||
config YAFFS_EMPTY_LOST_AND_FOUND | ||
bool "Empty lost and found on boot" | ||
depends on YAFFS_FS | ||
default n | ||
help | ||
If this is enabled then the contents of lost and found is | ||
automatically dumped at mount. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_DISABLE_BLOCK_REFRESHING | ||
bool "Disable yaffs2 block refreshing" | ||
depends on YAFFS_FS | ||
default n | ||
help | ||
If this is set, then block refreshing is disabled. | ||
Block refreshing infrequently refreshes the oldest block in | ||
a yaffs2 file system. This mechanism helps to refresh flash to | ||
mitigate against data loss. This is particularly useful for MLC. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_DISABLE_BACKGROUND | ||
bool "Disable yaffs2 background processing" | ||
depends on YAFFS_FS | ||
default n | ||
help | ||
If this is set, then background processing is disabled. | ||
Background processing makes many foreground activities faster. | ||
|
||
If unsure, say N. | ||
|
||
config YAFFS_XATTR | ||
bool "Enable yaffs2 xattr support" | ||
depends on YAFFS_FS | ||
default y | ||
help | ||
If this is set then yaffs2 will provide xattr support. | ||
If unsure, say Y. | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# | ||
# Makefile for the linux YAFFS filesystem routines. | ||
# | ||
|
||
obj-$(CONFIG_YAFFS_FS) += yaffs.o | ||
|
||
yaffs-y := yaffs_ecc.o yaffs_vfs_glue.o yaffs_guts.o yaffs_checkptrw.o yaffs_crypto.o yaffs_pbkdf2.o | ||
yaffs-y += yaffs_packedtags1.o yaffs_packedtags2.o yaffs_nand.o | ||
yaffs-y += yaffs_tagscompat.o yaffs_tagsvalidity.o | ||
yaffs-y += yaffs_mtdif.o yaffs_mtdif1.o yaffs_mtdif2.o | ||
yaffs-y += yaffs_nameval.o | ||
yaffs-y += yaffs_allocator.o | ||
yaffs-y += yaffs_yaffs1.o | ||
yaffs-y += yaffs_yaffs2.o | ||
yaffs-y += yaffs_bitmap.o | ||
yaffs-y += yaffs_verify.o | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
/* | ||
* YAFFS: Yet another Flash File System . A NAND-flash specific file system. | ||
* | ||
* Copyright (C) 2002-2010 Aleph One Ltd. | ||
* for Toby Churchill Ltd and Brightstar Engineering | ||
* | ||
* Created by Charles Manning <[email protected]> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU Lesser General Public License version 2.1 as | ||
* published by the Free Software Foundation. | ||
* | ||
* Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. | ||
*/ | ||
|
||
/* | ||
* This file is just holds extra declarations of macros that would normally | ||
* be providesd in the Linux kernel. These macros have been written from | ||
* scratch but are functionally equivalent to the Linux ones. | ||
* | ||
*/ | ||
|
||
#ifndef __EXTRAS_H__ | ||
#define __EXTRAS_H__ | ||
|
||
|
||
#include "yportenv.h" | ||
|
||
#if !(defined __KERNEL__) | ||
|
||
/* Definition of types */ | ||
typedef unsigned char __u8; | ||
typedef unsigned short __u16; | ||
typedef unsigned __u32; | ||
|
||
#endif | ||
|
||
|
||
#if !(defined __KERNEL__) | ||
|
||
|
||
#ifndef WIN32 | ||
#include <sys/stat.h> | ||
#endif | ||
|
||
|
||
#ifdef CONFIG_YAFFS_PROVIDE_DEFS | ||
/* File types */ | ||
|
||
|
||
#define DT_UNKNOWN 0 | ||
#define DT_FIFO 1 | ||
#define DT_CHR 2 | ||
#define DT_DIR 4 | ||
#define DT_BLK 6 | ||
#define DT_REG 8 | ||
#define DT_LNK 10 | ||
#define DT_SOCK 12 | ||
#define DT_WHT 14 | ||
|
||
|
||
#ifndef WIN32 | ||
#include <sys/stat.h> | ||
#endif | ||
|
||
/* | ||
* Attribute flags. These should be or-ed together to figure out what | ||
* has been changed! | ||
*/ | ||
#define ATTR_MODE 1 | ||
#define ATTR_UID 2 | ||
#define ATTR_GID 4 | ||
#define ATTR_SIZE 8 | ||
#define ATTR_ATIME 16 | ||
#define ATTR_MTIME 32 | ||
#define ATTR_CTIME 64 | ||
|
||
struct iattr { | ||
unsigned int ia_valid; | ||
unsigned ia_mode; | ||
unsigned ia_uid; | ||
unsigned ia_gid; | ||
unsigned ia_size; | ||
unsigned ia_atime; | ||
unsigned ia_mtime; | ||
unsigned ia_ctime; | ||
unsigned int ia_attr_flags; | ||
}; | ||
|
||
#endif | ||
|
||
#else | ||
|
||
#include <linux/types.h> | ||
#include <linux/fs.h> | ||
#include <linux/stat.h> | ||
|
||
#endif | ||
|
||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/* | ||
* YAFFS: Yet another Flash File System . A NAND-flash specific file system. | ||
* | ||
* Copyright (C) 2002-2010 Aleph One Ltd. | ||
* for Toby Churchill Ltd and Brightstar Engineering | ||
* | ||
* Created by Martin Fouts <[email protected]> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU Lesser General Public License version 2.1 as | ||
* published by the Free Software Foundation. | ||
* | ||
* Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. | ||
*/ | ||
|
||
#ifndef __YAFFS_CONFIG_H__ | ||
#define __YAFFS_CONFIG_H__ | ||
|
||
#ifdef YAFFS_OUT_OF_TREE | ||
|
||
/* DO NOT UNSET THESE THREE. YAFFS2 will not compile if you do. */ | ||
#define CONFIG_YAFFS_FS | ||
#define CONFIG_YAFFS_YAFFS1 | ||
#define CONFIG_YAFFS_YAFFS2 | ||
|
||
/* These options are independent of each other. Select those that matter. */ | ||
|
||
/* Default: Not selected */ | ||
/* Meaning: Yaffs does its own ECC, rather than using MTD ECC */ | ||
/* #define CONFIG_YAFFS_DOES_ECC */ | ||
|
||
/* Default: Selected */ | ||
/* Meaning: Yaffs does its own ECC on tags for packed tags rather than use mtd */ | ||
#define CONFIG_YAFFS_DOES_TAGS_ECC | ||
|
||
/* Default: Not selected */ | ||
/* Meaning: ECC byte order is 'wrong'. Only meaningful if */ | ||
/* CONFIG_YAFFS_DOES_ECC is set */ | ||
/* #define CONFIG_YAFFS_ECC_WRONG_ORDER */ | ||
|
||
/* Default: Not selected */ | ||
/* Meaning: Always test whether chunks are erased before writing to them. | ||
Use during mtd debugging and init. */ | ||
/* #define CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED */ | ||
|
||
/* Default: Not Selected */ | ||
/* Meaning: At mount automatically empty all files from lost and found. */ | ||
/* This is done to fix an old problem where rmdir was not checking for an */ | ||
/* empty directory. This can also be achieved with a mount option. */ | ||
#define CONFIG_YAFFS_EMPTY_LOST_AND_FOUND | ||
|
||
/* Default: Selected */ | ||
/* Meaning: Cache short names, taking more RAM, but faster look-ups */ | ||
#define CONFIG_YAFFS_SHORT_NAMES_IN_RAM | ||
|
||
/* Default: Unselected */ | ||
/* Meaning: Select to disable block refreshing. */ | ||
/* Block Refreshing periodically rewrites the oldest block. */ | ||
/* #define CONFIG_DISABLE_BLOCK_REFRESHING */ | ||
|
||
/* Default: Unselected */ | ||
/* Meaning: Select to disable background processing */ | ||
/* #define CONFIG_DISABLE_BACKGROUND */ | ||
|
||
|
||
/* Default: Selected */ | ||
/* Meaning: Enable XATTR support */ | ||
#define CONFIG_YAFFS_XATTR | ||
|
||
/* | ||
Older-style on-NAND data format has a "pageStatus" byte to record | ||
chunk/page state. This byte is zeroed when the page is discarded. | ||
Choose this option if you have existing on-NAND data in this format | ||
that you need to continue to support. New data written also uses the | ||
older-style format. | ||
Note: Use of this option generally requires that MTD's oob layout be | ||
adjusted to use the older-style format. See notes on tags formats and | ||
MTD versions in yaffs_mtdif1.c. | ||
*/ | ||
/* Default: Not selected */ | ||
/* Meaning: Use older-style on-NAND data format with pageStatus byte */ | ||
/* #define CONFIG_YAFFS_9BYTE_TAGS */ | ||
|
||
#endif /* YAFFS_OUT_OF_TREE */ | ||
|
||
#endif /* __YAFFS_CONFIG_H__ */ |
Oops, something went wrong.