diff options
author | Daniel Phillips <daniel@tux3.org> | 2014-02-17 00:39:45 +0900 |
---|---|---|
committer | Daniel Phillips <daniel@tux3.org> | 2014-02-17 00:39:45 +0900 |
commit | 706c8bf7ab11cec8a7b0666718d0c1e2d89c1b33 (patch) | |
tree | 08c9f539a2b55524ef28042d019af66b20a3e1a4 | |
parent | ad1a6637bdd8a003d472b414ffb3f6652f4e3a6b (diff) | |
download | linux-tux3-706c8bf7ab11cec8a7b0666718d0c1e2d89c1b33.tar.gz |
tux3: Factor out tux_assign_inum to assign inum separately
Refactoring towards choosing inode after creating directory entry.
Expose an operation for choosing and setting inode number suitable for
callers outside inode.c
Signed-off-by: Daniel Phillips <d.phillips@partner.samsung.com>
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-rw-r--r-- | fs/tux3/inode.c | 14 | ||||
-rw-r--r-- | fs/tux3/namei.c | 4 |
2 files changed, 14 insertions, 4 deletions
diff --git a/fs/tux3/inode.c b/fs/tux3/inode.c index de15b4362a1713..dcf22b03a14ba6 100644 --- a/fs/tux3/inode.c +++ b/fs/tux3/inode.c @@ -345,17 +345,23 @@ struct inode *tux_create_inode(struct inode *dir, struct tux_iattr *iattr, dev_t rdev) { struct inode *inode; - int err; inode = tux_new_inode(dir, iattr, rdev); if (!inode) return ERR_PTR(-ENOMEM); + return inode; +} + +int tux_assign_inum(struct inode *inode) +{ + int err; + err = alloc_inum(inode, &ialloc_linear, NULL); if (err) { make_bad_inode(inode); iput(inode); - return ERR_PTR(err); + return err; } #if 0 /* @@ -368,7 +374,7 @@ struct inode *tux_create_inode(struct inode *dir, struct tux_iattr *iattr, tux3_warn(tux_sb(dir->i_sb), "inode insert error: inum %Lx", inum); iput(inode); - return ERR_PTR(-EIO); + return -EIO; } #endif /* @@ -378,7 +384,7 @@ struct inode *tux_create_inode(struct inode *dir, struct tux_iattr *iattr, tux3_iattrdirty(inode); tux3_mark_inode_dirty(inode); - return inode; + return 0; } /* Allocate inode with specific inum allocation policy */ diff --git a/fs/tux3/namei.c b/fs/tux3/namei.c index 4b77eab764ee7e..ed2489edc40868 100644 --- a/fs/tux3/namei.c +++ b/fs/tux3/namei.c @@ -48,6 +48,8 @@ static int tux_add_dirent(struct inode *dir, struct dentry *dentry, return err; } +int tux_assign_inum(struct inode *inode); + static int __tux3_mknod(struct inode *dir, struct dentry *dentry, struct tux_iattr *iattr, dev_t rdev) { @@ -64,6 +66,7 @@ static int __tux3_mknod(struct inode *dir, struct dentry *dentry, inode = tux_create_inode(dir, iattr, rdev); err = PTR_ERR(inode); if (!IS_ERR(inode)) { + tux_assign_inum(inode); // !!! error handling err = tux_add_dirent(dir, dentry, inode); if (!err) { unlock_new_inode(inode); @@ -149,6 +152,7 @@ static int __tux3_symlink(struct inode *dir, struct dentry *dentry, if (!IS_ERR(inode)) { err = page_symlink(inode, symname, len); if (!err) { + tux_assign_inum(inode); // !!! error handling err = tux_add_dirent(dir, dentry, inode); if (!err) { unlock_new_inode(inode); |