]> 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)
committerDerrick Brashear <shadow|account-1000005@unknown>
Fri, 30 Oct 2009 12:21:46 +0000 (05:21 -0700)
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 de5e108c0374466de16b7eb0e27456a66a7fc947..56c65d69f4c087b88235abd8a88bb8680f190467 100644 (file)
@@ -744,6 +744,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 ff408e9c360118c199d7655e2d73a49cdf342d2e..545b9fa47f8e05148973dabb0018bf2e98857ece 100644 (file)
@@ -144,6 +144,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])