xfs: simplify xfs_map_at_offset
authorChristoph Hellwig <hch@infradead.org>
Fri, 10 Dec 2010 08:42:25 +0000 (08:42 +0000)
committerAlex Elder <aelder@sgi.com>
Thu, 16 Dec 2010 22:06:07 +0000 (16:06 -0600)
Move the buffer locking into the callers as they need to do it
wether they call xfs_map_at_offset or not.  Remove the b_bdev
assignment, which is already done by get_blocks.  Remove the
duplicate extent type asserts in xfs_convert_page just before
calling xfs_map_at_offset.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
fs/xfs/linux-2.6/xfs_aops.c

index 4d982dc8b86211ed1a769d2067c6f724a61c9743..ec7bbb5645b63d85811e2ee731637139881b370c 100644 (file)
@@ -626,9 +626,7 @@ xfs_map_at_offset(
        ASSERT(imap->br_startblock != HOLESTARTBLOCK);
        ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
 
-       lock_buffer(bh);
        xfs_map_buffer(inode, bh, imap, offset);
-       bh->b_bdev = xfs_find_bdev_for_inode(inode);
        set_buffer_mapped(bh);
        clear_buffer_delay(bh);
        clear_buffer_unwritten(bh);
@@ -751,12 +749,8 @@ xfs_convert_page(
                                continue;
                        }
 
-                       ASSERT(imap->br_startblock != HOLESTARTBLOCK);
-                       ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
-
-                       if (type == IO_OVERWRITE)
-                               lock_buffer(bh);
-                       else
+                       lock_buffer(bh);
+                       if (type != IO_OVERWRITE)
                                xfs_map_at_offset(inode, bh, imap, offset);
                        xfs_add_to_ioend(inode, bh, offset, type,
                                         ioendp, done);
@@ -1041,9 +1035,8 @@ xfs_vm_writepage(
                        imap_valid = xfs_imap_valid(inode, &imap, offset);
                }
                if (imap_valid) {
-                       if (type == IO_OVERWRITE)
-                               lock_buffer(bh);
-                       else
+                       lock_buffer(bh);
+                       if (type != IO_OVERWRITE)
                                xfs_map_at_offset(inode, bh, &imap, offset);
                        xfs_add_to_ioend(inode, bh, offset, type, &ioend,
                                         new_ioend);