aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jffs2/readinode.c
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2008-05-01 13:47:17 -0400
committerDavid Woodhouse <dwmw2@infradead.org>2008-05-01 13:47:17 -0400
commit27c72b040c0be8f3704ed0b6b84c12cbba24a7e8 (patch)
tree0b84847120e817465d517d21fa4653d958222567 /fs/jffs2/readinode.c
parent1b690b48786229571e590dd22fe01ecc22a8746b (diff)
[JFFS2] Track parent inode for directories (for NFS export)
To support NFS export, we need to know the parent inode of directories. Rather than growing the jffs2_inode_cache structure, share space with the nlink field -- which was always set to 1 for directories anyway. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/readinode.c')
-rw-r--r--fs/jffs2/readinode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c
index 4cb4d76de07f..9fc4833c117c 100644
--- a/fs/jffs2/readinode.c
+++ b/fs/jffs2/readinode.c
@@ -1123,7 +1123,8 @@ static int jffs2_do_read_inode_internal(struct jffs2_sb_info *c,
1123 size_t retlen; 1123 size_t retlen;
1124 int ret; 1124 int ret;
1125 1125
1126 dbg_readinode("ino #%u nlink is %d\n", f->inocache->ino, f->inocache->nlink); 1126 dbg_readinode("ino #%u pino/nlink is %d\n", f->inocache->ino,
1127 f->inocache->pino_nlink);
1127 1128
1128 memset(&rii, 0, sizeof(rii)); 1129 memset(&rii, 0, sizeof(rii));
1129 1130
@@ -1358,7 +1359,7 @@ int jffs2_do_read_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
1358 } 1359 }
1359 dbg_readinode("creating inocache for root inode\n"); 1360 dbg_readinode("creating inocache for root inode\n");
1360 memset(f->inocache, 0, sizeof(struct jffs2_inode_cache)); 1361 memset(f->inocache, 0, sizeof(struct jffs2_inode_cache));
1361 f->inocache->ino = f->inocache->nlink = 1; 1362 f->inocache->ino = f->inocache->pino_nlink = 1;
1362 f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache; 1363 f->inocache->nodes = (struct jffs2_raw_node_ref *)f->inocache;
1363 f->inocache->state = INO_STATE_READING; 1364 f->inocache->state = INO_STATE_READING;
1364 jffs2_add_ino_cache(c, f->inocache); 1365 jffs2_add_ino_cache(c, f->inocache);
@@ -1401,7 +1402,7 @@ void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f)
1401 jffs2_clear_acl(f); 1402 jffs2_clear_acl(f);
1402 jffs2_xattr_delete_inode(c, f->inocache); 1403 jffs2_xattr_delete_inode(c, f->inocache);
1403 mutex_lock(&f->sem); 1404 mutex_lock(&f->sem);
1404 deleted = f->inocache && !f->inocache->nlink; 1405 deleted = f->inocache && !f->inocache->pino_nlink;
1405 1406
1406 if (f->inocache && f->inocache->state != INO_STATE_CHECKING) 1407 if (f->inocache && f->inocache->state != INO_STATE_CHECKING)
1407 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING); 1408 jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING);