diff options
author | David Woodhouse <dwmw2@infradead.org> | 2008-05-01 13:47:17 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2008-05-01 13:47:17 -0400 |
commit | 27c72b040c0be8f3704ed0b6b84c12cbba24a7e8 (patch) | |
tree | 0b84847120e817465d517d21fa4653d958222567 /fs/jffs2/readinode.c | |
parent | 1b690b48786229571e590dd22fe01ecc22a8746b (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.c | 7 |
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); |