Menu

#5 Case-insensitivity breaks GETATTR on cached filehandle

v1.0_(example)
open
nobody
Bugs (6)
5
2020-02-24
2005-04-17
Ed Maste
No

ClearCase fs is (can be) case sensitive. Scenario is a
CC view exported to a FreeBSD machine, doing a build.

make(1) looks for the files BSDmakefile, makefile,
Makefile in that order. Debug trace shows three
NFS_LOOKUP calls, with the first two failing and the
third returning a fhandle.

After processing some other files it comes back to the
same directory, and tries the three files in order
again. Trace shows two NFS_LOOKUPs (for BSDmakefile
and makefile) and then a NFS_GETATTR on the fhandle for
cached Makefile.

sossnt returns NFSERR_STALE, because the InodeTable for
the given inode is empty.

It appears that the NFS_LOOKUP of makefile calls
file_getattr which in turn calls file_readattr, which does:

if (myfindfirst (path, &findbuf) != 0)
{
/* not successful */
if ((nodeid = pntoin (path)) != -1)
inremnode (nodeid);
DBGPRT0 (inode, "return false A");
return FALSE;
}

So it appears that since pntoin is not case sensitive
and the lookup of makefile fails, Makefile gets removed
from the inode table.

Discussion

  • Dave Chapeskie

    Dave Chapeskie - 2006-02-27
    • labels: --> Bugs
    • assigned_to: nobody --> emaste
     
  • Ed Maste

    Ed Maste - 2020-02-07
    • Group: --> v1.0_(example)
     
  • Ed Maste

    Ed Maste - 2020-02-24
    • assigned_to: Ed Maste --> nobody
     

Log in to post a comment.

MongoDB Logo MongoDB