fs.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Display helpers for generic filesystem items
  4. *
  5. * Author: Chuck Lever <[email protected]>
  6. *
  7. * Copyright (c) 2020, Oracle and/or its affiliates.
  8. */
  9. #include <linux/fs.h>
  10. #define show_fs_dirent_type(x) \
  11. __print_symbolic(x, \
  12. { DT_UNKNOWN, "UNKNOWN" }, \
  13. { DT_FIFO, "FIFO" }, \
  14. { DT_CHR, "CHR" }, \
  15. { DT_DIR, "DIR" }, \
  16. { DT_BLK, "BLK" }, \
  17. { DT_REG, "REG" }, \
  18. { DT_LNK, "LNK" }, \
  19. { DT_SOCK, "SOCK" }, \
  20. { DT_WHT, "WHT" })
  21. #define show_fs_fcntl_open_flags(x) \
  22. __print_flags(x, "|", \
  23. { O_WRONLY, "O_WRONLY" }, \
  24. { O_RDWR, "O_RDWR" }, \
  25. { O_CREAT, "O_CREAT" }, \
  26. { O_EXCL, "O_EXCL" }, \
  27. { O_NOCTTY, "O_NOCTTY" }, \
  28. { O_TRUNC, "O_TRUNC" }, \
  29. { O_APPEND, "O_APPEND" }, \
  30. { O_NONBLOCK, "O_NONBLOCK" }, \
  31. { O_DSYNC, "O_DSYNC" }, \
  32. { O_DIRECT, "O_DIRECT" }, \
  33. { O_LARGEFILE, "O_LARGEFILE" }, \
  34. { O_DIRECTORY, "O_DIRECTORY" }, \
  35. { O_NOFOLLOW, "O_NOFOLLOW" }, \
  36. { O_NOATIME, "O_NOATIME" }, \
  37. { O_CLOEXEC, "O_CLOEXEC" })
  38. #define __fmode_flag(x) { (__force unsigned long)FMODE_##x, #x }
  39. #define show_fs_fmode_flags(x) \
  40. __print_flags(x, "|", \
  41. __fmode_flag(READ), \
  42. __fmode_flag(WRITE), \
  43. __fmode_flag(EXEC))
  44. #ifdef CONFIG_64BIT
  45. #define show_fs_fcntl_cmd(x) \
  46. __print_symbolic(x, \
  47. { F_DUPFD, "DUPFD" }, \
  48. { F_GETFD, "GETFD" }, \
  49. { F_SETFD, "SETFD" }, \
  50. { F_GETFL, "GETFL" }, \
  51. { F_SETFL, "SETFL" }, \
  52. { F_GETLK, "GETLK" }, \
  53. { F_SETLK, "SETLK" }, \
  54. { F_SETLKW, "SETLKW" }, \
  55. { F_SETOWN, "SETOWN" }, \
  56. { F_GETOWN, "GETOWN" }, \
  57. { F_SETSIG, "SETSIG" }, \
  58. { F_GETSIG, "GETSIG" }, \
  59. { F_SETOWN_EX, "SETOWN_EX" }, \
  60. { F_GETOWN_EX, "GETOWN_EX" }, \
  61. { F_GETOWNER_UIDS, "GETOWNER_UIDS" }, \
  62. { F_OFD_GETLK, "OFD_GETLK" }, \
  63. { F_OFD_SETLK, "OFD_SETLK" }, \
  64. { F_OFD_SETLKW, "OFD_SETLKW" })
  65. #else /* CONFIG_64BIT */
  66. #define show_fs_fcntl_cmd(x) \
  67. __print_symbolic(x, \
  68. { F_DUPFD, "DUPFD" }, \
  69. { F_GETFD, "GETFD" }, \
  70. { F_SETFD, "SETFD" }, \
  71. { F_GETFL, "GETFL" }, \
  72. { F_SETFL, "SETFL" }, \
  73. { F_GETLK, "GETLK" }, \
  74. { F_SETLK, "SETLK" }, \
  75. { F_SETLKW, "SETLKW" }, \
  76. { F_SETOWN, "SETOWN" }, \
  77. { F_GETOWN, "GETOWN" }, \
  78. { F_SETSIG, "SETSIG" }, \
  79. { F_GETSIG, "GETSIG" }, \
  80. { F_GETLK64, "GETLK64" }, \
  81. { F_SETLK64, "SETLK64" }, \
  82. { F_SETLKW64, "SETLKW64" }, \
  83. { F_SETOWN_EX, "SETOWN_EX" }, \
  84. { F_GETOWN_EX, "GETOWN_EX" }, \
  85. { F_GETOWNER_UIDS, "GETOWNER_UIDS" }, \
  86. { F_OFD_GETLK, "OFD_GETLK" }, \
  87. { F_OFD_SETLK, "OFD_SETLK" }, \
  88. { F_OFD_SETLKW, "OFD_SETLKW" })
  89. #endif /* CONFIG_64BIT */
  90. #define show_fs_fcntl_lock_type(x) \
  91. __print_symbolic(x, \
  92. { F_RDLCK, "RDLCK" }, \
  93. { F_WRLCK, "WRLCK" }, \
  94. { F_UNLCK, "UNLCK" })
  95. #define show_fs_lookup_flags(flags) \
  96. __print_flags(flags, "|", \
  97. { LOOKUP_FOLLOW, "FOLLOW" }, \
  98. { LOOKUP_DIRECTORY, "DIRECTORY" }, \
  99. { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
  100. { LOOKUP_EMPTY, "EMPTY" }, \
  101. { LOOKUP_DOWN, "DOWN" }, \
  102. { LOOKUP_MOUNTPOINT, "MOUNTPOINT" }, \
  103. { LOOKUP_REVAL, "REVAL" }, \
  104. { LOOKUP_RCU, "RCU" }, \
  105. { LOOKUP_OPEN, "OPEN" }, \
  106. { LOOKUP_CREATE, "CREATE" }, \
  107. { LOOKUP_EXCL, "EXCL" }, \
  108. { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
  109. { LOOKUP_PARENT, "PARENT" }, \
  110. { LOOKUP_NO_SYMLINKS, "NO_SYMLINKS" }, \
  111. { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \
  112. { LOOKUP_NO_XDEV, "NO_XDEV" }, \
  113. { LOOKUP_BENEATH, "BENEATH" }, \
  114. { LOOKUP_IN_ROOT, "IN_ROOT" }, \
  115. { LOOKUP_CACHED, "CACHED" })