diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-10-02 11:58:09 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-10-08 08:36:58 +0200 |
commit | 22d8660e7b77250a12ecf76dc4f20588e3f9257e (patch) | |
tree | fca169cef3c79af0658fe97e6be422d9013debf7 /fs/fs.c | |
parent | 46ade6ebdc0ab5a24ca44ed132579523a48a4493 (diff) | |
download | barebox-22d8660e7b77250a12ecf76dc4f20588e3f9257e.tar.gz barebox-22d8660e7b77250a12ecf76dc4f20588e3f9257e.tar.xz |
fs: implement iget_locked and iget_failed
Implement in fs core rather than using a private version in UBIFS.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/fs.c')
-rw-r--r-- | fs/fs.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -1051,6 +1051,30 @@ struct inode *new_inode(struct super_block *sb) return inode; } +struct inode *iget_locked(struct super_block *sb, unsigned long ino) +{ + struct inode *inode; + + list_for_each_entry(inode, &sb->s_inodes, i_sb_list) { + if (inode->i_ino == ino) + return iget(inode); + } + + inode = new_inode(sb); + if (!inode) + return NULL; + + inode->i_state = I_NEW; + inode->i_ino = ino; + + return inode; +} + +void iget_failed(struct inode *inode) +{ + iput(inode); +} + void iput(struct inode *inode) { if (!inode->i_count) |