]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
LINUX: Switch to new bdi api for 4.12.
authorJoe Gorse <jhgorse@gmail.com>
Tue, 16 May 2017 07:29:30 +0000 (07:29 +0000)
committerStephan Wiesand <stephan.wiesand@desy.de>
Fri, 2 Jun 2017 13:43:36 +0000 (09:43 -0400)
super_setup_bdi() dynamically allocates backing_dev_info structures
for filesystems and cleans them up on superblock destruction.

Appears with Linux commit fca39346a55bb7196888ffc77d9e3557340d1d0b
Author: Jan Kara <jack@suse.cz>
Date:   Wed Apr 12 12:24:28 2017 +0200

Reviewed-on: https://gerrit.openafs.org/12614
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit 63e530e7df0b8013bcc4421b0bba558d4f1d2d57)

Change-Id: I48a49ee8852bf842c24e7df0609fe2184bf45d90
Reviewed-on: https://gerrit.openafs.org/12626
Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
acinclude.m4
src/afs/LINUX/osi_vfsops.c

index 464f356cb71bcbf9525ee3006eae4c83e51a4193..ee40b4109a3bb2b4745eaa33043e104ceab54ef3 100644 (file)
@@ -944,6 +944,10 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                  AC_CHECK_LINUX_FUNC([bdi_init],
                                     [#include <linux/backing-dev.h>],
                                     [bdi_init(NULL);])
+                 AC_CHECK_LINUX_FUNC([super_setup_bdi],
+                                     [#include <linux/backing-dev.h>],
+                                     [struct super_block *sb;
+                                     super_setup_bdi(sb);])
                  AC_CHECK_LINUX_FUNC([PageChecked],
                                     [#include <linux/mm.h>
 #include <linux/page-flags.h>],
index c2226684b3b766d88fb96b57e8e8e8af5f9b552e..e14934139aa6d896caf95a613fd2c8e899d3ea5d 100644 (file)
@@ -113,7 +113,13 @@ afs_fill_super(struct super_block *sb, void *data, int silent)
 #if defined(STRUCT_SUPER_BLOCK_HAS_S_D_OP)
     sb->s_d_op = &afs_dentry_operations;
 #endif
-
+#if defined(HAVE_LINUX_SUPER_SETUP_BDI)
+    code = super_setup_bdi(sb);
+    if (code)
+        goto out;
+    sb->s_bdi->name = "openafs";
+    sb->s_bdi->ra_pages = 32;
+#else
     /* used for inodes backing_dev_info field, also */
     afs_backing_dev_info = kmalloc(sizeof(struct backing_dev_info), GFP_NOFS);
     memset(afs_backing_dev_info, 0, sizeof(struct backing_dev_info));
@@ -132,6 +138,7 @@ afs_fill_super(struct super_block *sb, void *data, int silent)
     /* The name specified here will appear in the flushing thread name - flush-afs */
     bdi_register(afs_backing_dev_info, NULL, "afs");
 #endif
+#endif /* HAVE_LINUX_SUPER_SETUP_BDI */
 #if !defined(AFS_NONFSTRANS)
     sb->s_export_op = &afs_export_ops;
 #endif
@@ -158,7 +165,9 @@ out:
        if (bdi_init_done)
            bdi_destroy(afs_backing_dev_info);
 #endif
+#if !defined(HAVE_LINUX_SUPER_SETUP_BDI)
        kfree(afs_backing_dev_info);
+#endif
         module_put(THIS_MODULE);
     }