]> git.neil.brown.name Git - LaFS.git/commitdiff
Don't try to set access time on objects that don't record access time.
authorNeilBrown <neilb@suse.de>
Sat, 5 Mar 2011 00:25:04 +0000 (11:25 +1100)
committerNeilBrown <neilb@suse.de>
Sat, 5 Mar 2011 00:25:04 +0000 (11:25 +1100)
e.g. TypeInodeFile, TypeSegmentMap etc.

Doing so can corrupt other data.

Signed-off-by: NeilBrown <neilb@suse.de>
inode.c

diff --git a/inode.c b/inode.c
index 50ecf31829c6f81828c9a4b2613876add16ef4e4..9948edeba6322692a3bc866b2da8cd766cbd6121 100644 (file)
--- a/inode.c
+++ b/inode.c
@@ -568,6 +568,8 @@ static int update_atime_delta(struct inode *ino)
         * i_atime and i_accesstime
         */
        int rv;
+       if (LAFSI(ino)->type < TypeBase)
+               return 0;
        if (timespec_compare(&ino->i_atime,
                             &LAFSI(ino)->md.file.i_accesstime) <= 0) {
                /* We cannot store negative delta so if i_atime is in the
@@ -1296,10 +1298,12 @@ void lafs_dirty_inode(struct inode *ino)
                        store_atime_delta(ino);
                return;
        }
-       
 
        set_bit(I_Dirty, &LAFSI(ino)->iflags);
        ino->i_sb->s_dirt = 1;
+
+       if (LAFSI(ino)->type < TypeBase)
+               return;
        LAFSI(ino)->md.file.i_accesstime = ino->i_atime;
        if (LAFSI(ino)->md.file.atime_offset) {
                LAFSI(ino)->md.file.atime_offset = 0;