diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-20 12:03:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-20 12:03:12 -0400 |
commit | 2be508d847392e431759e370d21cea9412848758 (patch) | |
tree | be5e00a4d7be4ef353ffe4d550fb80a251d321c3 /fs | |
parent | 01e8ef11bc1a74e65678ed55795f59266d4add01 (diff) | |
parent | 8a1a6272057e2ad90ab531a70330165888866e60 (diff) |
Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6: (69 commits)
Revert "[MTD] m25p80.c code cleanup"
[MTD] [NAND] GPIO driver depends on ARM... for now.
[MTD] [NAND] sh_flctl: fix compile error
[MTD] [NOR] AT49BV6416 has swapped erase regions
[MTD] [NAND] GPIO NAND flash driver
[MTD] cmdlineparts documentation change - explain where mtd-id comes from
[MTD] cfi_cmdset_0002.c: Add Macronix CFI V1.0 TopBottom detection
[MTD] [NAND] Fix compilation warnings in drivers/mtd/nand/cs553x_nand.c
[JFFS2] Write buffer offset adjustment for NOR-ECC (Sibley) flash
[MTD] mtdoops: Fix a bug where block may not be erased
[MTD] mtdoops: Add a magic number to logged kernel oops
[MTD] mtdoops: Fix an off by one error
[JFFS2] Correct parameter names of jffs2_compress() in comments
[MTD] [NAND] sh_flctl: add support for Renesas SuperH FLCTL
[MTD] [NAND] Bug on atmel_nand HW ECC : OOB info not correctly written
[MTD] [MAPS] Remove unused variable after ROM API cleanup.
[MTD] m25p80.c extended jedec support (v2)
[MTD] remove unused mtd parameter in of_mtd_parse_partitions()
[MTD] [NAND] remove dead Kconfig associated with !CONFIG_PPC_MERGE
[MTD] [NAND] driver extension to support NAND on TQM85xx modules
...
Diffstat (limited to 'fs')
-rw-r--r-- | fs/Kconfig | 190 | ||||
-rw-r--r-- | fs/jffs2/Kconfig | 188 | ||||
-rw-r--r-- | fs/jffs2/compr.c | 4 | ||||
-rw-r--r-- | fs/jffs2/dir.c | 2 | ||||
-rw-r--r-- | fs/jffs2/erase.c | 4 | ||||
-rw-r--r-- | fs/jffs2/fs.c | 6 | ||||
-rw-r--r-- | fs/jffs2/nodemgmt.c | 4 | ||||
-rw-r--r-- | fs/jffs2/wbuf.c | 5 |
8 files changed, 203 insertions, 200 deletions
diff --git a/fs/Kconfig b/fs/Kconfig index c189089f35a5..4eca61c201f0 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -1168,195 +1168,7 @@ config EFS_FS | |||
1168 | To compile the EFS file system support as a module, choose M here: the | 1168 | To compile the EFS file system support as a module, choose M here: the |
1169 | module will be called efs. | 1169 | module will be called efs. |
1170 | 1170 | ||
1171 | config JFFS2_FS | 1171 | source "fs/jffs2/Kconfig" |
1172 | tristate "Journalling Flash File System v2 (JFFS2) support" | ||
1173 | select CRC32 | ||
1174 | depends on MTD | ||
1175 | help | ||
1176 | JFFS2 is the second generation of the Journalling Flash File System | ||
1177 | for use on diskless embedded devices. It provides improved wear | ||
1178 | levelling, compression and support for hard links. You cannot use | ||
1179 | this on normal block devices, only on 'MTD' devices. | ||
1180 | |||
1181 | Further information on the design and implementation of JFFS2 is | ||
1182 | available at <http://sources.redhat.com/jffs2/>. | ||
1183 | |||
1184 | config JFFS2_FS_DEBUG | ||
1185 | int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)" | ||
1186 | depends on JFFS2_FS | ||
1187 | default "0" | ||
1188 | help | ||
1189 | This controls the amount of debugging messages produced by the JFFS2 | ||
1190 | code. Set it to zero for use in production systems. For evaluation, | ||
1191 | testing and debugging, it's advisable to set it to one. This will | ||
1192 | enable a few assertions and will print debugging messages at the | ||
1193 | KERN_DEBUG loglevel, where they won't normally be visible. Level 2 | ||
1194 | is unlikely to be useful - it enables extra debugging in certain | ||
1195 | areas which at one point needed debugging, but when the bugs were | ||
1196 | located and fixed, the detailed messages were relegated to level 2. | ||
1197 | |||
1198 | If reporting bugs, please try to have available a full dump of the | ||
1199 | messages at debug level 1 while the misbehaviour was occurring. | ||
1200 | |||
1201 | config JFFS2_FS_WRITEBUFFER | ||
1202 | bool "JFFS2 write-buffering support" | ||
1203 | depends on JFFS2_FS | ||
1204 | default y | ||
1205 | help | ||
1206 | This enables the write-buffering support in JFFS2. | ||
1207 | |||
1208 | This functionality is required to support JFFS2 on the following | ||
1209 | types of flash devices: | ||
1210 | - NAND flash | ||
1211 | - NOR flash with transparent ECC | ||
1212 | - DataFlash | ||
1213 | |||
1214 | config JFFS2_FS_WBUF_VERIFY | ||
1215 | bool "Verify JFFS2 write-buffer reads" | ||
1216 | depends on JFFS2_FS_WRITEBUFFER | ||
1217 | default n | ||
1218 | help | ||
1219 | This causes JFFS2 to read back every page written through the | ||
1220 | write-buffer, and check for errors. | ||
1221 | |||
1222 | config JFFS2_SUMMARY | ||
1223 | bool "JFFS2 summary support (EXPERIMENTAL)" | ||
1224 | depends on JFFS2_FS && EXPERIMENTAL | ||
1225 | default n | ||
1226 | help | ||
1227 | This feature makes it possible to use summary information | ||
1228 | for faster filesystem mount. | ||
1229 | |||
1230 | The summary information can be inserted into a filesystem image | ||
1231 | by the utility 'sumtool'. | ||
1232 | |||
1233 | If unsure, say 'N'. | ||
1234 | |||
1235 | config JFFS2_FS_XATTR | ||
1236 | bool "JFFS2 XATTR support (EXPERIMENTAL)" | ||
1237 | depends on JFFS2_FS && EXPERIMENTAL | ||
1238 | default n | ||
1239 | help | ||
1240 | Extended attributes are name:value pairs associated with inodes by | ||
1241 | the kernel or by users (see the attr(5) manual page, or visit | ||
1242 | <http://acl.bestbits.at/> for details). | ||
1243 | |||
1244 | If unsure, say N. | ||
1245 | |||
1246 | config JFFS2_FS_POSIX_ACL | ||
1247 | bool "JFFS2 POSIX Access Control Lists" | ||
1248 | depends on JFFS2_FS_XATTR | ||
1249 | default y | ||
1250 | select FS_POSIX_ACL | ||
1251 | help | ||
1252 | Posix Access Control Lists (ACLs) support permissions for users and | ||
1253 | groups beyond the owner/group/world scheme. | ||
1254 | |||
1255 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
1256 | Linux website <http://acl.bestbits.at/>. | ||
1257 | |||
1258 | If you don't know what Access Control Lists are, say N | ||
1259 | |||
1260 | config JFFS2_FS_SECURITY | ||
1261 | bool "JFFS2 Security Labels" | ||
1262 | depends on JFFS2_FS_XATTR | ||
1263 | default y | ||
1264 | help | ||
1265 | Security labels support alternative access control models | ||
1266 | implemented by security modules like SELinux. This option | ||
1267 | enables an extended attribute handler for file security | ||
1268 | labels in the jffs2 filesystem. | ||
1269 | |||
1270 | If you are not using a security module that requires using | ||
1271 | extended attributes for file security labels, say N. | ||
1272 | |||
1273 | config JFFS2_COMPRESSION_OPTIONS | ||
1274 | bool "Advanced compression options for JFFS2" | ||
1275 | depends on JFFS2_FS | ||
1276 | default n | ||
1277 | help | ||
1278 | Enabling this option allows you to explicitly choose which | ||
1279 | compression modules, if any, are enabled in JFFS2. Removing | ||
1280 | compressors can mean you cannot read existing file systems, | ||
1281 | and enabling experimental compressors can mean that you | ||
1282 | write a file system which cannot be read by a standard kernel. | ||
1283 | |||
1284 | If unsure, you should _definitely_ say 'N'. | ||
1285 | |||
1286 | config JFFS2_ZLIB | ||
1287 | bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS | ||
1288 | select ZLIB_INFLATE | ||
1289 | select ZLIB_DEFLATE | ||
1290 | depends on JFFS2_FS | ||
1291 | default y | ||
1292 | help | ||
1293 | Zlib is designed to be a free, general-purpose, legally unencumbered, | ||
1294 | lossless data-compression library for use on virtually any computer | ||
1295 | hardware and operating system. See <http://www.gzip.org/zlib/> for | ||
1296 | further information. | ||
1297 | |||
1298 | Say 'Y' if unsure. | ||
1299 | |||
1300 | config JFFS2_LZO | ||
1301 | bool "JFFS2 LZO compression support" if JFFS2_COMPRESSION_OPTIONS | ||
1302 | select LZO_COMPRESS | ||
1303 | select LZO_DECOMPRESS | ||
1304 | depends on JFFS2_FS | ||
1305 | default n | ||
1306 | help | ||
1307 | minilzo-based compression. Generally works better than Zlib. | ||
1308 | |||
1309 | This feature was added in July, 2007. Say 'N' if you need | ||
1310 | compatibility with older bootloaders or kernels. | ||
1311 | |||
1312 | config JFFS2_RTIME | ||
1313 | bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS | ||
1314 | depends on JFFS2_FS | ||
1315 | default y | ||
1316 | help | ||
1317 | Rtime does manage to recompress already-compressed data. Say 'Y' if unsure. | ||
1318 | |||
1319 | config JFFS2_RUBIN | ||
1320 | bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS | ||
1321 | depends on JFFS2_FS | ||
1322 | default n | ||
1323 | help | ||
1324 | RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure. | ||
1325 | |||
1326 | choice | ||
1327 | prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS | ||
1328 | default JFFS2_CMODE_PRIORITY | ||
1329 | depends on JFFS2_FS | ||
1330 | help | ||
1331 | You can set here the default compression mode of JFFS2 from | ||
1332 | the available compression modes. Don't touch if unsure. | ||
1333 | |||
1334 | config JFFS2_CMODE_NONE | ||
1335 | bool "no compression" | ||
1336 | help | ||
1337 | Uses no compression. | ||
1338 | |||
1339 | config JFFS2_CMODE_PRIORITY | ||
1340 | bool "priority" | ||
1341 | help | ||
1342 | Tries the compressors in a predefined order and chooses the first | ||
1343 | successful one. | ||
1344 | |||
1345 | config JFFS2_CMODE_SIZE | ||
1346 | bool "size (EXPERIMENTAL)" | ||
1347 | help | ||
1348 | Tries all compressors and chooses the one which has the smallest | ||
1349 | result. | ||
1350 | |||
1351 | config JFFS2_CMODE_FAVOURLZO | ||
1352 | bool "Favour LZO" | ||
1353 | help | ||
1354 | Tries all compressors and chooses the one which has the smallest | ||
1355 | result but gives some preference to LZO (which has faster | ||
1356 | decompression) at the expense of size. | ||
1357 | |||
1358 | endchoice | ||
1359 | |||
1360 | # UBIFS File system configuration | 1172 | # UBIFS File system configuration |
1361 | source "fs/ubifs/Kconfig" | 1173 | source "fs/ubifs/Kconfig" |
1362 | 1174 | ||
diff --git a/fs/jffs2/Kconfig b/fs/jffs2/Kconfig new file mode 100644 index 000000000000..6ae169cd8faa --- /dev/null +++ b/fs/jffs2/Kconfig | |||
@@ -0,0 +1,188 @@ | |||
1 | config JFFS2_FS | ||
2 | tristate "Journalling Flash File System v2 (JFFS2) support" | ||
3 | select CRC32 | ||
4 | depends on MTD | ||
5 | help | ||
6 | JFFS2 is the second generation of the Journalling Flash File System | ||
7 | for use on diskless embedded devices. It provides improved wear | ||
8 | levelling, compression and support for hard links. You cannot use | ||
9 | this on normal block devices, only on 'MTD' devices. | ||
10 | |||
11 | Further information on the design and implementation of JFFS2 is | ||
12 | available at <http://sources.redhat.com/jffs2/>. | ||
13 | |||
14 | config JFFS2_FS_DEBUG | ||
15 | int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)" | ||
16 | depends on JFFS2_FS | ||
17 | default "0" | ||
18 | help | ||
19 | This controls the amount of debugging messages produced by the JFFS2 | ||
20 | code. Set it to zero for use in production systems. For evaluation, | ||
21 | testing and debugging, it's advisable to set it to one. This will | ||
22 | enable a few assertions and will print debugging messages at the | ||
23 | KERN_DEBUG loglevel, where they won't normally be visible. Level 2 | ||
24 | is unlikely to be useful - it enables extra debugging in certain | ||
25 | areas which at one point needed debugging, but when the bugs were | ||
26 | located and fixed, the detailed messages were relegated to level 2. | ||
27 | |||
28 | If reporting bugs, please try to have available a full dump of the | ||
29 | messages at debug level 1 while the misbehaviour was occurring. | ||
30 | |||
31 | config JFFS2_FS_WRITEBUFFER | ||
32 | bool "JFFS2 write-buffering support" | ||
33 | depends on JFFS2_FS | ||
34 | default y | ||
35 | help | ||
36 | This enables the write-buffering support in JFFS2. | ||
37 | |||
38 | This functionality is required to support JFFS2 on the following | ||
39 | types of flash devices: | ||
40 | - NAND flash | ||
41 | - NOR flash with transparent ECC | ||
42 | - DataFlash | ||
43 | |||
44 | config JFFS2_FS_WBUF_VERIFY | ||
45 | bool "Verify JFFS2 write-buffer reads" | ||
46 | depends on JFFS2_FS_WRITEBUFFER | ||
47 | default n | ||
48 | help | ||
49 | This causes JFFS2 to read back every page written through the | ||
50 | write-buffer, and check for errors. | ||
51 | |||
52 | config JFFS2_SUMMARY | ||
53 | bool "JFFS2 summary support (EXPERIMENTAL)" | ||
54 | depends on JFFS2_FS && EXPERIMENTAL | ||
55 | default n | ||
56 | help | ||
57 | This feature makes it possible to use summary information | ||
58 | for faster filesystem mount. | ||
59 | |||
60 | The summary information can be inserted into a filesystem image | ||
61 | by the utility 'sumtool'. | ||
62 | |||
63 | If unsure, say 'N'. | ||
64 | |||
65 | config JFFS2_FS_XATTR | ||
66 | bool "JFFS2 XATTR support (EXPERIMENTAL)" | ||
67 | depends on JFFS2_FS && EXPERIMENTAL | ||
68 | default n | ||
69 | help | ||
70 | Extended attributes are name:value pairs associated with inodes by | ||
71 | the kernel or by users (see the attr(5) manual page, or visit | ||
72 | <http://acl.bestbits.at/> for details). | ||
73 | |||
74 | If unsure, say N. | ||
75 | |||
76 | config JFFS2_FS_POSIX_ACL | ||
77 | bool "JFFS2 POSIX Access Control Lists" | ||
78 | depends on JFFS2_FS_XATTR | ||
79 | default y | ||
80 | select FS_POSIX_ACL | ||
81 | help | ||
82 | Posix Access Control Lists (ACLs) support permissions for users and | ||
83 | groups beyond the owner/group/world scheme. | ||
84 | |||
85 | To learn more about Access Control Lists, visit the Posix ACLs for | ||
86 | Linux website <http://acl.bestbits.at/>. | ||
87 | |||
88 | If you don't know what Access Control Lists are, say N | ||
89 | |||
90 | config JFFS2_FS_SECURITY | ||
91 | bool "JFFS2 Security Labels" | ||
92 | depends on JFFS2_FS_XATTR | ||
93 | default y | ||
94 | help | ||
95 | Security labels support alternative access control models | ||
96 | implemented by security modules like SELinux. This option | ||
97 | enables an extended attribute handler for file security | ||
98 | labels in the jffs2 filesystem. | ||
99 | |||
100 | If you are not using a security module that requires using | ||
101 | extended attributes for file security labels, say N. | ||
102 | |||
103 | config JFFS2_COMPRESSION_OPTIONS | ||
104 | bool "Advanced compression options for JFFS2" | ||
105 | depends on JFFS2_FS | ||
106 | default n | ||
107 | help | ||
108 | Enabling this option allows you to explicitly choose which | ||
109 | compression modules, if any, are enabled in JFFS2. Removing | ||
110 | compressors can mean you cannot read existing file systems, | ||
111 | and enabling experimental compressors can mean that you | ||
112 | write a file system which cannot be read by a standard kernel. | ||
113 | |||
114 | If unsure, you should _definitely_ say 'N'. | ||
115 | |||
116 | config JFFS2_ZLIB | ||
117 | bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS | ||
118 | select ZLIB_INFLATE | ||
119 | select ZLIB_DEFLATE | ||
120 | depends on JFFS2_FS | ||
121 | default y | ||
122 | help | ||
123 | Zlib is designed to be a free, general-purpose, legally unencumbered, | ||
124 | lossless data-compression library for use on virtually any computer | ||
125 | hardware and operating system. See <http://www.gzip.org/zlib/> for | ||
126 | further information. | ||
127 | |||
128 | Say 'Y' if unsure. | ||
129 | |||
130 | config JFFS2_LZO | ||
131 | bool "JFFS2 LZO compression support" if JFFS2_COMPRESSION_OPTIONS | ||
132 | select LZO_COMPRESS | ||
133 | select LZO_DECOMPRESS | ||
134 | depends on JFFS2_FS | ||
135 | default n | ||
136 | help | ||
137 | minilzo-based compression. Generally works better than Zlib. | ||
138 | |||
139 | This feature was added in July, 2007. Say 'N' if you need | ||
140 | compatibility with older bootloaders or kernels. | ||
141 | |||
142 | config JFFS2_RTIME | ||
143 | bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS | ||
144 | depends on JFFS2_FS | ||
145 | default y | ||
146 | help | ||
147 | Rtime does manage to recompress already-compressed data. Say 'Y' if unsure. | ||
148 | |||
149 | config JFFS2_RUBIN | ||
150 | bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS | ||
151 | depends on JFFS2_FS | ||
152 | default n | ||
153 | help | ||
154 | RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure. | ||
155 | |||
156 | choice | ||
157 | prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS | ||
158 | default JFFS2_CMODE_PRIORITY | ||
159 | depends on JFFS2_FS | ||
160 | help | ||
161 | You can set here the default compression mode of JFFS2 from | ||
162 | the available compression modes. Don't touch if unsure. | ||
163 | |||
164 | config JFFS2_CMODE_NONE | ||
165 | bool "no compression" | ||
166 | help | ||
167 | Uses no compression. | ||
168 | |||
169 | config JFFS2_CMODE_PRIORITY | ||
170 | bool "priority" | ||
171 | help | ||
172 | Tries the compressors in a predefined order and chooses the first | ||
173 | successful one. | ||
174 | |||
175 | config JFFS2_CMODE_SIZE | ||
176 | bool "size (EXPERIMENTAL)" | ||
177 | help | ||
178 | Tries all compressors and chooses the one which has the smallest | ||
179 | result. | ||
180 | |||
181 | config JFFS2_CMODE_FAVOURLZO | ||
182 | bool "Favour LZO" | ||
183 | help | ||
184 | Tries all compressors and chooses the one which has the smallest | ||
185 | result but gives some preference to LZO (which has faster | ||
186 | decompression) at the expense of size. | ||
187 | |||
188 | endchoice | ||
diff --git a/fs/jffs2/compr.c b/fs/jffs2/compr.c index 86739ee53b37..f25e70c1b51c 100644 --- a/fs/jffs2/compr.c +++ b/fs/jffs2/compr.c | |||
@@ -53,8 +53,8 @@ static int jffs2_is_best_compression(struct jffs2_compressor *this, | |||
53 | } | 53 | } |
54 | 54 | ||
55 | /* jffs2_compress: | 55 | /* jffs2_compress: |
56 | * @data: Pointer to uncompressed data | 56 | * @data_in: Pointer to uncompressed data |
57 | * @cdata: Pointer to returned pointer to buffer for compressed data | 57 | * @cpage_out: Pointer to returned pointer to buffer for compressed data |
58 | * @datalen: On entry, holds the amount of data available for compression. | 58 | * @datalen: On entry, holds the amount of data available for compression. |
59 | * On exit, expected to hold the amount of data actually compressed. | 59 | * On exit, expected to hold the amount of data actually compressed. |
60 | * @cdatalen: On entry, holds the amount of space available for compressed | 60 | * @cdatalen: On entry, holds the amount of space available for compressed |
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c index cd219ef55254..b1aaae823a52 100644 --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c | |||
@@ -311,7 +311,7 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char | |||
311 | /* FIXME: If you care. We'd need to use frags for the target | 311 | /* FIXME: If you care. We'd need to use frags for the target |
312 | if it grows much more than this */ | 312 | if it grows much more than this */ |
313 | if (targetlen > 254) | 313 | if (targetlen > 254) |
314 | return -EINVAL; | 314 | return -ENAMETOOLONG; |
315 | 315 | ||
316 | ri = jffs2_alloc_raw_inode(); | 316 | ri = jffs2_alloc_raw_inode(); |
317 | 317 | ||
diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c index dddb2a6c9e2c..259461b910af 100644 --- a/fs/jffs2/erase.c +++ b/fs/jffs2/erase.c | |||
@@ -68,7 +68,7 @@ static void jffs2_erase_block(struct jffs2_sb_info *c, | |||
68 | instr->len = c->sector_size; | 68 | instr->len = c->sector_size; |
69 | instr->callback = jffs2_erase_callback; | 69 | instr->callback = jffs2_erase_callback; |
70 | instr->priv = (unsigned long)(&instr[1]); | 70 | instr->priv = (unsigned long)(&instr[1]); |
71 | instr->fail_addr = 0xffffffff; | 71 | instr->fail_addr = MTD_FAIL_ADDR_UNKNOWN; |
72 | 72 | ||
73 | ((struct erase_priv_struct *)instr->priv)->jeb = jeb; | 73 | ((struct erase_priv_struct *)instr->priv)->jeb = jeb; |
74 | ((struct erase_priv_struct *)instr->priv)->c = c; | 74 | ((struct erase_priv_struct *)instr->priv)->c = c; |
@@ -175,7 +175,7 @@ static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock | |||
175 | { | 175 | { |
176 | /* For NAND, if the failure did not occur at the device level for a | 176 | /* For NAND, if the failure did not occur at the device level for a |
177 | specific physical page, don't bother updating the bad block table. */ | 177 | specific physical page, don't bother updating the bad block table. */ |
178 | if (jffs2_cleanmarker_oob(c) && (bad_offset != 0xffffffff)) { | 178 | if (jffs2_cleanmarker_oob(c) && (bad_offset != MTD_FAIL_ADDR_UNKNOWN)) { |
179 | /* We had a device-level failure to erase. Let's see if we've | 179 | /* We had a device-level failure to erase. Let's see if we've |
180 | failed too many times. */ | 180 | failed too many times. */ |
181 | if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) { | 181 | if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) { |
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index 086c43830221..249305d65d5b 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -207,6 +207,8 @@ int jffs2_statfs(struct dentry *dentry, struct kstatfs *buf) | |||
207 | buf->f_files = 0; | 207 | buf->f_files = 0; |
208 | buf->f_ffree = 0; | 208 | buf->f_ffree = 0; |
209 | buf->f_namelen = JFFS2_MAX_NAME_LEN; | 209 | buf->f_namelen = JFFS2_MAX_NAME_LEN; |
210 | buf->f_fsid.val[0] = JFFS2_SUPER_MAGIC; | ||
211 | buf->f_fsid.val[1] = c->mtd->index; | ||
210 | 212 | ||
211 | spin_lock(&c->erase_completion_lock); | 213 | spin_lock(&c->erase_completion_lock); |
212 | avail = c->dirty_size + c->free_size; | 214 | avail = c->dirty_size + c->free_size; |
@@ -440,14 +442,14 @@ struct inode *jffs2_new_inode (struct inode *dir_i, int mode, struct jffs2_raw_i | |||
440 | 442 | ||
441 | memset(ri, 0, sizeof(*ri)); | 443 | memset(ri, 0, sizeof(*ri)); |
442 | /* Set OS-specific defaults for new inodes */ | 444 | /* Set OS-specific defaults for new inodes */ |
443 | ri->uid = cpu_to_je16(current->fsuid); | 445 | ri->uid = cpu_to_je16(current_fsuid()); |
444 | 446 | ||
445 | if (dir_i->i_mode & S_ISGID) { | 447 | if (dir_i->i_mode & S_ISGID) { |
446 | ri->gid = cpu_to_je16(dir_i->i_gid); | 448 | ri->gid = cpu_to_je16(dir_i->i_gid); |
447 | if (S_ISDIR(mode)) | 449 | if (S_ISDIR(mode)) |
448 | mode |= S_ISGID; | 450 | mode |= S_ISGID; |
449 | } else { | 451 | } else { |
450 | ri->gid = cpu_to_je16(current->fsgid); | 452 | ri->gid = cpu_to_je16(current_fsgid()); |
451 | } | 453 | } |
452 | 454 | ||
453 | /* POSIX ACLs have to be processed now, at least partly. | 455 | /* POSIX ACLs have to be processed now, at least partly. |
diff --git a/fs/jffs2/nodemgmt.c b/fs/jffs2/nodemgmt.c index a9bf9603c1ba..0875b60b4bf7 100644 --- a/fs/jffs2/nodemgmt.c +++ b/fs/jffs2/nodemgmt.c | |||
@@ -261,6 +261,10 @@ static int jffs2_find_nextblock(struct jffs2_sb_info *c) | |||
261 | 261 | ||
262 | jffs2_sum_reset_collected(c->summary); /* reset collected summary */ | 262 | jffs2_sum_reset_collected(c->summary); /* reset collected summary */ |
263 | 263 | ||
264 | /* adjust write buffer offset, else we get a non contiguous write bug */ | ||
265 | if (!(c->wbuf_ofs % c->sector_size) && !c->wbuf_len) | ||
266 | c->wbuf_ofs = 0xffffffff; | ||
267 | |||
264 | D1(printk(KERN_DEBUG "jffs2_find_nextblock(): new nextblock = 0x%08x\n", c->nextblock->offset)); | 268 | D1(printk(KERN_DEBUG "jffs2_find_nextblock(): new nextblock = 0x%08x\n", c->nextblock->offset)); |
265 | 269 | ||
266 | return 0; | 270 | return 0; |
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c index 0e78b00035e4..d9a721e6db70 100644 --- a/fs/jffs2/wbuf.c +++ b/fs/jffs2/wbuf.c | |||
@@ -679,10 +679,7 @@ static int __jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad) | |||
679 | 679 | ||
680 | memset(c->wbuf,0xff,c->wbuf_pagesize); | 680 | memset(c->wbuf,0xff,c->wbuf_pagesize); |
681 | /* adjust write buffer offset, else we get a non contiguous write bug */ | 681 | /* adjust write buffer offset, else we get a non contiguous write bug */ |
682 | if (SECTOR_ADDR(c->wbuf_ofs) == SECTOR_ADDR(c->wbuf_ofs+c->wbuf_pagesize)) | 682 | c->wbuf_ofs += c->wbuf_pagesize; |
683 | c->wbuf_ofs += c->wbuf_pagesize; | ||
684 | else | ||
685 | c->wbuf_ofs = 0xffffffff; | ||
686 | c->wbuf_len = 0; | 683 | c->wbuf_len = 0; |
687 | return 0; | 684 | return 0; |
688 | } | 685 | } |