remarkable-linux/Documentation/filesystems
David Howells 12debc4248 iget: remove iget() and the read_inode() super op as being obsolete
Remove the old iget() call and the read_inode() superblock operation it uses
as these are really obsolete, and the use of read_inode() does not produce
proper error handling (no distinction between ENOMEM and EIO when marking an
inode bad).

Furthermore, this removes the temptation to use iget() to find an inode by
number in a filesystem from code outside that filesystem.

iget_locked() should be used instead.  A new function is added in an earlier
patch (iget_failed) that is to be called to mark an inode as bad, unlock it
and release it should the get routine fail.  Mark iget() and read_inode() as
being obsolete and remove references to them from the documentation.

Typically a filesystem will be modified such that the read_inode function
becomes an internal iget function, for example the following:

	void thingyfs_read_inode(struct inode *inode)
	{
		...
	}

would be changed into something like:

	struct inode *thingyfs_iget(struct super_block *sp, unsigned long ino)
	{
		struct inode *inode;
		int ret;

		inode = iget_locked(sb, ino);
		if (!inode)
			return ERR_PTR(-ENOMEM);
		if (!(inode->i_state & I_NEW))
			return inode;

		...
		unlock_new_inode(inode);
		return inode;
	error:
		iget_failed(inode);
		return ERR_PTR(ret);
	}

and then thingyfs_iget() would be called rather than iget(), for example:

	ret = -EINVAL;
	inode = iget(sb, ino);
	if (!inode || is_bad_inode(inode))
		goto error;

becomes:

	inode = thingyfs_iget(sb, ino);
	if (IS_ERR(inode)) {
		ret = PTR_ERR(inode);
		goto error;
	}

Note that is_bad_inode() does not need to be called.  The error returned by
thingyfs_iget() should render it unnecessary.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-07 08:42:29 -08:00
..
configfs correct missing a double quote in configfs.txt 2008-02-03 16:10:08 +02:00
00-INDEX Documentation: move sharedsubtrees.txt to filesystems/ 2008-02-07 08:42:17 -08:00
9p.txt 9p: add virtio transport 2007-10-23 13:47:31 -05:00
adfs.txt Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
affs.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
afs.txt [AFS]: Update the AFS fs documentation. 2007-04-26 15:57:43 -07:00
automount-support.txt VFS: Unexport do_kern_mount() and clean up simple_pin_fs() 2006-06-09 09:34:16 -04:00
befs.txt Fix typos in Documentation/: 'Q'-'R' 2006-10-03 22:54:15 +02:00
bfs.txt [PATCH] update Tigran's email addresses 2006-12-13 09:05:53 -08:00
cifs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
coda.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cramfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dentry-locking.txt [PATCH] VFS: split dentry locking documentation 2005-11-07 07:53:56 -08:00
directory-locking Documentation: Fix up docs still talking about i_sem 2007-05-24 10:16:17 -07:00
dlmfs.txt Fix typos in Documentation/: 'D'-'E' 2006-10-03 22:47:42 +02:00
dnotify.txt Documentation: move dnotify.txt to filesystems/ 2008-02-07 08:42:17 -08:00
ecryptfs.txt eCryptfs: Move ecryptfs docs into Documentation/filesystems/ 2007-07-17 10:23:08 -07:00
Exporting exportfs: update documentation 2007-10-22 08:13:21 -07:00
ext2.txt Fix typos in Documentation/: 'N'-'P' 2006-10-03 22:52:05 +02:00
ext3.txt documentation/ext3: grammar fixes 2007-10-20 02:38:36 +02:00
ext4.txt ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
files.txt Documentation/filesystems/files.txt: remove rcuref_inc_lf() reverences 2007-10-20 01:47:49 +02:00
fuse.txt [PATCH] fuse: fix typo 2006-12-30 10:56:45 -08:00
gfs2.txt [GFS2] Update documentation 2006-04-25 15:44:04 -04:00
hfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hfsplus.txt Documentation: document HFSPlus 2007-07-31 15:39:38 -07:00
hpfs.txt misc doc and kconfig typos 2007-05-09 08:58:15 +02:00
inotify.txt [PATCH] inotify (5/5): update kernel documentation 2006-06-20 05:25:19 -04:00
isofs.txt It's UTF-8 2006-03-22 00:13:35 +01:00
jfs.txt JFS: document uid, gid, and umask mount options in jfs.txt 2007-03-09 10:27:31 -06:00
Locking iget: remove iget() and the read_inode() super op as being obsolete 2008-02-07 08:42:29 -08:00
locks.txt Documentation: move locks.txt in filesystems/ 2007-10-09 18:32:45 -04:00
mandatory-locking.txt locks: add warning about mandatory locking races 2007-10-09 18:32:45 -04:00
ncpfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ntfs.txt NTFS: Fix a mount time deadlock. 2007-10-12 09:16:30 -07:00
ocfs2.txt [PATCH 2/2] ocfs2: cluster aware flock() 2008-01-25 15:05:43 -08:00
porting iget: remove iget() and the read_inode() super op as being obsolete 2008-02-07 08:42:29 -08:00
proc.txt get rid of NR_OPEN and introduce a sysctl_nr_open 2008-02-06 10:41:06 -08:00
quota.txt quota: send messages via netlink 2007-10-17 08:42:56 -07:00
ramfs-rootfs-initramfs.txt Documentation: fix type error 2008-02-03 14:50:11 +02:00
relay.txt doc: use correct debugfs mountpoint 2008-02-03 16:30:51 +02:00
romfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sharedsubtree.txt Documentation: move sharedsubtrees.txt to filesystems/ 2008-02-07 08:42:17 -08:00
smbfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
spufs.txt Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
sysfs-pci.txt Fix typos concerning hierarchy 2007-02-17 19:23:03 +01:00
sysfs.txt docs/sysfs: add missing word to sysfs attribute explanation 2007-10-20 02:39:43 +02:00
sysv-fs.txt [PATCH] fs/sysv/: doc cleanup 2006-12-07 08:39:44 -08:00
tmpfs.txt mount -t tmpfs -o mpol=: check nodes online 2007-06-08 17:23:32 -07:00
udf.txt [PATCH] Update udf documentation to reflect current state of read/write support 2006-11-16 11:43:38 -08:00
ufs.txt [PATCH] ufs2 write: mount as rw 2007-02-12 09:48:40 -08:00
vfat.txt fat: don't use free_clusters for fat32 2007-05-08 11:15:13 -07:00
vfs.txt iget: remove iget() and the read_inode() super op as being obsolete 2008-02-07 08:42:29 -08:00
xfs.txt [XFS] Update XFS documentation. 2005-11-03 13:46:43 +11:00
xip.txt misc doc and kconfig typos 2007-05-09 08:58:15 +02:00