summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJan Harkes <jaharkes@cs.cmu.edu>2002-05-19 19:25:07 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-05-19 19:25:07 -0700
commit77d1ac9bf5beff0aab610c0cffb1fd59cea7664b (patch)
tree2d2d03751f5f54fad446cea792f6e6a41932de28 /include
parent85b640c51ed9e8ba0ab15151d89a98e1a670d347 (diff)
[PATCH] iget_locked [3/6]
Convert existing filesystems (Coda/NFS/ReiserFS) that currently use iget4 to iget5_locked.
Diffstat (limited to 'include')
-rw-r--r--include/linux/fs.h9
-rw-r--r--include/linux/nfs_fs.h2
-rw-r--r--include/linux/reiserfs_fs.h5
3 files changed, 10 insertions, 6 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 50138553bb15..2f82322fb04b 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1215,7 +1215,14 @@ extern void unlock_new_inode(struct inode *);
extern struct inode * iget4(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
static inline struct inode *iget(struct super_block *sb, unsigned long ino)
{
- return iget4(sb, ino, NULL, NULL, NULL);
+ struct inode *inode = iget_locked(sb, ino);
+
+ if (inode && (inode->i_state & I_NEW)) {
+ sb->s_op->read_inode(inode);
+ unlock_new_inode(inode);
+ }
+
+ return inode;
}
extern void __iget(struct inode * inode);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 499b246788f4..a8a2259a8343 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -170,7 +170,6 @@ struct nfs_inode {
#define NFS_INO_REVALIDATING 0x0004 /* revalidating attrs */
#define NFS_IS_SNAPSHOT 0x0010 /* a snapshot file */
#define NFS_INO_FLUSH 0x0020 /* inode is due for flushing */
-#define NFS_INO_NEW 0x0040 /* hadn't been filled yet */
static inline struct nfs_inode *NFS_I(struct inode *inode)
{
@@ -208,7 +207,6 @@ do { \
#define NFS_FLAGS(inode) (NFS_I(inode)->flags)
#define NFS_REVALIDATING(inode) (NFS_FLAGS(inode) & NFS_INO_REVALIDATING)
#define NFS_STALE(inode) (NFS_FLAGS(inode) & NFS_INO_STALE)
-#define NFS_NEW(inode) (NFS_FLAGS(inode) & NFS_INO_NEW)
#define NFS_FILEID(inode) (NFS_I(inode)->fileid)
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
index 22c5547e86bc..c2bfc3fd4ed5 100644
--- a/include/linux/reiserfs_fs.h
+++ b/include/linux/reiserfs_fs.h
@@ -1564,7 +1564,7 @@ extern struct item_operations * item_ops [TYPE_ANY + 1];
#define B_I_POS_UNFM_POINTER(bh,ih,pos) le32_to_cpu(*(((unp_t *)B_I_PITEM(bh,ih)) + (pos)))
#define PUT_B_I_POS_UNFM_POINTER(bh,ih,pos, val) do {*(((unp_t *)B_I_PITEM(bh,ih)) + (pos)) = cpu_to_le32(val); } while (0)
-struct reiserfs_iget4_args {
+struct reiserfs_iget_args {
__u32 objectid ;
} ;
@@ -1818,8 +1818,7 @@ void padd_item (char * item, int total_length, int length);
/* inode.c */
-void reiserfs_read_inode (struct inode * inode) ;
-void reiserfs_read_inode2(struct inode * inode, void *p) ;
+void reiserfs_read_locked_inode(struct inode * inode, struct reiserfs_iget_args *args) ;
int reiserfs_find_actor(struct inode * inode, void *p) ;
int reiserfs_init_locked_inode(struct inode * inode, void *p) ;
void reiserfs_delete_inode (struct inode * inode);