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>],
#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 = kzalloc(sizeof(struct backing_dev_info), GFP_NOFS);
#if defined(HAVE_LINUX_BDI_INIT)
/* 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
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);
}