From 34a7eea964236ed2e780f6376b79d7791e6b0ec0 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 26 Feb 2002 00:57:44 -0800 Subject: [PATCH] updates. Forward ports from 2.4, Various janitor bits, and some fixes by me to make the thing work again in 2.5. I munged the MTDRAM driver to work also (seperate patch to follow), and it seems to work. David Woodhouse gave this the once over, and approved the changes. Complete changelog below: o Don't create two slabcaches with the same name. o Don't corrupt eraseblock lists on mount o Don't mark nodes obsolete during mount o __attribute__((packed)) on the node definitions. o Fix up() without down() in jffs2_readdir(). o Fix duplicate version number usage - s/highest_version++/++highest_version/ o Fix (i.e. implement) mtime/ctime on directories. maybe too busy with the bk stuff o Don't allow hardlinks of directories. o s/(mode&S_IFMT)==S_IFLNK/S_ISLNK(mode)/ et al to keep Al happy. o Fix for garbage-collection of holes, where we used to write nodes out with csize/dsize swapped. Workarounds for existing such brokenness. o Improve wear levelling by rotating node lists on mount, to avoid starting at one end of the flash every time. o Remember to get internal inode-semaphore on symlink operations. --- include/linux/jffs2.h | 8 ++++---- include/linux/jffs2_fs_sb.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/linux/jffs2.h b/include/linux/jffs2.h index 37d3d931e416..9c67732fb12f 100644 --- a/include/linux/jffs2.h +++ b/include/linux/jffs2.h @@ -31,7 +31,7 @@ * provisions above, a recipient may use your version of this file * under either the RHEPL or the GPL. * - * $Id: jffs2.h,v 1.18 2001/03/25 22:36:12 dwmw2 Exp $ + * $Id: jffs2.h,v 1.19 2001/10/09 13:20:23 dwmw2 Exp $ * */ @@ -103,7 +103,7 @@ struct jffs2_unknown_node __u16 nodetype; __u32 totlen; /* So we can skip over nodes we don't grok */ __u32 hdr_crc; -}; +} __attribute__((packed)); struct jffs2_raw_dirent { @@ -121,7 +121,7 @@ struct jffs2_raw_dirent __u32 node_crc; __u32 name_crc; __u8 name[0]; -}; +} __attribute__((packed)); /* The JFFS2 raw inode structure: Used for storage on physical media. */ /* The uid, gid, atime, mtime and ctime members could be longer, but @@ -153,7 +153,7 @@ struct jffs2_raw_inode __u32 data_crc; /* CRC for the (compressed) data. */ __u32 node_crc; /* CRC for the raw inode (excluding data) */ // __u8 data[dsize]; -}; +} __attribute__((packed)); union jffs2_node_union { struct jffs2_raw_inode i; diff --git a/include/linux/jffs2_fs_sb.h b/include/linux/jffs2_fs_sb.h index 2d9ad4e54f5f..626c8c57fb72 100644 --- a/include/linux/jffs2_fs_sb.h +++ b/include/linux/jffs2_fs_sb.h @@ -1,4 +1,4 @@ -/* $Id: jffs2_fs_sb.h,v 1.16 2001/09/18 20:15:18 dwmw2 Exp $ */ +/* $Id: jffs2_fs_sb.h,v 1.16.2.1 2002/02/23 14:13:34 dwmw2 Exp $ */ #ifndef _JFFS2_FS_SB #define _JFFS2_FS_SB @@ -12,6 +12,7 @@ #define INOCACHE_HASHSIZE 1 #define JFFS2_SB_FLAG_RO 1 +#define JFFS2_SB_FLAG_MOUNTING 2 /* A struct for the overall file system control. Pointers to jffs2_sb_info structs are named `c' in the source code. -- cgit v1.2.3