Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block
Linus Torvalds [Thu, 24 Mar 2011 17:16:26 +0000 (10:16 -0700)]
* 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block: (65 commits)
  Documentation/iostats.txt: bit-size reference etc.
  cfq-iosched: removing unnecessary think time checking
  cfq-iosched: Don't clear queue stats when preempt.
  blk-throttle: Reset group slice when limits are changed
  blk-cgroup: Only give unaccounted_time under debug
  cfq-iosched: Don't set active queue in preempt
  block: fix non-atomic access to genhd inflight structures
  block: attempt to merge with existing requests on plug flush
  block: NULL dereference on error path in __blkdev_get()
  cfq-iosched: Don't update group weights when on service tree
  fs: assign sb->s_bdi to default_backing_dev_info if the bdi is going away
  block: Require subsystems to explicitly allocate bio_set integrity mempool
  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
  fs: make fsync_buffers_list() plug
  mm: make generic_writepages() use plugging
  blk-cgroup: Add unaccounted time to timeslice_used.
  block: fixup plugging stubs for !CONFIG_BLOCK
  block: remove obsolete comments for blkdev_issue_zeroout.
  blktrace: Use rq->cmd_flags directly in blk_add_trace_rq.
  ...

Fix up conflicts in fs/{aio.c,super.c}

48 files changed:
1  2 
block/blk-core.c
block/blk-lib.c
drivers/block/amiflop.c
drivers/block/xsysace.c
drivers/md/bitmap.c
drivers/md/md.c
drivers/scsi/scsi_lib.c
drivers/staging/hv/blkvsc_drv.c
drivers/target/target_core_iblock.c
fs/adfs/inode.c
fs/aio.c
fs/bio.c
fs/btrfs/disk-io.c
fs/btrfs/extent_io.c
fs/btrfs/inode.c
fs/direct-io.c
fs/exofs/inode.c
fs/fat/inode.c
fs/fuse/inode.c
fs/gfs2/aops.c
fs/gfs2/log.c
fs/gfs2/lops.c
fs/gfs2/meta_io.c
fs/hpfs/file.c
fs/nilfs2/inode.c
fs/reiserfs/inode.c
fs/super.c
fs/sync.c
fs/ubifs/super.c
fs/udf/file.c
fs/udf/inode.c
fs/ufs/inode.c
fs/ufs/truncate.c
fs/xfs/linux-2.6/xfs_aops.c
fs/xfs/linux-2.6/xfs_buf.c
include/linux/fs.h
include/linux/pagemap.h
include/linux/sched.h
include/linux/swap.h
kernel/fork.c
kernel/sched.c
mm/filemap.c
mm/memory-failure.c
mm/nommu.c
mm/page-writeback.c
mm/shmem.c
mm/swapfile.c
mm/vmscan.c

Simple merge
diff --cc block/blk-lib.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc drivers/md/md.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/adfs/inode.c
Simple merge
diff --cc fs/aio.c
+++ b/fs/aio.c
@@@ -85,9 -75,8 +75,8 @@@ static int __init aio_setup(void
        kiocb_cachep = KMEM_CACHE(kiocb, SLAB_HWCACHE_ALIGN|SLAB_PANIC);
        kioctx_cachep = KMEM_CACHE(kioctx,SLAB_HWCACHE_ALIGN|SLAB_PANIC);
  
 -      aio_wq = create_workqueue("aio");
 +      aio_wq = alloc_workqueue("aio", 0, 1);  /* used to limit concurrency */
-       abe_pool = mempool_create_kmalloc_pool(1, sizeof(struct aio_batch_entry));
-       BUG_ON(!aio_wq || !abe_pool);
+       BUG_ON(!aio_wq);
  
        pr_debug("aio_setup: sizeof(struct page) = %d\n", (int)sizeof(struct page));
  
diff --cc fs/bio.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/direct-io.c
Simple merge
Simple merge
diff --cc fs/fat/inode.c
Simple merge
diff --cc fs/fuse/inode.c
Simple merge
diff --cc fs/gfs2/aops.c
Simple merge
diff --cc fs/gfs2/log.c
Simple merge
diff --cc fs/gfs2/lops.c
Simple merge
Simple merge
diff --cc fs/hpfs/file.c
Simple merge
Simple merge
Simple merge
diff --cc fs/super.c
@@@ -928,17 -989,25 +929,18 @@@ mount_fs(struct file_system_type *type
                        goto out_free_secdata;
        }
  
 -      if (type->mount) {
 -              root = type->mount(type, flags, name, data);
 -              if (IS_ERR(root)) {
 -                      error = PTR_ERR(root);
 -                      goto out_free_secdata;
 -              }
 -              mnt->mnt_root = root;
 -              mnt->mnt_sb = root->d_sb;
 -      } else {
 -              error = type->get_sb(type, flags, name, data, mnt);
 -              if (error < 0)
 -                      goto out_free_secdata;
 +      root = type->mount(type, flags, name, data);
 +      if (IS_ERR(root)) {
 +              error = PTR_ERR(root);
 +              goto out_free_secdata;
        }
 -      BUG_ON(!mnt->mnt_sb);
 -      WARN_ON(!mnt->mnt_sb->s_bdi);
 -      WARN_ON(mnt->mnt_sb->s_bdi == &default_backing_dev_info);
 -      mnt->mnt_sb->s_flags |= MS_BORN;
 +      sb = root->d_sb;
 +      BUG_ON(!sb);
 +      WARN_ON(!sb->s_bdi);
++      WARN_ON(sb->s_bdi == &default_backing_dev_info);
 +      sb->s_flags |= MS_BORN;
  
 -      error = security_sb_kern_mount(mnt->mnt_sb, flags, secdata);
 +      error = security_sb_kern_mount(sb, flags, secdata);
        if (error)
                goto out_sb;
  
diff --cc fs/sync.c
Simple merge
Simple merge
diff --cc fs/udf/file.c
Simple merge
diff --cc fs/udf/inode.c
Simple merge
diff --cc fs/ufs/inode.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/fork.c
Simple merge
diff --cc kernel/sched.c
Simple merge
diff --cc mm/filemap.c
@@@ -160,42 -152,11 +160,12 @@@ void delete_from_page_cache(struct pag
  
        if (freepage)
                freepage(page);
 +      page_cache_release(page);
  }
 -EXPORT_SYMBOL(remove_from_page_cache);
 +EXPORT_SYMBOL(delete_from_page_cache);
  
- static int sync_page(void *word)
+ static int sleep_on_page(void *word)
  {
-       struct address_space *mapping;
-       struct page *page;
-       page = container_of((unsigned long *)word, struct page, flags);
-       /*
-        * page_mapping() is being called without PG_locked held.
-        * Some knowledge of the state and use of the page is used to
-        * reduce the requirements down to a memory barrier.
-        * The danger here is of a stale page_mapping() return value
-        * indicating a struct address_space different from the one it's
-        * associated with when it is associated with one.
-        * After smp_mb(), it's either the correct page_mapping() for
-        * the page, or an old page_mapping() and the page's own
-        * page_mapping() has gone NULL.
-        * The ->sync_page() address_space operation must tolerate
-        * page_mapping() going NULL. By an amazing coincidence,
-        * this comes about because none of the users of the page
-        * in the ->sync_page() methods make essential use of the
-        * page_mapping(), merely passing the page down to the backing
-        * device's unplug functions when it's non-NULL, which in turn
-        * ignore it for all cases but swap, where only page_private(page) is
-        * of interest. When page_mapping() does go NULL, the entire
-        * call stack gracefully ignores the page and returns.
-        * -- wli
-        */
-       smp_mb();
-       mapping = page_mapping(page);
-       if (mapping && mapping->a_ops && mapping->a_ops->sync_page)
-               mapping->a_ops->sync_page(page);
        io_schedule();
        return 0;
  }
Simple merge
diff --cc mm/nommu.c
Simple merge
Simple merge
diff --cc mm/shmem.c
Simple merge
diff --cc mm/swapfile.c
Simple merge
diff --cc mm/vmscan.c
Simple merge