Details
-
Bug
-
Resolution: Fixed
-
Critical
-
Lustre 2.4.1, Lustre 2.5.0
-
BASELINE_FS=zfs
-
3
-
11481
Description
While running posix test on Lustre with BASELINE_FS=zfs, fpathconf.8 and pathconf.10 failed as follows:
####################################################
Test Name: fpathconf.8 Failed
Test Description:
For the XNFS specification:
Not in use.
For the XSH specification:
If NAME_MAX is defined when <limits.h> is included, a call to
fpathconf(fildes, _PC_NAME_MAX) when fildes refers to a directory,
returns the value of NAME_MAX.
(In XPG3 mode, a value > NAME_MAX is also allowed.)
Posix Ref: Component FPATHCONF Assertion 5.7.1.2-11(C)
Test Strategy:
IF NAME_MAX is defined
OPEN current directory using open() with O_RDONLY|O_NONBLOCK and
with time out
VERIFY that the open() was successful
OBTAIN the system value associated with fpathconf() with
_PC_NAME_MAX
VERIFY that fpathconf() returned successfully and errno was not set
VERIFY that return value is equal to NAME_MAX (or >= in XPG3 mode)
OPEN root directory using open() with O_RDONLY|O_NONBLOCK and with
time out
VERIFY that the open() was successful
OBTAIN the system value associated with fpathconf() with
_PC_NAME_MAX
VERIFY that fpathconf() returned successfully and errno was not set
VERIFY that return value is equal to NAME_MAX (or >= in XPG3 mode)
Test Information:
fpathconf(fd, _PC_NAME_MAX) on "." did not return the value of NAME_MAX
value returned: 256, NAME_MAX: 255
(NAME_MAX should not be defined in <limits.h> if the
run-time value can vary.)
####################################################
Test Name: pathconf.10 Failed
Test Description:
For the XNFS specification:
Not in use.
For the XSH specification:
If NAME_MAX is defined when <limits.h> is included, a call to
pathconf(path, _PC_NAME_MAX) when path refers to a directory,
returns the value of NAME_MAX.
(In XPG3 mode, a value > NAME_MAX is also allowed.)
Posix Ref: Component PATHCONF Assertion 5.7.1.2-33(C)
Test Strategy:
IF NAME_MAX is defined
FOR current directory and root directory
OBTAIN the system value associated with pathconf() with
_PC_NAME_MAX and current directory
VERIFY that pathconf() returned successfully and errno was not set
VERIFY that return value is equal to NAME_MAX (or >= in XPG3 mode)
Test Information:
pathconf(".", _PC_NAME_MAX) did not return the value of NAME_MAX
value returned: 256, NAME_MAX: 255
(NAME_MAX should not be defined in <limits.h> if the
run-time value can vary.)
####################################################
Maloo report: https://maloo.whamcloud.com/test_sets/e74b645e-4634-11e3-810a-52540035b04c
Comments from Andreas:
I think all of the pathconf failures may be caused by pathconf being hard coded in glibc based on the Filesystem magic number. That means it isn't possible to change the value for Lustre without recompiling glibc.