diff options
author | Artem B. Bityuckiy <dedekind@infradead.org> | 2005-03-01 10:50:52 +0000 |
---|---|---|
committer | Thomas Gleixner <tglx@mtd.linutronix.de> | 2005-05-23 12:48:15 +0200 |
commit | 32f1a95d505b99b1f01b6aeea36ec3f97245b357 (patch) | |
tree | 5da0e8b01362cf6b0cc79f11e5e9b3fd4ad169d6 /fs/jffs2/write.c | |
parent | 20a6c211903dce92a0db7f19c221cfa3f2cb4c32 (diff) | |
download | kernel-common-32f1a95d505b99b1f01b6aeea36ec3f97245b357.tar.gz kernel-common-32f1a95d505b99b1f01b6aeea36ec3f97245b357.tar.bz2 kernel-common-32f1a95d505b99b1f01b6aeea36ec3f97245b357.zip |
[JFFS2] Add symlink caching support.
Signed-off-by: Artem B. Bityuckiy <dedekind@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/jffs2/write.c')
-rw-r--r-- | fs/jffs2/write.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/fs/jffs2/write.c b/fs/jffs2/write.c index d6b4d55e70e4..f3910dc1c2c8 100644 --- a/fs/jffs2/write.c +++ b/fs/jffs2/write.c @@ -7,7 +7,7 @@ * * For licensing information, see the file 'LICENCE' in this directory. * - * $Id: write.c,v 1.90 2005/01/28 18:53:01 hammache Exp $ + * $Id: write.c,v 1.91 2005/03/01 10:34:03 dedekind Exp $ * */ @@ -644,20 +644,23 @@ int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, down(&dead_f->sem); - while (dead_f->dents) { - /* There can be only deleted ones */ - fd = dead_f->dents; - - dead_f->dents = fd->next; - - if (fd->ino) { - printk(KERN_WARNING "Deleting inode #%u with active dentry \"%s\"->ino #%u\n", - dead_f->inocache->ino, fd->name, fd->ino); - } else { - D1(printk(KERN_DEBUG "Removing deletion dirent for \"%s\" from dir ino #%u\n", fd->name, dead_f->inocache->ino)); + if (S_ISDIR(OFNI_EDONI_2SFFJ(dead_f)->i_mode)) { + while (dead_f->dents) { + /* There can be only deleted ones */ + fd = dead_f->dents; + + dead_f->dents = fd->next; + + if (fd->ino) { + printk(KERN_WARNING "Deleting inode #%u with active dentry \"%s\"->ino #%u\n", + dead_f->inocache->ino, fd->name, fd->ino); + } else { + D1(printk(KERN_DEBUG "Removing deletion dirent for \"%s\" from dir ino #%u\n", + fd->name, dead_f->inocache->ino)); + } + jffs2_mark_node_obsolete(c, fd->raw); + jffs2_free_full_dirent(fd); } - jffs2_mark_node_obsolete(c, fd->raw); - jffs2_free_full_dirent(fd); } dead_f->inocache->nlink--; |