aufs: bugfix, Fix unmount to properly free anonymous block devices

(Added by quoting thomasco's mail)
After doing about 2^20 aufs mount/unmount cycles, further mounts of any
none type filesystem (e.g., aufs, tmpfs, etc) become impossible with an
error reading &quot;mount table full&quot; (EMFILE). The root cause
seems to be that aufs_kill_sb calls generic_shutdown_super instead of
kill_anon_super, skipping free_anon_bdev, leaking the dummy device that
had been mounted, and causing the dummy device table (which allows 2^20
entries) to fill up.

This behavior can be reproduced using [this
program](https://gist.github.com/EvanKrall/9267361).
You can merge this Pull Request by running:

  git pull https://github.com/thomasco/aufs3-linux aufs3.x-rcN

Or you can view, comment on it, or merge it online at:

  https://github.com/sfjro/aufs3-linux/pull/1

(this is a patch by jro to reproduce easily)
diff --git a/fs/super.c b/fs/super.c
index 7465d43..ad50494 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -819,13 +819,15 @@ void emergency_remount(void)

 static DEFINE_IDA(unnamed_dev_ida);
 static DEFINE_SPINLOCK(unnamed_dev_lock);/* protects the above */
-static int unnamed_dev_start = 0; /* don't bother trying below it */
+//static int unnamed_dev_start = 0; /* don't bother trying below it */
+static int unnamed_dev_start = 0x07fffffff - 128;

 int get_anon_bdev(dev_t *p)
 {
 	int dev;
 	int error;

+	pr_info_once("aufs test: unnamed_dev_start = 0x%x\n", unnamed_dev_start);
  retry:
 	if (ida_pre_get(&unnamed_dev_ida, GFP_ATOMIC) == 0)
 		return -ENOMEM;

Original-repositry: https://github.com/thomasco/aufs3-linux
Original-commit: 3039ad6f1f9041c60d61977b602a76136f29f1ac
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com>
Merge branch 'aufs3.9/00base' into aufs3.10/00base
Merge branch 'aufs3.10/00base' into aufs3.11/00base
Merge branch 'aufs3.11/00base' into aufs3.12/00base
Merge remote-tracking branch 'aufs3-standalone/aufs3.9/00base' into aufs3.9/10static
Merge branch 'aufs3.9/10static' into aufs3.9/11proc_map
Merge branch 'aufs3.9/10static' into aufs3.10/10static
Merge remote-tracking branch 'aufs3-standalone/aufs3.10/00base' into aufs3.10/10static
Merge branch 'aufs3.9/11proc_map' into aufs3.10/11proc_map
Merge branch 'aufs3.10/10static' into aufs3.10/11proc_map
Merge branch 'aufs3.10/10static' into aufs3.11/10static
Merge remote-tracking branch 'aufs3-standalone/aufs3.11/00base' into aufs3.11/10static
Merge branch 'aufs3.10/11proc_map' into aufs3.11/11proc_map
Merge branch 'aufs3.11/10static' into aufs3.11/11proc_map
Merge branch 'aufs3.11/10static' into aufs3.12/10static
Merge remote-tracking branch 'aufs3-standalone/aufs3.12/00base' into aufs3.12/10static
Merge branch 'aufs3.11/11proc_map' into aufs3.12/11proc_map
Merge branch 'aufs3.12/10static' into aufs3.12/11proc_map
Merge branch 'aufs3.12/11proc_map' into aufs3.12/18public