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

osd-zfs: sanity-sec test_16, test_22: 27919 != 26845 + 1M after write

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.8.0
    • Lustre 2.7.0
    • 3
    • 17497

    Description

      This issue was created by maloo for Isaac Huang <he.huang@intel.com>

      This issue relates to the following test suite run: https://testing.hpdd.intel.com/test_sets/f61d2cb6-b2a2-11e4-a8f5-5254006e85c2.

      The sub-test test_22 failed with the following error:

      27919 != 26845 + 1M after write
      

      It seemed that the test was using 4096 as blocksize for the ZFS OST to estimate quota, which would fail.

      On the client:

      [root@eagle-44vm2 ~]# cat /proc/fs/lustre/osc/lustre-OST0000-osc-ffff88007a5bb800/import
      import:
          name: lustre-OST0000-osc-ffff88007a5bb800
          target: lustre-OST0000_UUID
          state: FULL
          connect_flags: [ write_grant, server_lock, version, request_portal, truncate_lock, max_byte_per_rpc, early_lock_cancel, adaptive_timeouts, lru_resize, alt_checksum_algorithm, fid_is_enabled, version_recovery, full20, layout_lock, 64bithash, object_max_bytes, jobstats, einprogress, lvb_type, lfsck ]
          connect_data:
             flags: 0x404af0e3440478
             instance: 1
             target_version: 2.6.94.0
             initial_grant: 1048576
             max_brw_size: 4194304
             grant_block_size: 0
             grant_inode_size: 0
             grant_extent_overhead: 0
             cksum_types: 0x2
             max_easize: 32768
             max_object_bytes: 9223372036854775807
          import_flags: [ replayable, pingable, connect_tried ]
          connection:
             failover_nids: [ 10.100.4.126@tcp ]
             current_connection: 10.100.4.126@tcp
             connection_attempts: 1
             generation: 1
             in-progress_invalidations: 0
          rpcs:
             inflight: 0
             unregistering: 0
             timeouts: 0
             avg_waittime: 1702 usec
          service_estimates:
             services: 1 sec
             network: 1 sec
          transactions:
             last_replay: 0
             peer_committed: 0
             last_checked: 0
      [root@eagle-44vm2 ~]# lctl get_param -n osc.lustre-OST0000-*.blocksize
      4096
      

      On the OSS:

      [root@eagle-44vm1 lustre]# cat /proc/fs/lustre/osd-zfs/lustre-OST0000/blocksize 
      131072
      

      This seems to be the code that resets blocksize to 4K

      int ofd_statfs(const struct lu_env *env,  struct obd_export *exp,
      ......
              if (obd->obd_self_export != exp && ofd_grant_compat(exp, ofd)) {
                      /* clients which don't support OBD_CONNECT_GRANT_PARAM
                       * should not see a block size > page size, otherwise
                       * cl_lost_grant goes mad. Therefore, we emulate a 4KB (=2^12)
                       * block size which is the biggest block size known to work
                       * with all client's page size. */
                      osfs->os_blocks <<= ofd->ofd_blockbits - COMPAT_BSIZE_SHIFT;
                      osfs->os_bfree  <<= ofd->ofd_blockbits - COMPAT_BSIZE_SHIFT;
                      osfs->os_bavail <<= ofd->ofd_blockbits - COMPAT_BSIZE_SHIFT;
                      osfs->os_bsize    = 1 << COMPAT_BSIZE_SHIFT;
              }
      

      I'm not familiar with the code, but if the code is correct then the test should be fixed or skipped for ZFS OSTs.

      Attachments

        Activity

          People

            utopiabound Nathaniel Clark
            maloo Maloo
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: