Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-32414

QDir::mkpath fails on Solaris NFS mounts



    • Bug
    • Resolution: Unresolved
    • P3: Somewhat important
    • None
    • 5.1.0
    • Core: I/O
    • None
    • Solaris 10 (SunOS 5.10 Generic_147441-01 i86pc i386 i86pc Solaris)


      The fix for race condition (QTBUG-30046) made QDir::mkpath fail when trying to create a directory which already exists under an NFS mount on Solaris

      Solaris NFS has a bug (see e.g. http://www.unix.com/solaris/121565-mkdir-operation-not-applicable.html) which makes sometimes mkdir call return errno == ENOSYS

      The problem is that the error is returned for parent directory instead of EEXIST.

      After choosing to run mkdir before stat createDirectory fails however in my case ENOSYS was only returned for the root directory of NFS mount and directories at larger depth can be created with no problem

      This is a quick fix which made QDir::mkpath work for me:

      if (QT_MKDIR(chunk.constData(), 0777) != 0) {
      switch (errno)

      { case EEXIST: #ifdef Q_OS_SOLARIS case ENOSYS: #endif QT_STATBUF st; if (QT_STAT(chunk.constData(), &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR) continue; }

      return false;

      I am not sure if Solaris is the only operating system with this problem, maybe the #ifdef is not necessary


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              srutledg Shawn Rutledge
              koval Piotr Kowalski
              0 Vote for this issue
              2 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes