]> git.neil.brown.name Git - history.git/commitdiff
[XFS] Fix a blocksize-smaller-than-pagesize hang when writing buffers
authorNathan Scott <nathans@sgi.com>
Thu, 19 Aug 2004 21:54:40 +0000 (07:54 +1000)
committerNathan Scott <nathans@lips.borg.umn.edu>
Thu, 19 Aug 2004 21:54:40 +0000 (07:54 +1000)
with a shared page.

SGI Modid: xfs-linux:xfs-kern:176412a
Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/linux-2.6/xfs_buf.c

index 6b2a67f4f1169048034b62be7d1f9c43802eb0ee..77c1ccaf37da5fef69be9e74aea1158492fe5e52 100644 (file)
@@ -1522,9 +1522,12 @@ xfs_mapping_buftarg(
        xfs_buftarg_t           *btp,
        struct block_device     *bdev)
 {
+       struct backing_dev_info *bdi;
        struct inode            *inode;
        struct address_space    *mapping;
-       struct backing_dev_info *bdi;
+       static struct address_space_operations mapping_aops = {
+               .sync_page = block_sync_page,
+       };
 
        inode = new_inode(bdev->bd_inode->i_sb);
        if (!inode) {
@@ -1536,10 +1539,11 @@ xfs_mapping_buftarg(
        inode->i_mode = S_IFBLK;
        inode->i_bdev = bdev;
        inode->i_rdev = bdev->bd_dev;
-       mapping = &inode->i_data;
        bdi = blk_get_backing_dev_info(bdev);
        if (!bdi)
                bdi = &default_backing_dev_info;
+       mapping = &inode->i_data;
+       mapping->a_ops = &mapping_aops;
        mapping->backing_dev_info = bdi;
        mapping_set_gfp_mask(mapping, GFP_KERNEL);
        btp->pbr_mapping = mapping;