On Mon, Feb 1, 2016 at 9:47 AM, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > On Fri, Jan 29, 2016 at 03:06:21PM +0100, yegorslists@xxxxxxxxxxxxxx wrote: >> From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >> >> Signed-off-by: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >> --- >> fs/Makefile | 1 + >> fs/inode.c | 34 ++++++++++++++++++++++++++++++++++ >> fs/ubifs/super.c | 26 +++++++++++--------------- >> include/linux/fs.h | 6 ++++++ >> 4 files changed, 52 insertions(+), 15 deletions(-) >> create mode 100644 fs/inode.c >> >> diff --git a/fs/Makefile b/fs/Makefile >> index 7896e38..320e6fa 100644 >> --- a/fs/Makefile >> +++ b/fs/Makefile >> @@ -5,6 +5,7 @@ obj-y += devfs-core.o >> obj-$(CONFIG_FS_DEVFS) += devfs.o >> obj-$(CONFIG_FS_FAT) += fat/ >> obj-y += fs.o >> +obj-y += inode.o >> obj-$(CONFIG_FS_UBIFS) += ubifs/ >> obj-$(CONFIG_FS_TFTP) += tftp.o >> obj-$(CONFIG_FS_OMAP4_USBBOOT) += omap4_usbbootfs.o >> diff --git a/fs/inode.c b/fs/inode.c >> new file mode 100644 >> index 0000000..f9b1b63 >> --- /dev/null >> +++ b/fs/inode.c >> @@ -0,0 +1,34 @@ >> +/* >> + * (C) 1997 Linus Torvalds >> + * (C) 1999 Andrea Arcangeli <andrea@xxxxxxx> (dynamic inode allocation) >> + */ >> + >> +#include <linux/mount.h> >> + >> +/** >> + * iget_locked - obtain an inode from a mounted file system >> + * @sb: super block of file system >> + * @ino: inode number to get >> + * >> + * Search for the inode specified by @ino in the inode cache and if present >> + * return it with an increased reference count. This is for file systems >> + * where the inode number is sufficient for unique identification of an inode. >> + * >> + * If the inode is not in cache, allocate a new inode and return it locked, >> + * hashed, and with the I_NEW flag set. The file system gets to fill it in >> + * before unlocking it via unlock_new_inode(). >> + */ >> +struct inode *iget_locked(struct super_block *sb, unsigned long ino) >> +{ >> + struct inode *inode; >> + >> + inode = sb->s_op->alloc_inode(sb); >> + if (inode) { >> + inode->i_ino = ino; >> + inode->i_sb = sb; >> + list_add(&inode->i_sb_list, &sb->s_inodes); >> + inode->i_state = I_SYNC | I_NEW; >> + } >> + >> + return inode; >> +} > > Let's stop here, the border has been crossed. We can introduce no-op > wrappers for functions which do not have any meaning in barebox > (spinlocks and the like), we can introduce convenience wrappers for > functions that have a different name in barebox (like kmalloc), but > please let's not introduce functions which do more complicated things > which depend on structures being ordered the way they are in the Linux > kernel. I'm really afraid this way we merge more and more code from > Linux that doesn't really make sense in the barebox context and that we > have to keep code in the filesystem drivers just to make the parallel > universe of the Linux wrappers happy. That's a can of worms I don't want > to open. OK. We'll see, what can be generalized between ubifs and squashfs after I'm finished. Yegor _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox