Unable to mount NCP volumes, rc=150

  • 7005204
  • 22-Jan-2010
  • 26-Apr-2012

Environment

Novell Open Enterprise Server 2 (OES 2) Linux Support Pack 1
Novell Open Enterprise Server 2 (OES 2) Linux Support Pack 2

Situation

An NCP volume is created on an NFS share.  When initially created, the volume mounts fine and works as expected.  After the volume is dismounted and re-mounted (because of a reboot, for example), the volume will not mount, returning rc=150.

The /var/opt/novell/log/ncpserv.log shows the following errors:

AddVolumeToDirCache opening volume trustee temp file failed rc=13
MountVolumesRPCHandler: ChangeVolumeStatus <VOLNAME> rc=150

Resolution

The ._NETWARE directory at the root of the NCP share was read-only.  NCP requires r/w access to these files to operate.

In this case, the NAS configured the NFS share as a WORM (Write Once Read Many) share.  We were able to initially create the files but couldn't modify them afterward.  The server policy was changed to allow the ._NETWARE directory to be R/W.

Additional Information

When NCP mounts a volume it performs several operations revolving around the ._NETWARE directory.

  1. Create the ._NETWARE directory (safely handles EEXIST return code)
  2. Open ._NETWARE/.trustee_work.dat with O_RDWR|O_CREAT|O_TRUNC flags
  3. Open ._NETWARE/.trustee_database.xml with O_RDWR flag
  4. Read information from the ._NETWARE/.trustee_database.xml file
  5. Opens and truncates ._NETWARE/.trustee_database_new.xml wih O_RDRW|O_CREAT flags
  6. Truncate ._NETWARE/.trustee_work.dat
  7. Write data to the ._NETWARE/.trustee_work.dat and ._NETWARE/.trustee_database_new.xml files (volume trustee and inherited rights mask data)
  8. Rename ._NETWARE/.trustee_database.xml to ._NETWARE/.trustee_database_bakup.xml
  9. Rename ._NETWARE/.trustee_database_new.xml to ._NETWARE/.trustee_database.xml
  10. Unlink ._NETWARE/.trustee_database_bakup.xml