Index: trunk/src/sh_hash.c
===================================================================
--- trunk/src/sh_hash.c	(revision 491)
+++ trunk/src/sh_hash.c	(revision 492)
@@ -1880,4 +1880,5 @@
   char * linkComp;
   int  maxcomp;
+  volatile int  checksum_flag = 0;
 
   char change_code[16];
@@ -1963,4 +1964,6 @@
        (theFile->check_flags & MODI_CHK) != 0)
     {
+      checksum_flag = 1;
+      
       if ((theFile->check_flags & MODI_SGROW) == 0)
 	{
@@ -2053,7 +2056,39 @@
        (theFile->check_flags & MODI_INO) != 0)
     {
-      modi_mask |= MODI_INO;
-      change_code[3] = 'I';
-      TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
+      if ((theFile->check_flags & MODI_SGROW) == 0)
+	{
+	  modi_mask |= MODI_INO;
+	  change_code[3] = 'I';
+	  TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
+	}
+      else
+	{
+	  /* growing log, checksum ok but inode changed 
+	   */
+	  if (checksum_flag == 0)
+	    {
+	      if (S_FALSE == sh_check_rotated_log (theFile->fullpath, (UINT64) p->theFile.size, 
+						   (UINT64) p->theFile.ino, p->theFile.checksum,
+						   p->theFile.checkflags))
+		{
+		  modi_mask |= MODI_INO;
+		  change_code[3] = 'I';
+		  TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
+		}
+	      else
+		{
+		  /* logfile has been rotated */
+		  p->theFile.size  = theFile->size;
+		  p->theFile.ino   = theFile->ino;
+		  sl_strlcpy(p->theFile.checksum, fileHash, KEY_LEN+1);
+		}
+	    }
+	  else
+	    {
+	      modi_mask |= MODI_INO;
+	      change_code[3] = 'I';
+	      TPT ((0, FIL__, __LINE__, _("mod=<inode>")));
+	    }
+	}
     } 
     
