Details
-
Bug
-
Resolution: Fixed
-
Minor
-
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.