12 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
14 #include <linux/kernel.h>
33 memset(ic, 0,
sizeof(*ic));
70 unsigned long cnt = 2;
73 pr_crit(
"Eep. CRC not correct in jffs2_write_dnode()\n");
79 vecs[1].
iov_base = (
unsigned char *)data;
83 pr_warn(
"%s(): ri->totlen (0x%08x) != sizeof(*ri) (0x%08zx) + datalen (0x%08x)\n",
85 sizeof(*ri), datalen);
93 if (!datalen || !data)
102 jffs2_dbg(1,
"%s(): dnode_version %d, highest version %d -> updating dnode\n",
112 if (ret || (retlen !=
sizeof(*ri) + datalen)) {
113 pr_notice(
"Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n",
114 sizeof(*ri) + datalen, flash_ofs, ret, retlen);
125 pr_notice(
"Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n",
135 jffs2_dbg(1,
"Retrying failed write.\n");
155 jffs2_dbg(1,
"Allocated space at 0x%08x to retry failed write.\n",
163 jffs2_dbg(1,
"Failed to allocate space to retry failed write: %d!\n",
168 return ERR_PTR(ret?ret:-
EIO);
183 if (IS_ERR(fn->
raw)) {
184 void *hold_err = fn->
raw;
187 return ERR_CAST(hold_err);
193 jffs2_dbg(1,
"jffs2_write_dnode wrote node at 0x%08x(%d) with dsize 0x%x, csize 0x%x, node_crc 0x%08x, data_crc 0x%08x, totlen 0x%08x\n",
216 jffs2_dbg(1,
"%s(ino #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x)\n",
222 pr_crit(
"Eep. CRC not correct in jffs2_write_dirent()\n");
229 pr_crit(
"Error in jffs2_write_dirent() -- name contains zero bytes!\n");
230 pr_crit(
"Directory inode #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x\n",
234 return ERR_PTR(-
EIO);
239 vecs[1].
iov_base = (
unsigned char *)name;
260 jffs2_dbg(1,
"%s(): dirent_version %d, highest version %d -> updating dirent\n",
270 if (ret || (retlen !=
sizeof(*rd) + namelen)) {
271 pr_notice(
"Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n",
272 sizeof(*rd) + namelen, flash_ofs, ret, retlen);
277 pr_notice(
"Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n",
287 jffs2_dbg(1,
"Retrying failed write.\n");
307 jffs2_dbg(1,
"Allocated space at 0x%08x to retry failed write\n",
313 jffs2_dbg(1,
"Failed to allocate space to retry failed write: %d!\n",
318 return ERR_PTR(ret?ret:-
EIO);
323 if (IS_ERR(fd->
raw)) {
324 void *hold_err = fd->
raw;
327 return ERR_CAST(hold_err);
347 jffs2_dbg(1,
"%s(): Ino #%u, ofs 0x%x, len 0x%x\n",
348 __func__, f->
inocache->ino, offset, writelen);
352 unsigned char *comprbuf =
NULL;
359 jffs2_dbg(2,
"jffs2_commit_write() loop: 0x%x to write to 0x%x\n",
365 jffs2_dbg(1,
"jffs2_reserve_space returned %d\n", ret);
372 comprtype =
jffs2_compress(c, f, buf, &comprbuf, &datalen, &cdatalen);
385 ri->
compr = comprtype & 0xff;
386 ri->
usercompr = (comprtype >> 8 ) & 0xff;
401 jffs2_dbg(1,
"Retrying node write in jffs2_write_inode_range()\n");
414 jffs2_dbg(1,
"Eep. add_full_dnode_to_inode() failed in commit_write, returned %d\n",
426 pr_warn(
"Eep. We didn't actually write any data in jffs2_write_inode_range()\n");
430 jffs2_dbg(1,
"increasing writtenlen by %d\n", datalen);
436 *retlen = writtenlen;
455 jffs2_dbg(1,
"%s(): reserved 0x%x bytes\n", __func__, alloclen);
466 jffs2_dbg(1,
"jffs2_do_create created file with mode 0x%x\n",
470 jffs2_dbg(1,
"jffs2_write_dnode() failed\n");
496 jffs2_dbg(1,
"jffs2_reserve_space() for dirent failed\n");
518 rd->
nsize = qstr->len;
608 for (fd = dir_f->
dents; fd; fd = fd->
next) {
609 if (fd->
nhash == nhash &&
611 !fd->
name[namelen]) {
613 jffs2_dbg(1,
"Marking old dirent node (ino #%u) @%08x obsolete\n",
636 while (dead_f->
dents) {
643 pr_warn(
"Deleting inode #%u with active dentry \"%s\"->ino #%u\n",
647 jffs2_dbg(1,
"Removing deletion dirent for \"%s\" from dir ino #%u\n",