lafs_iget_fs(struct fs *fs, int fsnum, int inum, int async)
{
struct super_block *sb;
+ struct inode *rv;
sb = fs->prime_sb;
* subordinate filesystem
* FIXME
*/
- }
- return lafs_iget(sb, inum, async);
+ struct inode *filesys;
+
+ printk("get filesys %d\n", fsnum);
+ BUG();
+ filesys = lafs_iget(sb, fsnum, async);
+ if (IS_ERR(filesys))
+ return filesys;
+ if (filesys->i_sb == sb) {
+ /* No mounted fs here.
+ * Need to mount one FIXME
+ */
+ BUG();
+ return ERR_PTR(-ENOENT);
+ }
+ printk("get inode %d\n", inum);
+ rv = lafs_iget(filesys->i_sb, inum, async);
+ iput(filesys);
+ } else
+ rv = lafs_iget(sb, inum, async);
+ return rv;
}
int __must_check