Hello!

> I've committed this patch to update to the final Go 1.12 release.
> Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
> to mainline.

This patch introduced following failure in CentOS 5.11:

syscall_linux_test.go:381:11: error: reference to undefined field or
method 'Flags'
  381 |  return st.Flags&syscall.MS_NOSUID != 0
      |           ^
FAIL: syscall

According to man statfs, flags were introduced in linux 2.6.36:

           struct statfs {
               __fsword_t f_type;    /* Type of filesystem (see below) */
               __fsword_t f_bsize;   /* Optimal transfer block size */
               fsblkcnt_t f_blocks;  /* Total data blocks in filesystem */
               fsblkcnt_t f_bfree;   /* Free blocks in filesystem */
               fsblkcnt_t f_bavail;  /* Free blocks available to
                                        unprivileged user */
               fsfilcnt_t f_files;   /* Total file nodes in filesystem */
               fsfilcnt_t f_ffree;   /* Free file nodes in filesystem */
               fsid_t     f_fsid;    /* Filesystem ID */
               __fsword_t f_namelen; /* Maximum length of filenames */
               __fsword_t f_frsize;  /* Fragment size (since Linux 2.6) */
               __fsword_t f_flags;   /* Mount flags of filesystem
                                        (since Linux 2.6.36) */
               __fsword_t f_spare[xxx];
                               /* Padding bytes reserved for future use */
           };

CentOS 5.11 defines struct statfs as:

struct statfs
  {
    __SWORD_TYPE f_type;
    __SWORD_TYPE f_bsize;
#ifndef __USE_FILE_OFFSET64
    __fsblkcnt_t f_blocks;
    __fsblkcnt_t f_bfree;
    __fsblkcnt_t f_bavail;
    __fsfilcnt_t f_files;
    __fsfilcnt_t f_ffree;
#else
    __fsblkcnt64_t f_blocks;
    __fsblkcnt64_t f_bfree;
    __fsblkcnt64_t f_bavail;
    __fsfilcnt64_t f_files;
    __fsfilcnt64_t f_ffree;
#endif
    __fsid_t f_fsid;
    __SWORD_TYPE f_namelen;
    __SWORD_TYPE f_frsize;
    __SWORD_TYPE f_spare[5];
  };

so, Statfs_t in sysinfo.go corresponds to:

sysinfo.go:type Statfs_t struct { Type int64; Bsize int64; Blocks
uint64; Bfree uint64; Bavail uint64; Files uint64; Ffree uint64; Fsid
___fsid_t; Namelen int64; Frsize int64; Spare [4+1]int64; }

Uros.

Reply via email to