[snip]
Rather than making a wholesale switch, can you make it check the
dentry.d_inode first,
and if it's NULL, then check dentry.d_sb? I'm probably being paranoid, but
I'm worried
about unintended consequences.
Thanks,
Dave
Sure. Here's the new version:
(defs.h)
2069d2068
< long dentry_d_sb;
(filesys.c)
1701c1701
< superblock = ULONG(dentry_buf + OFFSET(dentry_d_sb));
---
superblock = 0;
1704c1704
< if (!superblock)
---
if (!inode || !superblock)
2018d2017
< MEMBER_OFFSET_INIT(dentry_d_sb, "dentry", "d_sb");
Verification:
Problem dentry, without patch:
DENTRY INODE SUPERBLK TYPE PATH
ffff880328399800 0 0 N/A
Problem dentry, with patch:
DENTRY INODE SUPERBLK TYPE PATH
ffff880328399800 0 ffff8817daaf6800 N/A
/u02/oraarch/MRAQ0431/MRAQ0431_1_10357_982129979.arc
Here's another (intact) dentry both ways:
Without patch:
DENTRY INODE SUPERBLK TYPE PATH
ffff8817dba87200 ffff880a82d4b940 ffff8817daaf5000 REG
/u01/app/oracle/product/12.1.0.2.161018/rdbms/mesg/oraus.msb
With patch:
DENTRY INODE SUPERBLK TYPE PATH
ffff8817dba87200 ffff880a82d4b940 ffff8817daaf5000 REG
/u01/app/oracle/product/12.1.0.2.161018/rdbms/mesg/oraus.msb
Regards,
Martin
Martin Moore
Linux/Tru64 RTCC Engineer
CSC Americas
HPE Technology Services
Hewlett Packard Enterprise