KBEA-00068 - Overcoming problems with MVFS read-only file systems

Article ID:360032827272
2 minute readKnowledge base

Summary

Electric Make builds may fail because they cannot write to a file that is not checked out in ClearCase. Looking at a stand-alone build that uses GNU Make, it essentially ignores this error and continues.

A dynamic ClearCase view (MVFS) can appear as a read-only filesystem, which means that all writes to existing, checked-in files will fail with EROFS on Unix and ERROR_ACCESS_DENIED on Windows. Thus, commands executed by GNU Make against MVFS simply fail with this error, and GNU Make is notified that the command failed. Make directives (like -i and -k) instruct it to ignore the errors and continue to do what you’d expect here, and the build continues.

In an ElectricAccelerator build, however, the commands did not run against MVFS. They run against EFS on the node machine, where the files appears with the traits that ClearCase claims for them: being writable. Thus, commands executed by Electric Make on the node complete successfully, and Electric Make has no reason to believe the command failed. That’s why -i and -k have no effect. It’s only when it is finally committing the job output to its final location on the local machine that Electric Make "notices" that the destination is read-only. At this point, however, the failure to write is indistinguishable from an out-of-band modification (i.e., you’d get the same problem if you started the build on a rw filesystem, and remounted it read-only halfway through the build).

The error message here, "EC1068: permission denied while opening the destination file", implies that Electric Make believes the destination file is unexpectedly unwritable.

This can also result in the following error message. "EC1070: Unable to create symlink /vob/ios/sys/file.tgz".

Solution

The solution is to instruct Electric Make to specifically check if files are checked in to ClearCase, and ensure that the EFS reflects that if it is. Now the commands running on the node will also get ROFS/ACCESS_DENIED and fail, and the -i/-k switches will have the intended effect.
To enable this check, add --emake-clearcase=rofs to the Electric Make command line.

Applies to

  • Product versions: 4.x and later

  • OS versions: All