linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: ext4 lazytime: ctime of some files changed
       [not found] ` <mivtkj$fhi$1@ger.gmane.org>
@ 2015-05-14 22:20   ` Theodore Ts'o
  2015-05-15  7:17     ` Jörg-Volker Peetz
  2015-05-15 15:14     ` Jörg-Volker Peetz
  0 siblings, 2 replies; 6+ messages in thread
From: Theodore Ts'o @ 2015-05-14 22:20 UTC (permalink / raw)
  To: Jörg-Volker Peetz; +Cc: linux-ext4

On Wed, May 13, 2015 at 06:20:35PM +0200, Jörg-Volker Peetz wrote:
> 
> Thereafter, the two emacs package files again had a wrong mtime (which by the
> way shows when I start emacs).
> 
> Could this be due to the lazytime mount option?

I think I found the problem.  My bad.  Can you verify that this solves
the problem for you?

From 8f4d855839179f410fa910a26eb81d646d628f26 Mon Sep 17 00:00:00 2001
From: Theodore Ts'o <tytso@mit.edu>
Date: Thu, 14 May 2015 18:19:01 -0400
Subject: [PATCH] ext4: fix lazytime optimization

We had a fencepost error in the lazytime optimization which means that
timestamp would get written to the wrong inode.

Cc: stable@vger.kernel.org
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 fs/ext4/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 55b187c..0554b0b 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -4345,7 +4345,7 @@ static void ext4_update_other_inodes_time(struct super_block *sb,
 	int inode_size = EXT4_INODE_SIZE(sb);
 
 	oi.orig_ino = orig_ino;
-	ino = orig_ino & ~(inodes_per_block - 1);
+	ino = (orig_ino & ~(inodes_per_block - 1)) + 1;
 	for (i = 0; i < inodes_per_block; i++, ino++, buf += inode_size) {
 		if (ino == orig_ino)
 			continue;
-- 
2.3.0

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: ext4 lazytime: ctime of some files changed
  2015-05-14 22:20   ` ext4 lazytime: ctime of some files changed Theodore Ts'o
@ 2015-05-15  7:17     ` Jörg-Volker Peetz
  2015-05-15 15:14     ` Jörg-Volker Peetz
  1 sibling, 0 replies; 6+ messages in thread
From: Jörg-Volker Peetz @ 2015-05-15  7:17 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: linux-ext4

Theodore Ts'o wrote on 05/15/2015 00:20:
> On Wed, May 13, 2015 at 06:20:35PM +0200, Jörg-Volker Peetz wrote:
>>
>> Thereafter, the two emacs package files again had a wrong mtime (which by the
>> way shows when I start emacs).
>>
>> Could this be due to the lazytime mount option?
> 
> I think I found the problem.  My bad.  Can you verify that this solves
> the problem for you?
> 
I'll try the patch today after repairing most of the timestamps from backup to
have a reference.
-- 
Regards,
Jörg.

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: ext4 lazytime: ctime of some files changed
  2015-05-14 22:20   ` ext4 lazytime: ctime of some files changed Theodore Ts'o
  2015-05-15  7:17     ` Jörg-Volker Peetz
@ 2015-05-15 15:14     ` Jörg-Volker Peetz
  2015-05-15 23:11       ` Theodore Ts'o
  1 sibling, 1 reply; 6+ messages in thread
From: Jörg-Volker Peetz @ 2015-05-15 15:14 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: linux-ext4

Theodore Ts'o wrote on 05/15/2015 00:20:
> On Wed, May 13, 2015 at 06:20:35PM +0200, Jörg-Volker Peetz wrote:
>>
>> Thereafter, the two emacs package files again had a wrong mtime (which by the
>> way shows when I start emacs).
>>
>> Could this be due to the lazytime mount option?
> 
> I think I found the problem.  My bad.  Can you verify that this solves
> the problem for you?
> 
Meanwhile I've kernel version 4.0.3 with your patch on top and

$ grep -E '(root|sda)' /proc/mounts
/dev/root / ext4 rw,lazytime,nobarrier,errors=remount-ro 0 0
/dev/sda2 /home ext4 rw,lazytime,nobarrier,errors=remount-ro 0 0

running nearly two hours without any file timestamp related anomalies while
doing some file activity and a sync from time to time :-)
Thanks for caring.

> From 8f4d855839179f410fa910a26eb81d646d628f26 Mon Sep 17 00:00:00 2001
> From: Theodore Ts'o <tytso@mit.edu>
> Date: Thu, 14 May 2015 18:19:01 -0400
> Subject: [PATCH] ext4: fix lazytime optimization
> 
> We had a fencepost error in the lazytime optimization which means that
> timestamp would get written to the wrong inode.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
> ---
>  fs/ext4/inode.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 55b187c..0554b0b 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -4345,7 +4345,7 @@ static void ext4_update_other_inodes_time(struct super_block *sb,
>  	int inode_size = EXT4_INODE_SIZE(sb);
>  
>  	oi.orig_ino = orig_ino;
> -	ino = orig_ino & ~(inodes_per_block - 1);
> +	ino = (orig_ino & ~(inodes_per_block - 1)) + 1;
>  	for (i = 0; i < inodes_per_block; i++, ino++, buf += inode_size) {
>  		if (ino == orig_ino)
>  			continue;
> 
-- 
Regards,
Jörg.

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: ext4 lazytime: ctime of some files changed
  2015-05-15 15:14     ` Jörg-Volker Peetz
@ 2015-05-15 23:11       ` Theodore Ts'o
  2015-05-20  8:48         ` Jörg-Volker Peetz
  0 siblings, 1 reply; 6+ messages in thread
From: Theodore Ts'o @ 2015-05-15 23:11 UTC (permalink / raw)
  To: Jörg-Volker Peetz; +Cc: linux-ext4

On Fri, May 15, 2015 at 05:14:10PM +0200, Jörg-Volker Peetz wrote:
> running nearly two hours without any file timestamp related anomalies while
> doing some file activity and a sync from time to time :-)
> Thanks for caring.

Many thanks for the bug report!   :-)

     	    	    	- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: ext4 lazytime: ctime of some files changed
  2015-05-15 23:11       ` Theodore Ts'o
@ 2015-05-20  8:48         ` Jörg-Volker Peetz
  2015-05-23 13:24           ` Jörg-Volker Peetz
  0 siblings, 1 reply; 6+ messages in thread
From: Jörg-Volker Peetz @ 2015-05-20  8:48 UTC (permalink / raw)
  To: linux-ext4; +Cc: Theodore Ts'o

Hi Ted,

Theodore Ts'o wrote on 05/16/2015 01:11:
> On Fri, May 15, 2015 at 05:14:10PM +0200, Jörg-Volker Peetz wrote:
>> running nearly two hours without any file timestamp related anomalies while
>> doing some file activity and a sync from time to time :-)
>> Thanks for caring.
> 
> Many thanks for the bug report!   :-)
> 
>      	    	    	- Ted

after a few days of running the patch, I seem to have again two files with
changed mtime without touching them (only reading by rsync).

I took a look into the file fs/ext4/inode.c and saw this code in function
__ext4_get_inode_loc(struct inode *inode,
				struct ext4_iloc *iloc, int in_mem)
:

		if (in_mem) {
			struct buffer_head *bitmap_bh;
			int i, start;

			start = inode_offset & ~(inodes_per_block - 1);

			/* Is the inode bitmap in cache? */
			bitmap_bh = sb_getblk(sb, ext4_inode_bitmap(sb, gdp));

I'm not sure, if this is relevant, but just for curiosity, why does "start" here
not need a "+ 1"?
-- 
Regards,
Jörg.


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: ext4 lazytime: ctime of some files changed
  2015-05-20  8:48         ` Jörg-Volker Peetz
@ 2015-05-23 13:24           ` Jörg-Volker Peetz
  0 siblings, 0 replies; 6+ messages in thread
From: Jörg-Volker Peetz @ 2015-05-23 13:24 UTC (permalink / raw)
  To: linux-ext4; +Cc: Theodore Ts'o

Jörg-Volker Peetz wrote on 05/20/2015 10:48:
<snip>
> after a few days of running the patch, I seem to have again two files with
> changed mtime without touching them (only reading by rsync).
> 
<snip>
I can affirm this error, but am not sure where to hunt.
I'm using several USB drives in a cycle for backup.
I have a directory with a file originally older than a few years.
Mount options are

$ grep sda /proc/mounts
/dev/sda2 /home ext4 rw,lazytime,relatime,nobarrier,errors=remount-ro 0 0

(using lazytime with relatime).
As reported, while I started using lazytime, this file's mtime got changed.
I reset the mtime with the "touch -r <intact_copy> <file>" command.
After a backup to one of the USB drives with something like

$ rsync -acv --exclude-from=<file> --delete-excluded <SRC> <DEST_ON_USB_DRIVE>

the namely file had its mtime changed  on the *source* device (the USB drive has
an ext4 fs mounted without the lazytime option).
I reset that again on the source SSD using "touch". Another file in the same was
also modified.

Next backup on another USB drive, same thing.
I took a look into the file list on the backup medium before the backup.
There the file also had a different mtime, but not the same mtime the file got
after the backup.

I'm confused.
Any idea?
-- 
Regards,
Jörg.


--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2015-05-23 13:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <55531AE3.7030704@web.de>
     [not found] ` <mivtkj$fhi$1@ger.gmane.org>
2015-05-14 22:20   ` ext4 lazytime: ctime of some files changed Theodore Ts'o
2015-05-15  7:17     ` Jörg-Volker Peetz
2015-05-15 15:14     ` Jörg-Volker Peetz
2015-05-15 23:11       ` Theodore Ts'o
2015-05-20  8:48         ` Jörg-Volker Peetz
2015-05-23 13:24           ` Jörg-Volker Peetz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).