From: Marc Dionne Date: Thu, 17 Sep 2009 20:57:52 +0000 (-0400) Subject: Linux: 2.6.32 - Adapt to writeback changes X-Git-Tag: debian/1.4.11+dfsg-5~10 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=1b7ad28e9d7bab3ff117cda78c3c22a97500b4d4;p=packages%2Fo%2Fopenafs.git Linux: 2.6.32 - Adapt to writeback changes 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 Reviewed-by: Derrick Brashear Change-Id: Ib1403a65991fc7c2cb73099feef7e0dbec02543d Reviewed-on: http://gerrit.openafs.org/755 --- diff --git a/acinclude.m4 b/acinclude.m4 index dda4ae1bb..03f10c8fc 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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 diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c index 879a27009..2468a4539 100644 --- a/src/afs/LINUX/osi_vfsops.c +++ b/src/afs/LINUX/osi_vfsops.c @@ -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) diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index e63c5a0c6..4499a6676 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -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 ], +[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])