Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-3016

The errno for symlink() on Lustre is different from it on ext3 or NFS

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.4.1
    • 3
    • 7337

    Description

      I'm a developer of Fujitsu customized Lustre, named FEFS.

      I found a problem in Lustre-2.3.x.
      If the C program like below is executed on ext3 or NFS, the errno for symlink() is EEXIST(17).
      However, on Lustre-2.3.x, it is ENOENT(2).
      The problem is that the errno for symlink() on Lustre is different from it on ext3 or NFS.
      The problem was found, because the "test-symlink" was FAIL in "make check" of the GNU Core Utilities (http://www.gnu.org/software/coreutils/) on FEFS.

      #include <stdio.h>
      #include <unistd.h>
      #include <string.h>
      #include <errno.h>
      
      int main (){
        int ret;
      
        mkdir("test-symlink.tdir", 0700);
        ret = symlink("nowhere", "test-symlink.tdir/");
        fprintf(stderr, "ret=%d, errno=%d, errstr=%s\n", ret, errno, strerror(errno));
        return 0;
      }
      

      I found, if the patch of Bug 18534 like below was backed out, the problem would be fixed.
      The patch of Bug 18534 is to avoid extra unnecessary lookup in case of mkdir/mknod and perhaps others.
      http://git.whamcloud.com/gitweb?p=fs/lustre-release.git;a=commit;h=cabdb5633edaf7f997d422563d6b4d320db65cbd

      However, I'm not sure that backing out the patch of Bug 18534 doesn't matter.
      So could someone help me with it?

      Attachments

        Activity

          People

            wc-triage WC Triage
            mizuno.hideki Hideki Mizuno
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: