]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux: 2.6.32 - Adapt to writeback changes
authorMarc Dionne <marc.c.dionne@gmail.com>
Thu, 17 Sep 2009 20:57:52 +0000 (16:57 -0400)
committerRuss Allbery <rra@debian.org>
Wed, 4 Nov 2009 01:29:41 +0000 (17:29 -0800)
Adapt to the writeback changes in kernel 2.6.32
- Since we define our own backing_dev, it needs to be registered with
the writeback code and attached to the super_block.  Otherwise it
might get ignored when writeback is needed.
- Each backing_dev now gets its own kernel thread.  The name of the
thread is based on the registered name - the openafs one will appear
as "flush-afs".

Reviewed-on: http://gerrit.openafs.org/574
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Change-Id: Ib1403a65991fc7c2cb73099feef7e0dbec02543d
Reviewed-on: http://gerrit.openafs.org/755

acinclude.m4
src/afs/LINUX/osi_vfsops.c
src/cf/linux-test4.m4

index dda4ae1bbbe23ffe11497f2dfa7e5debc69170b9..03f10c8fc0a8c171c8afd3c09a4fa71f18dc18cb 100644 (file)
@@ -740,6 +740,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_DEFINES_FOR_EACH_PROCESS
                 LINUX_DEFINES_PREV_TASK
                 LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE
+                LINUX_FS_STRUCT_SUPER_BLOCK_HAS_S_BDI
                 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
                 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
                 LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
index 879a27009374ee94741a348dcb3d8ee0ea2d9502..2468a4539422c49fcc046ce55eb7a99563f9921d 100644 (file)
@@ -146,6 +146,11 @@ afs_read_super(struct super_block *sb, void *data, int silent)
 #if defined(HAVE_BDI_INIT)
     bdi_init(&afs_backing_dev_info);
 #endif
+#if defined (STRUCT_SUPER_BLOCK_HAS_S_BDI)
+    sb->s_bdi = &afs_backing_dev_info;
+    /* The name specified here will appear in the flushing thread name - flush-afs */
+    bdi_register(&afs_backing_dev_info, NULL, "afs");
+#endif
 #if defined(MAX_NON_LFS)
 #ifdef AFS_64BIT_CLIENT
 #if !defined(MAX_LFS_FILESIZE)
index e63c5a0c6679f1cde5cbc7634af3a7e3a43b9ca3..4499a66769a91cb6449e98288c569d91ffa4e9e9 100644 (file)
@@ -1172,3 +1172,16 @@ printk("%s", key_type_keyring.name);
     AC_DEFINE([EXPORTED_KEY_TYPE_KEYRING], 1, [define if key_type_keyring is exported])
   fi]) 
 
+AC_DEFUN([LINUX_FS_STRUCT_SUPER_BLOCK_HAS_S_BDI], [
+  AC_MSG_CHECKING([if struct super_block has s_bdi])
+  AC_CACHE_VAL([ac_cv_linux_struct_super_block_has_s_bdi], [
+    AC_TRY_KBUILD(
+[#include <linux/fs.h>],
+[struct super_block _sb;
+_sb.s_bdi= NULL;],
+      ac_cv_linux_struct_super_block_has_s_bdi=yes,
+      ac_cv_linux_struct_super_block_has_s_bdi=no)])
+  AC_MSG_RESULT($ac_cv_linux_struct_super_block_has_s_bdi)
+  if test "x$ac_cv_linux_struct_super_block_has_s_bdi" = "xyes"; then
+    AC_DEFINE([STRUCT_SUPER_BLOCK_HAS_S_BDI], 1, [define if struct super_block has an s_bdi member])
+  fi])