linux/include/linux/statfs.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _LINUX_STATFS_H
   3#define _LINUX_STATFS_H
   4
   5#include <linux/types.h>
   6#include <asm/statfs.h>
   7#include <asm/byteorder.h>
   8
   9struct kstatfs {
  10        long f_type;
  11        long f_bsize;
  12        u64 f_blocks;
  13        u64 f_bfree;
  14        u64 f_bavail;
  15        u64 f_files;
  16        u64 f_ffree;
  17        __kernel_fsid_t f_fsid;
  18        long f_namelen;
  19        long f_frsize;
  20        long f_flags;
  21        long f_spare[4];
  22};
  23
  24/*
  25 * Definitions for the flag in f_flag.
  26 *
  27 * Generally these flags are equivalent to the MS_ flags used in the mount
  28 * ABI.  The exception is ST_VALID which has the same value as MS_REMOUNT
  29 * which doesn't make any sense for statfs.
  30 */
  31#define ST_RDONLY       0x0001  /* mount read-only */
  32#define ST_NOSUID       0x0002  /* ignore suid and sgid bits */
  33#define ST_NODEV        0x0004  /* disallow access to device special files */
  34#define ST_NOEXEC       0x0008  /* disallow program execution */
  35#define ST_SYNCHRONOUS  0x0010  /* writes are synced at once */
  36#define ST_VALID        0x0020  /* f_flags support is implemented */
  37#define ST_MANDLOCK     0x0040  /* allow mandatory locks on an FS */
  38/* 0x0080 used for ST_WRITE in glibc */
  39/* 0x0100 used for ST_APPEND in glibc */
  40/* 0x0200 used for ST_IMMUTABLE in glibc */
  41#define ST_NOATIME      0x0400  /* do not update access times */
  42#define ST_NODIRATIME   0x0800  /* do not update directory access times */
  43#define ST_RELATIME     0x1000  /* update atime relative to mtime/ctime */
  44#define ST_NOSYMFOLLOW  0x2000  /* do not follow symlinks */
  45
  46struct dentry;
  47extern int vfs_get_fsid(struct dentry *dentry, __kernel_fsid_t *fsid);
  48
  49static inline __kernel_fsid_t u64_to_fsid(u64 v)
  50{
  51        return (__kernel_fsid_t){.val = {(u32)v, (u32)(v>>32)}};
  52}
  53
  54/* Fold 16 bytes uuid to 64 bit fsid */
  55static inline __kernel_fsid_t uuid_to_fsid(__u8 *uuid)
  56{
  57        return u64_to_fsid(le64_to_cpup((void *)uuid) ^
  58                le64_to_cpup((void *)(uuid + sizeof(u64))));
  59}
  60
  61#endif
  62