Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-6097

Interop 2.5.3<->2.7 posix fstat1: fstat() set st_mtime st_ctime incorrectly

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • Lustre 2.7.0, Lustre 2.5.3
    • None
    • server: lustre-master build 2808
      client: 2.5.3
    • 3
    • 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

      Attachments

        Issue Links

          Activity

            People

              niu Niu Yawei (Inactive)
              maloo Maloo
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: