GIT: unionfs2-2.6.27.y: mmap: minor code and comment reformatting

Erez Zadok ezk at fsl.cs.sunysb.edu
Thu Aug 12 23:16:21 EDT 2010


commit e9c6ceff3f5d8fa71785916e0b7feadb596fb71e
Author: Erez_Zadok <ezk at cs.sunysb.edu>
Date:   Sat May 19 19:10:42 2007 -0400

    mmap: minor code and comment reformatting
    
    Conflicts:
    
    	fs/unionfs/file.c

diff --git a/fs/unionfs/file.c b/fs/unionfs/file.c
index 4f6859c..0650cb9 100644
--- a/fs/unionfs/file.c
+++ b/fs/unionfs/file.c
@@ -93,109 +93,20 @@ static int unionfs_file_readdir(struct file *file, void *dirent,
 	return -ENOTDIR;
 }
 
-static unsigned int unionfs_poll(struct file *file, poll_table *wait)
-{
-	unsigned int mask = DEFAULT_POLLMASK;
-	struct file *hidden_file = NULL;
-
-	unionfs_read_lock(file->f_dentry->d_sb);
-	if (unionfs_file_revalidate(file, 0)) {
-		/* We should pretend an error happened. */
-		mask = POLLERR | POLLIN | POLLOUT;
-		goto out;
-	}
-
-	hidden_file = unionfs_lower_file(file);
-
-	if (!hidden_file->f_op || !hidden_file->f_op->poll)
-		goto out;
-
-	mask = hidden_file->f_op->poll(hidden_file, wait);
-
-out:
-	unionfs_read_unlock(file->f_dentry->d_sb);
-	unionfs_check_file(file);
-	return mask;
-}
-
-static int __do_mmap(struct file *file, struct vm_area_struct *vma)
-{
-	int err;
-	struct file *hidden_file;
-
-	hidden_file = unionfs_lower_file(file);
-
-	err = -ENODEV;
-	if (!hidden_file->f_op || !hidden_file->f_op->mmap)
-		goto out;
-
-	vma->vm_file = hidden_file;
-	err = hidden_file->f_op->mmap(hidden_file, vma);
-	get_file(hidden_file);	/* make sure it doesn't get freed on us */
-	fput(file);		/* no need to keep extra ref on ours */
-out:
-	return err;
-}
-
 static int unionfs_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	int err = 0;
 	int willwrite;
 
 	unionfs_read_lock(file->f_dentry->d_sb);
-	/* This might could be deferred to mmap's writepage. */
+	/* This might be deferred to mmap's writepage */
 	willwrite = ((vma->vm_flags | VM_SHARED | VM_WRITE) == vma->vm_flags);
 	if ((err = unionfs_file_revalidate(file, willwrite)))
 		goto out;
 
-	err = __do_mmap(file, vma);
-
-out:
-	unionfs_read_unlock(file->f_dentry->d_sb);
-	unionfs_check_file(file);
-	return err;
-}
-
-static int unionfs_fsync(struct file *file, struct dentry *dentry,
-			 int datasync)
-{
-	int err;
-	struct file *hidden_file = NULL;
-
-	unionfs_read_lock(file->f_dentry->d_sb);
-	if ((err = unionfs_file_revalidate(file, 1)))
-		goto out;
-
-	hidden_file = unionfs_lower_file(file);
-
-	err = -EINVAL;
-	if (!hidden_file->f_op || !hidden_file->f_op->fsync)
-		goto out;
-
-	mutex_lock(&hidden_file->f_dentry->d_inode->i_mutex);
-	err = hidden_file->f_op->fsync(hidden_file, hidden_file->f_dentry,
-				       datasync);
-	mutex_unlock(&hidden_file->f_dentry->d_inode->i_mutex);
-
-out:
-	unionfs_read_unlock(file->f_dentry->d_sb);
-	unionfs_check_file(file);
-	return err;
-}
-
-static int unionfs_fasync(int fd, struct file *file, int flag)
-{
-	int err = 0;
-	struct file *hidden_file = NULL;
-
-	unionfs_read_lock(file->f_dentry->d_sb);
-	if ((err = unionfs_file_revalidate(file, 1)))
-		goto out;
-
-	hidden_file = unionfs_lower_file(file);
-
-	if (hidden_file->f_op && hidden_file->f_op->fasync)
-		err = hidden_file->f_op->fasync(fd, hidden_file, flag);
+	err = generic_file_mmap(file, vma);
+	if (err)
+		printk("unionfs: generic_file_mmap failed %d\n", err);
 
 out:
 	unionfs_read_unlock(file->f_dentry->d_sb);
diff --git a/fs/unionfs/mmap.c b/fs/unionfs/mmap.c
index 99b3b2f..f484984 100644
--- a/fs/unionfs/mmap.c
+++ b/fs/unionfs/mmap.c
@@ -114,10 +114,10 @@ int unionfs_do_readpage(struct file *file, struct page *page)
 	wait_on_page_locked(lower_page);
 	if (!PageUptodate(lower_page)) {
 		/*
-		 * call readpage() again if we returned from wait_on_page with a
-		 * page that's not up-to-date; that can happen when a partial
-		 * page has a few buffers which are ok, but not the whole
-		 * page.
+		 * call readpage() again if we returned from wait_on_page
+		 * with a page that's not up-to-date; that can happen when a
+		 * partial page has a few buffers which are ok, but not the
+		 * whole page.
 		 */
 		lock_page(lower_page);
 		err = lower_inode->i_mapping->a_ops->readpage(lower_file,
@@ -168,9 +168,9 @@ int unionfs_readpage(struct file *file, struct page *page)
 	err = unionfs_do_readpage(file, page);
 
 	/*
-	 * we have to unlock our page, b/c we _might_ have gotten a locked page.
-	 * but we no longer have to wakeup on our page here, b/c UnlockPage does
-	 * it
+	 * we have to unlock our page, b/c we _might_ have gotten a locked
+	 * page.  but we no longer have to wakeup on our page here, b/c
+	 * UnlockPage does it
 	 */
 
 out_err:
@@ -255,14 +255,13 @@ sector_t unionfs_bmap(struct address_space * mapping, sector_t block)
 {
 	int err = 0;
 	struct inode *inode, *lower_inode;
+	sector_t (*bmap)(struct address_space *, sector_t);
 
 	inode = (struct inode *)mapping->host;
 	lower_inode = unionfs_lower_inode(inode);
-
-	if (lower_inode->i_mapping->a_ops->bmap)
-		err =
-		    lower_inode->i_mapping->a_ops->bmap(lower_inode->i_mapping,
-							block);
+	bmap = lower_inode->i_mapping->a_ops->bmap;
+	if (bmap)
+		err = bmap(lower_inode->i_mapping, block);
 	return err;
 }
 
@@ -301,4 +300,3 @@ struct address_space_operations unionfs_aops = {
 	.bmap		= unionfs_bmap,
 	.sync_page	= unionfs_sync_page,
 };
-


More information about the unionfs-cvs mailing list