All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig
@ 2015-07-01  5:29 Dongsheng Yang
  2015-07-01  5:30 ` [PATCH 2/2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs Dongsheng Yang
  2015-07-30 16:47 ` [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Brian Norris
  0 siblings, 2 replies; 6+ messages in thread
From: Dongsheng Yang @ 2015-07-01  5:29 UTC (permalink / raw)
  To: richard.weinberger, dedekind1; +Cc: linux-mtd, Dongsheng Yang

If unsure we would say 'N' rather than 'Y'.

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
 fs/ubifs/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
index ba66d50..f9aaad1 100644
--- a/fs/ubifs/Kconfig
+++ b/fs/ubifs/Kconfig
@@ -27,11 +27,11 @@ config UBIFS_FS_LZO
 	default y
 	help
 	   LZO compressor is generally faster than zlib but compresses worse.
-	   Say 'Y' if unsure.
+	   Say 'N' if unsure.
 
 config UBIFS_FS_ZLIB
 	bool "ZLIB compression support" if UBIFS_FS_ADVANCED_COMPR
 	depends on UBIFS_FS
 	default y
 	help
-	  Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
+	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs
  2015-07-01  5:29 [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Dongsheng Yang
@ 2015-07-01  5:30 ` Dongsheng Yang
  2015-07-20  7:35   ` [PATCH v2] " Dongsheng Yang
  2015-07-30 16:47 ` [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Brian Norris
  1 sibling, 1 reply; 6+ messages in thread
From: Dongsheng Yang @ 2015-07-01  5:30 UTC (permalink / raw)
  To: richard.weinberger, dedekind1; +Cc: linux-mtd, Dongsheng Yang

To make ubifs support atime flexily, this commit introduces
a Kconfig option named as UBIFS_ATIME_SUPPORT.

With UBIFS_ATIME_SUPPORT=n:
	ubifs keeps the full compatibility to no_atime from
the start of ubifs.
=================UBIFS_ATIME_SUPPORT=n=======================
-o - no atime
-o atime - no atime
-o noatime - no atime
-o relatime - no atime
-o strictatime - no atime
-o lazyatime - no atime

With UBIFS_ATIME_SUPPORT=y:
	ubifs supports the atime same with other main stream
file systems.
=================UBIFS_ATIME_SUPPORT=y=======================
-o - default behavior (relatime currently)
-o atime - atime support
-o noatime - no atime support
-o relatime - relative atime support
-o strictatime - strict atime support
-o lazyatime - lazy atime support

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
 fs/ubifs/Kconfig | 11 ++++++++++
 fs/ubifs/file.c  |  3 +++
 fs/ubifs/super.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 75 insertions(+), 3 deletions(-)

diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
index f9aaad1..44474e7 100644
--- a/fs/ubifs/Kconfig
+++ b/fs/ubifs/Kconfig
@@ -35,3 +35,14 @@ config UBIFS_FS_ZLIB
 	default y
 	help
 	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.
+
+config UBIFS_ATIME_SUPPORT
+	bool "Access time support" if UBIFS_FS
+	depends on UBIFS_FS
+	default n
+	help
+	  This option allows ubifs to support atime. -o strictatime is harmful to
+	  your flash, we don't suggest it. But relatime and lazytime are much
+	  better.
+
+	  If unsure, say 'N'
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 35efc10..93bbb61 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1546,6 +1546,9 @@ static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma)
 	if (err)
 		return err;
 	vma->vm_ops = &ubifs_file_vm_ops;
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	file_accessed(file);
+#endif
 	return 0;
 }
 
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 75e6f04..76f51e6 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -128,7 +128,10 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)
 	if (err)
 		goto out_ino;
 
-	inode->i_flags |= (S_NOCMTIME | S_NOATIME);
+	inode->i_flags |= S_NOCMTIME;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+	inode->i_flags |= S_NOATIME;
+#endif
 	set_nlink(inode, le32_to_cpu(ino->nlink));
 	i_uid_write(inode, le32_to_cpu(ino->uid));
 	i_gid_write(inode, le32_to_cpu(ino->gid));
@@ -378,16 +381,61 @@ done:
 	clear_inode(inode);
 }
 
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+/*
+ * There is only one possible caller of ubifs_dirty_inode without holding
+ * ui->ui_mutex, file_accessed. We are going to support atime if user
+ * set UBIFS_ATIME_SUPPORT=y in Kconfig. In that case, ubifs_dirty_inode
+ * need to lock ui->ui_mutex by itself and do a budget by itself.
+ */
 static void ubifs_dirty_inode(struct inode *inode, int flags)
 {
 	struct ubifs_inode *ui = ubifs_inode(inode);
+	int locked = mutex_is_locked(&ui->ui_mutex);
+	struct ubifs_info *c = inode->i_sb->s_fs_info;
+	int ret = 0;
+
+	if (!locked)
+		mutex_lock(&ui->ui_mutex);
 
-	ubifs_assert(mutex_is_locked(&ui->ui_mutex));
 	if (!ui->dirty) {
+		if (!locked) {
+			/*
+			 * It's a little tricky here, there is only one
+			 * possible user of ubifs_dirty_inode did not do
+			 * a budget for this inode. At the same time, this
+			 * user is not holding the ui->ui_mutex. Then if
+			 * we found ui->ui_mutex is not locked, we can say:
+			 * we need to do a budget in ubifs_dirty_inode here.
+			 */
+			struct ubifs_budget_req req = { .dirtied_ino = 1,
+					.dirtied_ino_d = ALIGN(ui->data_len, 8) };
+
+			ret = ubifs_budget_space(c, &req);
+			if (ret)
+				goto out;
+		}
 		ui->dirty = 1;
 		dbg_gen("inode %lu",  inode->i_ino);
 	}
+
+out:
+	if (!locked)
+		mutex_unlock(&ui->ui_mutex);
+	return;
+}
+#else
+static void ubifs_dirty_inode(struct inode *inode, int flags)
+{
+        struct ubifs_inode *ui = ubifs_inode(inode);
+
+        ubifs_assert(mutex_is_locked(&ui->ui_mutex));
+        if (!ui->dirty) {
+                ui->dirty = 1;
+                dbg_gen("inode %lu",  inode->i_ino);
+        }
 }
+#endif
 
 static int ubifs_statfs(struct dentry *dentry, struct kstatfs *buf)
 {
@@ -2138,7 +2186,17 @@ static struct dentry *ubifs_mount(struct file_system_type *fs_type, int flags,
 		if (err)
 			goto out_deact;
 		/* We do not support atime */
-		sb->s_flags |= MS_ACTIVE | MS_NOATIME;
+		sb->s_flags |= MS_ACTIVE;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+		sb->s_flags |= MS_NOATIME;
+#else
+		ubifs_warn(c, "************WARNING START****************");
+		ubifs_warn(c, "Ubifs is supporting atime now, that would");
+		ubifs_warn(c, "probably damage your flash. If you are not");
+		ubifs_warn(c, "sure about it, please set UBIFS_ATIME_SUPPORT");
+		ubifs_warn(c, "to 'N'.");
+		ubifs_warn(c, "************WARNING END******************");
+#endif
 	}
 
 	/* 'fill_super()' opens ubi again so we must close it here */
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs
  2015-07-01  5:30 ` [PATCH 2/2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs Dongsheng Yang
@ 2015-07-20  7:35   ` Dongsheng Yang
  2015-07-30  5:43     ` [PATCH] " Dongsheng Yang
  0 siblings, 1 reply; 6+ messages in thread
From: Dongsheng Yang @ 2015-07-20  7:35 UTC (permalink / raw)
  To: richard.weinberger, dedekind1; +Cc: linux-mtd, Dongsheng Yang

To make ubifs support atime flexily, this commit introduces
a Kconfig option named as UBIFS_ATIME_SUPPORT.

With UBIFS_ATIME_SUPPORT=n:
	ubifs keeps the full compatibility to no_atime from
the start of ubifs.
=================UBIFS_ATIME_SUPPORT=n=======================
-o - no atime
-o atime - no atime
-o noatime - no atime
-o relatime - no atime
-o strictatime - no atime
-o lazyatime - no atime

With UBIFS_ATIME_SUPPORT=y:
	ubifs supports the atime same with other main stream
file systems.
=================UBIFS_ATIME_SUPPORT=y=======================
-o - default behavior (relatime currently)
-o atime - atime support
-o noatime - no atime support
-o relatime - relative atime support
-o strictatime - strict atime support
-o lazyatime - lazy atime support

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
changelog:
	v1: remove the new version of ubifs_dirty_inode()
which was implemented with a conditional locking.

 fs/ubifs/Kconfig | 11 +++++++++++
 fs/ubifs/file.c  | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/ubifs/super.c | 19 ++++++++++++++++---
 3 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
index f9aaad1..44474e7 100644
--- a/fs/ubifs/Kconfig
+++ b/fs/ubifs/Kconfig
@@ -35,3 +35,14 @@ config UBIFS_FS_ZLIB
 	default y
 	help
 	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.
+
+config UBIFS_ATIME_SUPPORT
+	bool "Access time support" if UBIFS_FS
+	depends on UBIFS_FS
+	default n
+	help
+	  This option allows ubifs to support atime. -o strictatime is harmful to
+	  your flash, we don't suggest it. But relatime and lazytime are much
+	  better.
+
+	  If unsure, say 'N'
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 35efc10..27de484 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1364,6 +1364,47 @@ static inline int mctime_update_needed(const struct inode *inode,
 }
 
 /**
+ * ubifs_update_time - update time of inode.
+ * @inode: inode to update
+ *
+ * This function updates time of the inode.
+ */
+static int ubifs_update_time(struct inode *inode, struct timespec *time,
+			     int flags)
+{
+	struct ubifs_inode *ui = ubifs_inode(inode);
+	struct ubifs_info *c = inode->i_sb->s_fs_info;
+	struct ubifs_budget_req req = { .dirtied_ino = 1,
+			.dirtied_ino_d = ALIGN(ui->data_len, 8) };
+	int iflags = I_DIRTY_TIME;
+	int err, release;
+
+	err = ubifs_budget_space(c, &req);
+	if (err)
+		return err;
+
+	mutex_lock(&ui->ui_mutex);
+	if (flags & S_ATIME)
+		inode->i_atime = *time;
+	if (flags & S_VERSION)
+		inode_inc_iversion(inode);
+	if (flags & S_CTIME)
+		inode->i_ctime = *time;
+	if (flags & S_MTIME)
+		inode->i_mtime = *time;
+
+	if (!(inode->i_sb->s_flags & MS_LAZYTIME) || (flags & S_VERSION))
+		iflags |= I_DIRTY_SYNC;
+
+	release = ui->dirty;
+	__mark_inode_dirty(inode, iflags);
+	mutex_unlock(&ui->ui_mutex);
+	if (release)
+		ubifs_release_budget(c, &req);
+	return 0;
+}
+
+/**
  * update_ctime - update mtime and ctime of an inode.
  * @inode: inode to update
  *
@@ -1546,6 +1587,9 @@ static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma)
 	if (err)
 		return err;
 	vma->vm_ops = &ubifs_file_vm_ops;
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	file_accessed(file);
+#endif
 	return 0;
 }
 
@@ -1566,6 +1610,9 @@ const struct inode_operations ubifs_file_inode_operations = {
 	.getxattr    = ubifs_getxattr,
 	.listxattr   = ubifs_listxattr,
 	.removexattr = ubifs_removexattr,
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	.update_time = ubifs_update_time,
+#endif
 };
 
 const struct inode_operations ubifs_symlink_inode_operations = {
@@ -1577,6 +1624,9 @@ const struct inode_operations ubifs_symlink_inode_operations = {
 	.getxattr    = ubifs_getxattr,
 	.listxattr   = ubifs_listxattr,
 	.removexattr = ubifs_removexattr,
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	.update_time = ubifs_update_time,
+#endif
 };
 
 const struct file_operations ubifs_file_operations = {
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 75e6f04..c643261 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -128,7 +128,10 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)
 	if (err)
 		goto out_ino;
 
-	inode->i_flags |= (S_NOCMTIME | S_NOATIME);
+	inode->i_flags |= S_NOCMTIME;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+	inode->i_flags |= S_NOATIME;
+#endif
 	set_nlink(inode, le32_to_cpu(ino->nlink));
 	i_uid_write(inode, le32_to_cpu(ino->uid));
 	i_gid_write(inode, le32_to_cpu(ino->gid));
@@ -380,7 +383,7 @@ done:
 
 static void ubifs_dirty_inode(struct inode *inode, int flags)
 {
-	struct ubifs_inode *ui = ubifs_inode(inode);
+        struct ubifs_inode *ui = ubifs_inode(inode);
 
 	ubifs_assert(mutex_is_locked(&ui->ui_mutex));
 	if (!ui->dirty) {
@@ -2138,7 +2141,17 @@ static struct dentry *ubifs_mount(struct file_system_type *fs_type, int flags,
 		if (err)
 			goto out_deact;
 		/* We do not support atime */
-		sb->s_flags |= MS_ACTIVE | MS_NOATIME;
+		sb->s_flags |= MS_ACTIVE;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+		sb->s_flags |= MS_NOATIME;
+#else
+		ubifs_warn(c, "************WARNING START****************");
+		ubifs_warn(c, "Ubifs is supporting atime now, that would");
+		ubifs_warn(c, "probably damage your flash. If you are not");
+		ubifs_warn(c, "sure about it, please set UBIFS_ATIME_SUPPORT");
+		ubifs_warn(c, "to 'N'.");
+		ubifs_warn(c, "************WARNING END******************");
+#endif
 	}
 
 	/* 'fill_super()' opens ubi again so we must close it here */
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs
  2015-07-20  7:35   ` [PATCH v2] " Dongsheng Yang
@ 2015-07-30  5:43     ` Dongsheng Yang
  0 siblings, 0 replies; 6+ messages in thread
From: Dongsheng Yang @ 2015-07-30  5:43 UTC (permalink / raw)
  To: richard.weinberger, dedekind1; +Cc: linux-mtd, Dongsheng Yang

To make ubifs support atime flexily, this commit introduces
a Kconfig option named as UBIFS_ATIME_SUPPORT.

With UBIFS_ATIME_SUPPORT=n:
	ubifs keeps the full compatibility to no_atime from
the start of ubifs.
=================UBIFS_ATIME_SUPPORT=n=======================
-o - no atime
-o atime - no atime
-o noatime - no atime
-o relatime - no atime
-o strictatime - no atime
-o lazyatime - no atime

With UBIFS_ATIME_SUPPORT=y:
	ubifs supports the atime same with other main stream
file systems.
=================UBIFS_ATIME_SUPPORT=y=======================
-o - default behavior (relatime currently)
-o atime - atime support
-o noatime - no atime support
-o relatime - relative atime support
-o strictatime - strict atime support
-o lazyatime - lazy atime support

Test:
 # ./check -ubifs -g atime
FSTYP         -- ubifs
PLATFORM      -- Linux/x86_64 atest-guest 4.1.0+
MKFS_OPTIONS  -- /dev/ubi0_1
MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/ubi0_1 /mnt/scratch

generic/003 10s ... 10s
generic/192 40s ... 41s
Ran: generic/003 generic/192
Passed all 2 tests

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
---
	-v2:
		implement update_time for ubifs
	-v3:
		Oops, forgot to assign update_time for
		ubifs_dir_inode_operations.
 fs/ubifs/Kconfig | 11 +++++++++++
 fs/ubifs/dir.c   |  3 +++
 fs/ubifs/file.c  | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/ubifs/super.c | 19 ++++++++++++++++---
 fs/ubifs/ubifs.h |  1 +
 5 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
index f9aaad1..44474e7 100644
--- a/fs/ubifs/Kconfig
+++ b/fs/ubifs/Kconfig
@@ -35,3 +35,14 @@ config UBIFS_FS_ZLIB
 	default y
 	help
 	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.
+
+config UBIFS_ATIME_SUPPORT
+	bool "Access time support" if UBIFS_FS
+	depends on UBIFS_FS
+	default n
+	help
+	  This option allows ubifs to support atime. -o strictatime is harmful to
+	  your flash, we don't suggest it. But relatime and lazytime are much
+	  better.
+
+	  If unsure, say 'N'
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 27060fc..8d93427 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1187,6 +1187,9 @@ const struct inode_operations ubifs_dir_inode_operations = {
 	.getxattr    = ubifs_getxattr,
 	.listxattr   = ubifs_listxattr,
 	.removexattr = ubifs_removexattr,
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	.update_time = ubifs_update_time,
+#endif
 };
 
 const struct file_operations ubifs_dir_operations = {
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index 35efc10..554d7b9 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1364,6 +1364,47 @@ static inline int mctime_update_needed(const struct inode *inode,
 }
 
 /**
+ * ubifs_update_time - update time of inode.
+ * @inode: inode to update
+ *
+ * This function updates time of the inode.
+ */
+int ubifs_update_time(struct inode *inode, struct timespec *time,
+			     int flags)
+{
+	struct ubifs_inode *ui = ubifs_inode(inode);
+	struct ubifs_info *c = inode->i_sb->s_fs_info;
+	struct ubifs_budget_req req = { .dirtied_ino = 1,
+			.dirtied_ino_d = ALIGN(ui->data_len, 8) };
+	int iflags = I_DIRTY_TIME;
+	int err, release;
+
+	err = ubifs_budget_space(c, &req);
+	if (err)
+		return err;
+
+	mutex_lock(&ui->ui_mutex);
+	if (flags & S_ATIME)
+		inode->i_atime = *time;
+	if (flags & S_VERSION)
+		inode_inc_iversion(inode);
+	if (flags & S_CTIME)
+		inode->i_ctime = *time;
+	if (flags & S_MTIME)
+		inode->i_mtime = *time;
+
+	if (!(inode->i_sb->s_flags & MS_LAZYTIME) || (flags & S_VERSION))
+		iflags |= I_DIRTY_SYNC;
+
+	release = ui->dirty;
+	__mark_inode_dirty(inode, iflags);
+	mutex_unlock(&ui->ui_mutex);
+	if (release)
+		ubifs_release_budget(c, &req);
+	return 0;
+}
+
+/**
  * update_ctime - update mtime and ctime of an inode.
  * @inode: inode to update
  *
@@ -1546,6 +1587,9 @@ static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma)
 	if (err)
 		return err;
 	vma->vm_ops = &ubifs_file_vm_ops;
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	file_accessed(file);
+#endif
 	return 0;
 }
 
@@ -1566,6 +1610,9 @@ const struct inode_operations ubifs_file_inode_operations = {
 	.getxattr    = ubifs_getxattr,
 	.listxattr   = ubifs_listxattr,
 	.removexattr = ubifs_removexattr,
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	.update_time = ubifs_update_time,
+#endif
 };
 
 const struct inode_operations ubifs_symlink_inode_operations = {
@@ -1577,6 +1624,9 @@ const struct inode_operations ubifs_symlink_inode_operations = {
 	.getxattr    = ubifs_getxattr,
 	.listxattr   = ubifs_listxattr,
 	.removexattr = ubifs_removexattr,
+#ifdef CONFIG_UBIFS_ATIME_SUPPORT
+	.update_time = ubifs_update_time,
+#endif
 };
 
 const struct file_operations ubifs_file_operations = {
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 75e6f04..c643261 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -128,7 +128,10 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)
 	if (err)
 		goto out_ino;
 
-	inode->i_flags |= (S_NOCMTIME | S_NOATIME);
+	inode->i_flags |= S_NOCMTIME;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+	inode->i_flags |= S_NOATIME;
+#endif
 	set_nlink(inode, le32_to_cpu(ino->nlink));
 	i_uid_write(inode, le32_to_cpu(ino->uid));
 	i_gid_write(inode, le32_to_cpu(ino->gid));
@@ -380,7 +383,7 @@ done:
 
 static void ubifs_dirty_inode(struct inode *inode, int flags)
 {
-	struct ubifs_inode *ui = ubifs_inode(inode);
+        struct ubifs_inode *ui = ubifs_inode(inode);
 
 	ubifs_assert(mutex_is_locked(&ui->ui_mutex));
 	if (!ui->dirty) {
@@ -2138,7 +2141,17 @@ static struct dentry *ubifs_mount(struct file_system_type *fs_type, int flags,
 		if (err)
 			goto out_deact;
 		/* We do not support atime */
-		sb->s_flags |= MS_ACTIVE | MS_NOATIME;
+		sb->s_flags |= MS_ACTIVE;
+#ifndef CONFIG_UBIFS_ATIME_SUPPORT
+		sb->s_flags |= MS_NOATIME;
+#else
+		ubifs_warn(c, "************WARNING START****************");
+		ubifs_warn(c, "Ubifs is supporting atime now, that would");
+		ubifs_warn(c, "probably damage your flash. If you are not");
+		ubifs_warn(c, "sure about it, please set UBIFS_ATIME_SUPPORT");
+		ubifs_warn(c, "to 'N'.");
+		ubifs_warn(c, "************WARNING END******************");
+#endif
 	}
 
 	/* 'fill_super()' opens ubi again so we must close it here */
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index de75902..216ba87 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -1746,6 +1746,7 @@ int ubifs_calc_dark(const struct ubifs_info *c, int spc);
 /* file.c */
 int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync);
 int ubifs_setattr(struct dentry *dentry, struct iattr *attr);
+int ubifs_update_time(struct inode *inode, struct timespec *time, int flags);
 
 /* dir.c */
 struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir,
-- 
1.8.4.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig
  2015-07-01  5:29 [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Dongsheng Yang
  2015-07-01  5:30 ` [PATCH 2/2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs Dongsheng Yang
@ 2015-07-30 16:47 ` Brian Norris
  2015-07-31  0:03   ` Dongsheng Yang
  1 sibling, 1 reply; 6+ messages in thread
From: Brian Norris @ 2015-07-30 16:47 UTC (permalink / raw)
  To: Dongsheng Yang; +Cc: richard.weinberger, dedekind1, linux-mtd

On Wed, Jul 01, 2015 at 01:29:59PM +0800, Dongsheng Yang wrote:
> If unsure we would say 'N' rather than 'Y'.
> 
> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
> ---
>  fs/ubifs/Kconfig | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
> index ba66d50..f9aaad1 100644
> --- a/fs/ubifs/Kconfig
> +++ b/fs/ubifs/Kconfig
> @@ -27,11 +27,11 @@ config UBIFS_FS_LZO
>  	default y
>  	help
>  	   LZO compressor is generally faster than zlib but compresses worse.
> -	   Say 'Y' if unsure.
> +	   Say 'N' if unsure.

Why would we recommend 'N' yet set the default to 'Y'? Seems like
some dissonance.

Also, I'm not an expert on UBIFS, but I imagine the suggestion to say
yes is because of legacy support; what if you need to mount a file
system that was created with LZO?

>  
>  config UBIFS_FS_ZLIB
>  	bool "ZLIB compression support" if UBIFS_FS_ADVANCED_COMPR
>  	depends on UBIFS_FS
>  	default y
>  	help
> -	  Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
> +	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.

Same here.

Brian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig
  2015-07-30 16:47 ` [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Brian Norris
@ 2015-07-31  0:03   ` Dongsheng Yang
  0 siblings, 0 replies; 6+ messages in thread
From: Dongsheng Yang @ 2015-07-31  0:03 UTC (permalink / raw)
  To: Brian Norris; +Cc: richard.weinberger, dedekind1, linux-mtd

On 07/31/2015 12:47 AM, Brian Norris wrote:
> On Wed, Jul 01, 2015 at 01:29:59PM +0800, Dongsheng Yang wrote:
>> If unsure we would say 'N' rather than 'Y'.
>>
>> Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
>> ---
>>   fs/ubifs/Kconfig | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
>> index ba66d50..f9aaad1 100644
>> --- a/fs/ubifs/Kconfig
>> +++ b/fs/ubifs/Kconfig
>> @@ -27,11 +27,11 @@ config UBIFS_FS_LZO
>>   	default y
>>   	help
>>   	   LZO compressor is generally faster than zlib but compresses worse.
>> -	   Say 'Y' if unsure.
>> +	   Say 'N' if unsure.
>
> Why would we recommend 'N' yet set the default to 'Y'? Seems like
> some dissonance.

OMG, that's TRUE. I can not recall what I was thinking when I sent
this patch, but I believe there was something wrong in my mind.

Thanx a lot to point it out, Brian.

Atem and Richard, Please ignore this noise. My bad :(.

Yang
>
> Also, I'm not an expert on UBIFS, but I imagine the suggestion to say
> yes is because of legacy support; what if you need to mount a file
> system that was created with LZO?
>
>>
>>   config UBIFS_FS_ZLIB
>>   	bool "ZLIB compression support" if UBIFS_FS_ADVANCED_COMPR
>>   	depends on UBIFS_FS
>>   	default y
>>   	help
>> -	  Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
>> +	  Zlib compresses better than LZO but it is slower. Say 'N' if unsure.
>
> Same here.
>
> Brian
> .
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-07-31  0:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-01  5:29 [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Dongsheng Yang
2015-07-01  5:30 ` [PATCH 2/2] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs Dongsheng Yang
2015-07-20  7:35   ` [PATCH v2] " Dongsheng Yang
2015-07-30  5:43     ` [PATCH] " Dongsheng Yang
2015-07-30 16:47 ` [PATCH 1/2] ubifs: Kconfig: fix the description in Kconfig Brian Norris
2015-07-31  0:03   ` Dongsheng Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.