aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/Kconfig21
-rw-r--r--fs/Makefile2
-rw-r--r--fs/ext2/Kconfig11
-rw-r--r--fs/ext2/ext2.h2
-rw-r--r--fs/ext2/file.c4
-rw-r--r--fs/ext2/super.c4
-rw-r--r--include/linux/fs.h2
-rwxr-xr-xscripts/diffconfig1
8 files changed, 21 insertions, 26 deletions
diff --git a/fs/Kconfig b/fs/Kconfig
index a6bb530b1ec5..5331497d5b25 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -13,13 +13,6 @@ if BLOCK
13source "fs/ext2/Kconfig" 13source "fs/ext2/Kconfig"
14source "fs/ext3/Kconfig" 14source "fs/ext3/Kconfig"
15source "fs/ext4/Kconfig" 15source "fs/ext4/Kconfig"
16
17config FS_XIP
18# execute in place
19 bool
20 depends on EXT2_FS_XIP
21 default y
22
23source "fs/jbd/Kconfig" 16source "fs/jbd/Kconfig"
24source "fs/jbd2/Kconfig" 17source "fs/jbd2/Kconfig"
25 18
@@ -40,6 +33,20 @@ source "fs/ocfs2/Kconfig"
40source "fs/btrfs/Kconfig" 33source "fs/btrfs/Kconfig"
41source "fs/nilfs2/Kconfig" 34source "fs/nilfs2/Kconfig"
42 35
36config FS_DAX
37 bool "Direct Access (DAX) support"
38 depends on MMU
39 help
40 Direct Access (DAX) can be used on memory-backed block devices.
41 If the block device supports DAX and the filesystem supports DAX,
42 then you can avoid using the pagecache to buffer I/Os. Turning
43 on this option will compile in support for DAX; you will need to
44 mount the filesystem using the -o dax option.
45
46 If you do not have a block device that is capable of using this,
47 or if unsure, say N. Saying Y will increase the size of the kernel
48 by about 5kB.
49
43endif # BLOCK 50endif # BLOCK
44 51
45# Posix ACL utility routines 52# Posix ACL utility routines
diff --git a/fs/Makefile b/fs/Makefile
index 0534444e257c..0f4635f7c49c 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -28,7 +28,7 @@ obj-$(CONFIG_SIGNALFD) += signalfd.o
28obj-$(CONFIG_TIMERFD) += timerfd.o 28obj-$(CONFIG_TIMERFD) += timerfd.o
29obj-$(CONFIG_EVENTFD) += eventfd.o 29obj-$(CONFIG_EVENTFD) += eventfd.o
30obj-$(CONFIG_AIO) += aio.o 30obj-$(CONFIG_AIO) += aio.o
31obj-$(CONFIG_FS_XIP) += dax.o 31obj-$(CONFIG_FS_DAX) += dax.o
32obj-$(CONFIG_FILE_LOCKING) += locks.o 32obj-$(CONFIG_FILE_LOCKING) += locks.o
33obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o 33obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o
34obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o 34obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
diff --git a/fs/ext2/Kconfig b/fs/ext2/Kconfig
index 14a6780fd034..c634874e12d9 100644
--- a/fs/ext2/Kconfig
+++ b/fs/ext2/Kconfig
@@ -42,14 +42,3 @@ config EXT2_FS_SECURITY
42 42
43 If you are not using a security module that requires using 43 If you are not using a security module that requires using
44 extended attributes for file security labels, say N. 44 extended attributes for file security labels, say N.
45
46config EXT2_FS_XIP
47 bool "Ext2 execute in place support"
48 depends on EXT2_FS && MMU
49 help
50 Execute in place can be used on memory-backed block devices. If you
51 enable this option, you can select to mount block devices which are
52 capable of this feature without using the page cache.
53
54 If you do not use a block device that is capable of using this,
55 or if unsure, say N.
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 30604c4d70e6..6854038c09ae 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -380,7 +380,7 @@ struct ext2_inode {
380#define EXT2_MOUNT_NO_UID32 0x000200 /* Disable 32-bit UIDs */ 380#define EXT2_MOUNT_NO_UID32 0x000200 /* Disable 32-bit UIDs */
381#define EXT2_MOUNT_XATTR_USER 0x004000 /* Extended user attributes */ 381#define EXT2_MOUNT_XATTR_USER 0x004000 /* Extended user attributes */
382#define EXT2_MOUNT_POSIX_ACL 0x008000 /* POSIX Access Control Lists */ 382#define EXT2_MOUNT_POSIX_ACL 0x008000 /* POSIX Access Control Lists */
383#ifdef CONFIG_FS_XIP 383#ifdef CONFIG_FS_DAX
384#define EXT2_MOUNT_XIP 0x010000 /* Execute in place */ 384#define EXT2_MOUNT_XIP 0x010000 /* Execute in place */
385#else 385#else
386#define EXT2_MOUNT_XIP 0 386#define EXT2_MOUNT_XIP 0
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index a61c93fd9dce..de8174d1e973 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -25,7 +25,7 @@
25#include "xattr.h" 25#include "xattr.h"
26#include "acl.h" 26#include "acl.h"
27 27
28#ifdef CONFIG_EXT2_FS_XIP 28#ifdef CONFIG_FS_DAX
29static int ext2_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 29static int ext2_dax_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
30{ 30{
31 return dax_fault(vma, vmf, ext2_get_block); 31 return dax_fault(vma, vmf, ext2_get_block);
@@ -108,7 +108,7 @@ const struct file_operations ext2_file_operations = {
108 .splice_write = iter_file_splice_write, 108 .splice_write = iter_file_splice_write,
109}; 109};
110 110
111#ifdef CONFIG_EXT2_FS_XIP 111#ifdef CONFIG_FS_DAX
112const struct file_operations ext2_xip_file_operations = { 112const struct file_operations ext2_xip_file_operations = {
113 .llseek = generic_file_llseek, 113 .llseek = generic_file_llseek,
114 .read = new_sync_read, 114 .read = new_sync_read,
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 50342583db1f..5f029d8c3a02 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -291,7 +291,7 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root)
291 seq_puts(seq, ",grpquota"); 291 seq_puts(seq, ",grpquota");
292#endif 292#endif
293 293
294#if defined(CONFIG_EXT2_FS_XIP) 294#ifdef CONFIG_FS_DAX
295 if (sbi->s_mount_opt & EXT2_MOUNT_XIP) 295 if (sbi->s_mount_opt & EXT2_MOUNT_XIP)
296 seq_puts(seq, ",xip"); 296 seq_puts(seq, ",xip");
297#endif 297#endif
@@ -558,7 +558,7 @@ static int parse_options(char *options, struct super_block *sb)
558 break; 558 break;
559#endif 559#endif
560 case Opt_xip: 560 case Opt_xip:
561#ifdef CONFIG_EXT2_FS_XIP 561#ifdef CONFIG_FS_DAX
562 set_opt (sbi->s_mount_opt, XIP); 562 set_opt (sbi->s_mount_opt, XIP);
563#else 563#else
564 ext2_msg(sb, KERN_INFO, "xip option not supported"); 564 ext2_msg(sb, KERN_INFO, "xip option not supported");
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 9772d655f444..d46f8fe6a0ea 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1676,7 +1676,7 @@ struct super_operations {
1676#define S_IMA 1024 /* Inode has an associated IMA struct */ 1676#define S_IMA 1024 /* Inode has an associated IMA struct */
1677#define S_AUTOMOUNT 2048 /* Automount/referral quasi-directory */ 1677#define S_AUTOMOUNT 2048 /* Automount/referral quasi-directory */
1678#define S_NOSEC 4096 /* no suid or xattr security attributes */ 1678#define S_NOSEC 4096 /* no suid or xattr security attributes */
1679#ifdef CONFIG_FS_XIP 1679#ifdef CONFIG_FS_DAX
1680#define S_DAX 8192 /* Direct Access, avoiding the page cache */ 1680#define S_DAX 8192 /* Direct Access, avoiding the page cache */
1681#else 1681#else
1682#define S_DAX 0 /* Make all the DAX code disappear */ 1682#define S_DAX 0 /* Make all the DAX code disappear */
diff --git a/scripts/diffconfig b/scripts/diffconfig
index 6d672836e187..0db267d0adc9 100755
--- a/scripts/diffconfig
+++ b/scripts/diffconfig
@@ -28,7 +28,6 @@ If no config files are specified, .config and .config.old are used.
28Example usage: 28Example usage:
29 $ diffconfig .config config-with-some-changes 29 $ diffconfig .config config-with-some-changes
30-EXT2_FS_XATTR n 30-EXT2_FS_XATTR n
31-EXT2_FS_XIP n
32 CRAMFS n -> y 31 CRAMFS n -> y
33 EXT2_FS y -> n 32 EXT2_FS y -> n
34 LOG_BUF_SHIFT 14 -> 16 33 LOG_BUF_SHIFT 14 -> 16