[PATCH] relayfs: use generic_ip for private data
authorTom Zanussi <zanussi@us.ibm.com>
Sun, 8 Jan 2006 09:02:26 +0000 (01:02 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 9 Jan 2006 04:13:49 +0000 (20:13 -0800)
Use inode->u.generic_ip instead of relayfs_inode_info to store pointer to user
data.  Clients using relayfs_file_create() to create their own files would
probably more expect their data to be stored in generic_ip; we also intend in
the next set of patches to get rid of relayfs-specific stuff in the file
operations, so we might as well do it here.

Signed-off-by: Tom Zanussi <zanussi@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/relayfs/inode.c

index b2f50655736bf7cfa42efca7806c6cb1f4cdb8d5..7f6d2c8e91c25d8d08b633719bd08dcaf3093ddc 100644 (file)
@@ -54,7 +54,8 @@ static struct inode *relayfs_get_inode(struct super_block *sb,
        switch (mode & S_IFMT) {
        case S_IFREG:
                inode->i_fop = fops;
-               RELAYFS_I(inode)->data = data;
+               if (data)
+                       inode->u.generic_ip = data;
                break;
        case S_IFDIR:
                inode->i_op = &simple_dir_inode_operations;
@@ -255,8 +256,9 @@ int relayfs_remove_dir(struct dentry *dentry)
  */
 static int relayfs_open(struct inode *inode, struct file *filp)
 {
-       struct rchan_buf *buf = RELAYFS_I(inode)->data;
+       struct rchan_buf *buf = inode->u.generic_ip;
        kref_get(&buf->kref);
+       filp->private_data = buf;
 
        return 0;
 }
@@ -270,8 +272,8 @@ static int relayfs_open(struct inode *inode, struct file *filp)
  */
 static int relayfs_mmap(struct file *filp, struct vm_area_struct *vma)
 {
-       struct inode *inode = filp->f_dentry->d_inode;
-       return relay_mmap_buf(RELAYFS_I(inode)->data, vma);
+       struct rchan_buf *buf = filp->private_data;
+       return relay_mmap_buf(buf, vma);
 }
 
 /**
@@ -284,8 +286,7 @@ static int relayfs_mmap(struct file *filp, struct vm_area_struct *vma)
 static unsigned int relayfs_poll(struct file *filp, poll_table *wait)
 {
        unsigned int mask = 0;
-       struct inode *inode = filp->f_dentry->d_inode;
-       struct rchan_buf *buf = RELAYFS_I(inode)->data;
+       struct rchan_buf *buf = filp->private_data;
 
        if (buf->finalized)
                return POLLERR;
@@ -309,7 +310,7 @@ static unsigned int relayfs_poll(struct file *filp, poll_table *wait)
  */
 static int relayfs_release(struct inode *inode, struct file *filp)
 {
-       struct rchan_buf *buf = RELAYFS_I(inode)->data;
+       struct rchan_buf *buf = filp->private_data;
        kref_put(&buf->kref, relay_remove_buf);
 
        return 0;
@@ -470,8 +471,8 @@ static ssize_t relayfs_read(struct file *filp,
                            size_t count,
                            loff_t *ppos)
 {
+       struct rchan_buf *buf = filp->private_data;
        struct inode *inode = filp->f_dentry->d_inode;
-       struct rchan_buf *buf = RELAYFS_I(inode)->data;
        size_t read_start, avail;
        ssize_t ret = 0;
        void *from;