[LU-6097] Interop 2.5.3<->2.7 posix fstat1: fstat() set st_mtime st_ctime incorrectly Created: 08/Jan/15  Updated: 08/Feb/16  Resolved: 31/Aug/15

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.7.0, Lustre 2.5.3
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Maloo Assignee: Niu Yawei (Inactive)
Resolution: Duplicate Votes: 0
Labels: None
Environment:

server: lustre-master build 2808
client: 2.5.3


Issue Links:
Related
is related to LU-6087 sanity test_300b: mtime not change af... Resolved
is related to LU-7758 Interop master<->2.7.1: POSIX fstat.1... Closed
Severity: 3
Rank (Obsolete): 16972

 Description   

This issue was created by maloo for sarah <sarah@whamcloud.com>

This issue relates to the following test suite run: https://testing.hpdd.intel.com/test_sets/7a47ba0a-967a-11e4-be81-5254006e85c2.

The sub-test test_1 failed with the following error:

Run POSIX testsuite on /mnt/lustre failed
News POSIX successes: 1

Test Name                   Baseline   Lustre Report
read.15                       Failed       Succeeded


FAILURE SUMMARY:

POSIX failures: 1

Test Name                   Baseline   Lustre Report
fstat.1                    Succeeded          Failed

FAILURE DESCRIPTIONS:

####################################################
Test Name: fstat.1 Failed

	Test Description:
A call to fstat() stores information about the file associated with
the named file descriptor in the area pointed to by buf and returns a
value of zero.
Posix Ref: Component FSTAT Assertion 5.6.2.2-04(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-05(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-06(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-07(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-08(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-09(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-10(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-11(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-12(A)
Posix Ref: Component FSTAT Assertion 5.6.2.2-13(A)

	Test Strategy:
CHECK st_dev, st_ino, S_ISREG(st_mode), st_size, st_atime, st_mtime
and st_ctime for a regular file as follows:
  CREATE file using crfile() - (genlib)
  OBTAIN time using time()
  SLEEP for 2 seconds using sleep()
  WRITE data to file using write()
  CLOSE file descriptor using close()


Test Agency: Unknown                                      System Tested: Unknown
Test Date:   Jan 07, 2015                                          Page 13 of 36




                           X/OPEN Verification Suite                            
Test-Set Summary                                                Test-Set Summary


  OBTAIN time using time()
  SLEEP for 1 second using sleep()
  OBTAIN file status information for "." and ".." using stat()
  OPEN file using open() with a time out
  OBTAIN file status information for test file using fstat()
  VERIFY that fstat() returned 0
  VERIFY that st_dev is the same as for "." and ".."
  VERIFY that st_ino is different from "." and ".."
  VERIFY that file is a regular file using S_ISREG()
  VERIFY that st_size is the same as the number of bytes written to
  the file
  VERIFY that st_atime is set to the value when time() was first
  called
  VERIFY that st_mtime and st_ctime are set to the value when time()
  was subsequently called
  UNLINK file
CHECK st_mode permission bits as follows:
  CREATE file using crfile() - (genlib)
  FOR each portable file nane with each of the file modes and it's
  complement:
    CHANGE the mode of the current portable filename using chmod()
    with the current file mode
    OBTAIN file status information using fstat()
    VERIFY that fstat() returned 0 and errno was not set
    VERIFY that st_mode is the same as the current mode
  UNLINK file
CHECK st_uid and st_gid as follows:
  CREATE child process using cppair()
    CREATE subprogram using execve passing as parameters: the program
    name, the file name, the group and user ids for vsxg1 and vsx1
      CREAT file using creat() with read, write and execute
      permissions for user, group and others owned by user vsx1 and
      group vsxg1
  OBTAIN file status information using fstat()
  VERIFY that fstat() returned 0 and errno was not set
  VERIFY that st_uid and st_gid are set to vsx1 and vsxg1
CHECK st_nlink as follows:
  CREATE file using crfile() - (genlib)
  OBTAIN file status information using fstat()
  VERIFY that fstat() returned 0 and errno was not set
  VERIFY that the number of links to the file is one
  LINK to file using link()
  OBTAIN file status information using fstat()
  VERIFY that fstat() returned 0 and errno was not set
  VERIFY that the number of links to the file is two
  CLOSE file descriptor using close()
  UNLINK file
CHECK that S_ISDIR(st_mode) refers to a directory as follows:
  CREATE directory using crdir()
  OBTAIN file status information using fstat()
  VERIFY that fstat() returned 0 and errno was not set
  VERIFY that file is a directory using S_ISDIR()
WHEN not testing the XNFS specification:
  CHECK that S_ISFIFO(st_mode) refers to a FIFO as follows:


Test Agency: Unknown                                      System Tested: Unknown
Test Date:   Jan 07, 2015                                          Page 14 of 36




                           X/OPEN Verification Suite                            
Test-Set Summary                                                Test-Set Summary


    CREATE FIFO using mkfifo()
    OBTAIN file status information using fstat()
    VERIFY that fstat() returned 0 and errno was not set
    VERIFY that file is a directory using S_ISFIFO()
WHEN not testing the XNFS specification:
  CHECK st_size, st_atime, st_mtime and st_ctime as follows:
    CREATE pipe using pipe()
    CALL fstat() to force timestamp update
    OBTAIN time using time()
    SLEEP for 2 seconds using sleep()
    WRITE data to file using write()
    CALL fstat() to force timestamp update
    OBTAIN time using time()
    SLEEP for 1 second using sleep()
    OBTAIN file status information using fstat()
    VERIFY that fstat() returned 0 and errno was not set
    VERIFY that st_atime is set to the value when time() was first
    called
    VERIFY that st_mtime is set to the value when time() was
    subsequently called
    VERIFY that st_ctime is set to the value when time() was
    subsequently called
    CLOSE both file descriptors using close()

	Test Information:
fstat() set st_mtime incorrectly: expected 1420636135, observed
	1420636134
fstat() set st_ctime incorrectly: expected 1420636135, observed
	1420636134
path tracing error: path counter 6, expected 7

####################################################
 posix test_1: @@@@@@ FAIL: Run POSIX testsuite on /mnt/lustre failed 

Info required for matching: posix 1



 Comments   
Comment by Andreas Dilger [ 24/Aug/15 ]

Niu, any chance this is related to LU-6137 that was recently fixed?

Comment by Niu Yawei (Inactive) [ 25/Aug/15 ]

The fix of LU-6137 should be included in 2.7, but I'm not sure if the "server: lustre-master build 2808" contains the fix. Sarah, could you verify that?

Comment by Peter Jones [ 31/Aug/15 ]

It seems that this issue is a duplicate of LU-6137

Generated at Sat Feb 10 01:57:11 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.