From bb2af00d80ffa64334f07bb28d15f8e55a34bdbe Mon Sep 17 00:00:00 2001 From: linjc Date: Tue, 21 Jun 2016 11:05:25 +0800 Subject: [PATCH] Kernel->defconfig:ubuntu support nfs --- .../arch/arm/configs/firefly-rk3288-linux_defconfig | 7 +++++++ .../configs/firefly-rk3288-reload-linux_defconfig | 7 +++++++ kernel/fs/inode.c | 13 +++++++++++++ kernel/fs/nfs/direct.c | 1 + 4 files changed, 28 insertions(+) diff --git a/kernel/arch/arm/configs/firefly-rk3288-linux_defconfig b/kernel/arch/arm/configs/firefly-rk3288-linux_defconfig index 8cda2314df..c0995b2bac 100644 --- a/kernel/arch/arm/configs/firefly-rk3288-linux_defconfig +++ b/kernel/arch/arm/configs/firefly-rk3288-linux_defconfig @@ -602,6 +602,13 @@ CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y # CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFSD=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y CONFIG_CIFS=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y diff --git a/kernel/arch/arm/configs/firefly-rk3288-reload-linux_defconfig b/kernel/arch/arm/configs/firefly-rk3288-reload-linux_defconfig index 8cda2314df..c0995b2bac 100644 --- a/kernel/arch/arm/configs/firefly-rk3288-reload-linux_defconfig +++ b/kernel/arch/arm/configs/firefly-rk3288-reload-linux_defconfig @@ -602,6 +602,13 @@ CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y # CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFSD=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y CONFIG_CIFS=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y diff --git a/kernel/fs/inode.c b/kernel/fs/inode.c index 8b85f856ca..1b300a06b8 100644 --- a/kernel/fs/inode.c +++ b/kernel/fs/inode.c @@ -1887,3 +1887,16 @@ void inode_dio_wait(struct inode *inode) } EXPORT_SYMBOL(inode_dio_wait); +/* + * inode_dio_done - signal finish of a direct I/O requests + * @inode: inode the direct I/O happens on + * + * This is called once we've finished processing a direct I/O request, + * and is used to wake up callers waiting for direct I/O to be quiesced. + */ +void inode_dio_done(struct inode *inode) +{ + if (atomic_dec_and_test(&inode->i_dio_count)) + wake_up_bit(&inode->i_state, __I_DIO_WAKEUP); +} +EXPORT_SYMBOL(inode_dio_done); diff --git a/kernel/fs/nfs/direct.c b/kernel/fs/nfs/direct.c index 615c5079db..a0b7d6b7f0 100644 --- a/kernel/fs/nfs/direct.c +++ b/kernel/fs/nfs/direct.c @@ -62,6 +62,7 @@ #define NFSDBG_FACILITY NFSDBG_VFS static struct kmem_cache *nfs_direct_cachep; +extern void inode_dio_done(struct inode *inode); /* * This represents a set of asynchronous requests that we're waiting on