Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
3
-
9223372036854775807
Description
A customer reported having problems accessing a file on Lustre with a 32-bit binary running on a 64-bit kernel:
31583 access("infile_how", F_OK) = 0 31583 open("infile_how", O_RDWR) = 3 31583 fstat(3, 0xfff4d52c) = -1 EOVERFLOW (Value too large for defined data type) 31583 stat("infile_how", 0xfff4d51c) = -1 EOVERFLOW (Value too large for defined data type)
That fstat() doesn't return EOVERFLOW on the local file system:
31823 access("infile_how", F_OK <unfinished ...> 31824 fstat(0, <unfinished ...> 31823 <... access resumed> ) = 0 31824 <... fstat resumed> {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 31823 open("infile_how", O_RDWR <unfinished ...> 31824 fstat(1, <unfinished ...> 31823 <... open resumed> ) = 3 31824 <... fstat resumed> {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 31823 fstat(3, <unfinished ...> 31824 fstat(2, <unfinished ...> 31823 <... fstat resumed> {st_mode=S_IFIFO, st_size=876682292077977496, ...}) = 0 31824 <... fstat resumed> {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 31823 stat("infile_how", {st_mode=S_IFIFO, st_size=876682292077977496, ...}) = 0
The values packed into stat->dev and stat->rdev by ll_getattr() are failing the old_valid_dev() checks in cp_compat_stat() from compat_sys_newfstat() and compat_sys_newstat().
Attachments
Activity
Link | New: This issue is related to LDEV-243 [ LDEV-243 ] |
Link | Original: This issue is related to LDEV-301 [ LDEV-301 ] |
Link | New: This issue is related to LDEV-608 [ LDEV-608 ] |
Link | New: This issue is related to LDEV-567 [ LDEV-567 ] |
Fix Version/s | New: Lustre 2.10.0 [ 12204 ] | |
Resolution | New: Fixed [ 1 ] | |
Status | Original: Open [ 1 ] | New: Resolved [ 5 ] |
Link | New: This issue is related to JFC-17 [ JFC-17 ] |
Link | New: This issue is related to LDEV-301 [ LDEV-301 ] |
Description |
New:
A customer reported having problems accessing a file on Lustre with a 32-bit binary running on a 64-bit kernel: {noformat} 31583 access("infile_how", F_OK) = 0 31583 open("infile_how", O_RDWR) = 3 31583 fstat(3, 0xfff4d52c) = -1 EOVERFLOW (Value too large for defined data type) 31583 stat("infile_how", 0xfff4d51c) = -1 EOVERFLOW (Value too large for defined data type) {noformat} That {{fstat()}} doesn't return _EOVERFLOW_ on the local file system: {noformat} 31823 access("infile_how", F_OK <unfinished ...> 31824 fstat(0, <unfinished ...> 31823 <... access resumed> ) = 0 31824 <... fstat resumed> {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 31823 open("infile_how", O_RDWR <unfinished ...> 31824 fstat(1, <unfinished ...> 31823 <... open resumed> ) = 3 31824 <... fstat resumed> {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 31823 fstat(3, <unfinished ...> 31824 fstat(2, <unfinished ...> 31823 <... fstat resumed> {st_mode=S_IFIFO, st_size=876682292077977496, ...}) = 0 31824 <... fstat resumed> {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 31823 stat("infile_how", {st_mode=S_IFIFO, st_size=876682292077977496, ...}) = 0 {noformat} The values packed into {{stat->dev}} and {{stat->rdev}} by {{ll_getattr()}} are failing the {{old_valid_dev()}} checks in {{cp_compat_stat()}} from {{compat_sys_newfstat()}} and {{compat_sys_newstat()}}. |
Link | New: This issue is related to ISBC-70 [ ISBC-70 ] |
Assignee | Original: WC Triage [ wc-triage ] | New: John Hammond [ jhammond ] |