mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Add backing_device_info per-filesystem
For a long time now the kernel has been moving away from using the pdflush daemon to write 'old' dirty pages to disk. The primary reason for this is because the pdflush daemon is single threaded and can be a limiting factor for performance. Since pdflush sequentially walks the dirty inode list for each super block any delay in processing can slow down dirty page writeback for all filesystems. The replacement for pdflush is called bdi (backing device info). The bdi system involves creating a per-filesystem control structure each with its own private sets of queues to manage writeback. The advantage is greater parallelism which improves performance and prevents a single filesystem from slowing writeback to the others. For a long time both systems co-existed in the kernel so it wasn't strictly required to implement the bdi scheme. However, as of Linux 2.6.36 kernels the pdflush functionality has been retired. Since ZFS already bypasses the page cache for most I/O this is only an issue for mmap(2) writes which must go through the page cache. Even then adding this missing support for newer kernels was overlooked because there are other mechanisms which can trigger writeback. However, there is one critical case where not implementing the bdi functionality can cause problems. If an application handles a page fault it can enter the balance_dirty_pages() callpath. This will result in the application hanging until the number of dirty pages in the system drops below the dirty ratio. Without a registered backing_device_info for the filesystem the dirty pages will not get written out. Thus the application will hang. As mentioned above this was less of an issue with older kernels because pdflush would eventually write out the dirty pages. This change adds a backing_device_info structure to the zfs_sb_t which is already allocated per-super block. It is then registered when the filesystem mounted and unregistered on unmount. It will not be registered for mounted snapshots which are read-only. This change will result in flush-<pool> thread being dynamically created and destroyed per-mounted filesystem for writeback. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #174
This commit is contained in:
parent
3c0e5c0f45
commit
76659dc110
@ -56,6 +56,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
18
config/kernel-bdi.m4
Normal file
18
config/kernel-bdi.m4
Normal file
@ -0,0 +1,18 @@
|
||||
dnl #
|
||||
dnl # 2.6.32 API change
|
||||
dnl # Private backing_device_info interfaces available
|
||||
dnl #
|
||||
AC_DEFUN([ZFS_AC_KERNEL_BDI], [
|
||||
AC_MSG_CHECKING([whether super_block has s_bdi])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
struct super_block sb __attribute__ ((unused));
|
||||
sb.s_bdi = NULL;
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_BDI, 1, [struct super_block has s_bdi])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
@ -40,6 +40,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL_TRUNCATE_SETSIZE
|
||||
ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY
|
||||
ZFS_AC_KERNEL_MOUNT_NODEV
|
||||
ZFS_AC_KERNEL_BDI
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
|
132
configure
vendored
132
configure
vendored
@ -14686,6 +14686,72 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether super_block has s_bdi" >&5
|
||||
$as_echo_n "checking whether super_block has s_bdi... " >&6; }
|
||||
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.c
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
struct super_block sb __attribute__ ((unused));
|
||||
sb.s_bdi = NULL;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
|
||||
|
||||
rm -Rf build && mkdir -p build
|
||||
echo "obj-m := conftest.o" >build/Makefile
|
||||
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_BDI 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
|
||||
|
||||
fi
|
||||
|
||||
rm -Rf build
|
||||
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
@ -18956,6 +19022,72 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether super_block has s_bdi" >&5
|
||||
$as_echo_n "checking whether super_block has s_bdi... " >&6; }
|
||||
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.c
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
struct super_block sb __attribute__ ((unused));
|
||||
sb.s_bdi = NULL;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
|
||||
|
||||
rm -Rf build && mkdir -p build
|
||||
echo "obj-m := conftest.o" >build/Makefile
|
||||
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_BDI 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
|
||||
|
||||
fi
|
||||
|
||||
rm -Rf build
|
||||
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -44,6 +44,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -62,4 +62,23 @@ truncate_setsize(struct inode *ip, loff_t new)
|
||||
}
|
||||
#endif /* HAVE_TRUNCATE_SETSIZE */
|
||||
|
||||
/*
|
||||
* 2.6.32 API change,
|
||||
* Added backing_device_info (bdi) per super block interfaces. When
|
||||
* available a bdi must be configured when using a non-device backed
|
||||
* filesystem for proper writeback. It's safe to leave this code
|
||||
* dormant for kernels which only support pdflush and not bdi.
|
||||
*/
|
||||
#ifdef HAVE_BDI
|
||||
#define bdi_get_sb(sb) (sb->s_bdi)
|
||||
#define bdi_put_sb(sb, bdi) (sb->s_bdi = bdi)
|
||||
#else
|
||||
#define bdi_init(bdi) (0)
|
||||
#define bdi_destroy(bdi) (0)
|
||||
#define bdi_register(bdi, parent, fmt, args) (0)
|
||||
#define bdi_unregister(bdi) (0)
|
||||
#define bdi_get_sb(sb) (0)
|
||||
#define bdi_put_sb(sb, bdi) (0)
|
||||
#endif /* HAVE_BDI */
|
||||
|
||||
#endif /* _ZFS_VFS_H */
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ struct znode;
|
||||
|
||||
typedef struct zfs_sb {
|
||||
struct super_block *z_sb; /* generic super_block */
|
||||
struct backing_dev_info z_bdi; /* generic backing dev info */
|
||||
struct zfs_sb *z_parent; /* parent fs */
|
||||
objset_t *z_os; /* objset reference */
|
||||
uint64_t z_flags; /* super_block flags */
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -43,6 +43,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -41,6 +41,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -600,6 +600,12 @@ zfs_sb_create(const char *osname, zfs_sb_t **zsbp)
|
||||
zsb->z_show_ctldir = ZFS_SNAPDIR_VISIBLE;
|
||||
zsb->z_os = os;
|
||||
|
||||
error = -bdi_init(&zsb->z_bdi);
|
||||
if (error) {
|
||||
kmem_free(zsb, sizeof (zfs_sb_t));
|
||||
return (error);
|
||||
}
|
||||
|
||||
error = zfs_get_zplprop(os, ZFS_PROP_VERSION, &zsb->z_version);
|
||||
if (error) {
|
||||
goto out;
|
||||
@ -799,6 +805,7 @@ zfs_sb_free(zfs_sb_t *zsb)
|
||||
|
||||
zfs_fuid_destroy(zsb);
|
||||
|
||||
bdi_destroy(&zsb->z_bdi);
|
||||
mutex_destroy(&zsb->z_znodes_lock);
|
||||
mutex_destroy(&zsb->z_lock);
|
||||
list_destroy(&zsb->z_all_znodes);
|
||||
@ -1077,6 +1084,10 @@ zfsvfs_teardown(zfs_sb_t *zsb, boolean_t unmounting)
|
||||
return (0);
|
||||
}
|
||||
|
||||
#ifdef HAVE_BDI
|
||||
static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0);
|
||||
#endif /* HAVE_BDI */
|
||||
|
||||
int
|
||||
zfs_domount(struct super_block *sb, void *data, int silent)
|
||||
{
|
||||
@ -1102,6 +1113,7 @@ zfs_domount(struct super_block *sb, void *data, int silent)
|
||||
sb->s_time_gran = 1;
|
||||
sb->s_blocksize = recordsize;
|
||||
sb->s_blocksize_bits = ilog2(recordsize);
|
||||
bdi_put_sb(sb, NULL);
|
||||
|
||||
/* Set callback operations for the file system. */
|
||||
sb->s_op = &zpl_super_operations;
|
||||
@ -1126,6 +1138,16 @@ zfs_domount(struct super_block *sb, void *data, int silent)
|
||||
dmu_objset_set_user(zsb->z_os, zsb);
|
||||
mutex_exit(&zsb->z_os->os_user_ptr_lock);
|
||||
} else {
|
||||
/* Disable Linux read-ahead handled by lower layers */
|
||||
zsb->z_bdi.ra_pages = 0;
|
||||
|
||||
error = -bdi_register(&zsb->z_bdi, NULL, "zfs-%d",
|
||||
atomic_long_inc_return(&bdi_seq));
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
bdi_put_sb(sb, &zsb->z_bdi);
|
||||
|
||||
error = zfs_sb_setup(zsb, B_TRUE);
|
||||
#ifdef HAVE_SNAPSHOT
|
||||
(void) zfs_snap_create(zsb);
|
||||
@ -1166,6 +1188,11 @@ zfs_umount(struct super_block *sb)
|
||||
VERIFY(zfsvfs_teardown(zsb, B_TRUE) == 0);
|
||||
os = zsb->z_os;
|
||||
|
||||
if (bdi_get_sb(sb)) {
|
||||
bdi_unregister(bdi_get_sb(sb));
|
||||
bdi_put_sb(sb, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* z_os will be NULL if there was an error in
|
||||
* attempting to reopen zsb.
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -42,6 +42,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/always-no-unused-but-set-variable.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-block-device-operations.m4 \
|
||||
$(top_srcdir)/config/kernel-bdev-logical-size.m4 \
|
||||
$(top_srcdir)/config/kernel-bdi.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-empty-barrier.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \
|
||||
$(top_srcdir)/config/kernel-bio-failfast.m4 \
|
||||
|
@ -18,6 +18,9 @@
|
||||
/* bdev_logical_block_size() is available */
|
||||
#undef HAVE_BDEV_LOGICAL_BLOCK_SIZE
|
||||
|
||||
/* struct super_block has s_bdi */
|
||||
#undef HAVE_BDI
|
||||
|
||||
/* bio_empy_barrier() is defined */
|
||||
#undef HAVE_BIO_EMPTY_BARRIER
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user