You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2057 lines
50 KiB

  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="mergerfs - a featureful union filesystem">
  7. <link rel="canonical" href="https://trapexit.github.io/mergerfs/faq/technical_behavior_and_limitations/">
  8. <link rel="prev" href="../recommendations_and_warnings/">
  9. <link rel="next" href="../why_isnt_it_working/">
  10. <link rel="icon" href="../../assets/images/favicon.png">
  11. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.5">
  12. <title>Technical Behavior and Limitations - mergerfs</title>
  13. <link rel="stylesheet" href="../../assets/stylesheets/main.8608ea7d.min.css">
  14. <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
  15. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  16. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
  17. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  18. <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
  19. </head>
  20. <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  21. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  22. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  23. <label class="md-overlay" for="__drawer"></label>
  24. <div data-md-component="skip">
  25. <a href="#technical-behavior-and-limitations" class="md-skip">
  26. Skip to content
  27. </a>
  28. </div>
  29. <div data-md-component="announce">
  30. </div>
  31. <header class="md-header md-header--shadow" data-md-component="header">
  32. <nav class="md-header__inner md-grid" aria-label="Header">
  33. <a href="../.." title="mergerfs" class="md-header__button md-logo" aria-label="mergerfs" data-md-component="logo">
  34. <img src="../../logo.jpeg" alt="logo">
  35. </a>
  36. <label class="md-header__button md-icon" for="__drawer">
  37. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
  38. </label>
  39. <div class="md-header__title" data-md-component="header-title">
  40. <div class="md-header__ellipsis">
  41. <div class="md-header__topic">
  42. <span class="md-ellipsis">
  43. mergerfs
  44. </span>
  45. </div>
  46. <div class="md-header__topic" data-md-component="header-topic">
  47. <span class="md-ellipsis">
  48. Technical Behavior and Limitations
  49. </span>
  50. </div>
  51. </div>
  52. </div>
  53. <form class="md-header__option" data-md-component="palette">
  54. <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
  55. <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
  56. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
  57. </label>
  58. <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
  59. <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
  60. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  61. </label>
  62. <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2">
  63. <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
  64. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
  65. </label>
  66. </form>
  67. <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
  68. <label class="md-header__button md-icon" for="__search">
  69. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  70. </label>
  71. <div class="md-search" data-md-component="search" role="dialog">
  72. <label class="md-search__overlay" for="__search"></label>
  73. <div class="md-search__inner" role="search">
  74. <form class="md-search__form" name="search">
  75. <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
  76. <label class="md-search__icon md-icon" for="__search">
  77. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  78. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  79. </label>
  80. <nav class="md-search__options" aria-label="Search">
  81. <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
  82. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
  83. </a>
  84. <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
  85. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
  86. </button>
  87. </nav>
  88. </form>
  89. <div class="md-search__output">
  90. <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
  91. <div class="md-search-result" data-md-component="search-result">
  92. <div class="md-search-result__meta">
  93. Initializing search
  94. </div>
  95. <ol class="md-search-result__list" role="presentation"></ol>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="md-header__source">
  102. <a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
  103. <div class="md-source__icon md-icon">
  104. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  105. </div>
  106. <div class="md-source__repository">
  107. mergerfs
  108. </div>
  109. </a>
  110. </div>
  111. </nav>
  112. </header>
  113. <div class="md-container" data-md-component="container">
  114. <main class="md-main" data-md-component="main">
  115. <div class="md-main__inner md-grid">
  116. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  117. <div class="md-sidebar__scrollwrap">
  118. <div class="md-sidebar__inner">
  119. <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  120. <label class="md-nav__title" for="__drawer">
  121. <a href="../.." title="mergerfs" class="md-nav__button md-logo" aria-label="mergerfs" data-md-component="logo">
  122. <img src="../../logo.jpeg" alt="logo">
  123. </a>
  124. mergerfs
  125. </label>
  126. <div class="md-nav__source">
  127. <a href="https://github.com/trapexit/mergerfs" title="Go to repository" class="md-source" data-md-component="source">
  128. <div class="md-source__icon md-icon">
  129. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  130. </div>
  131. <div class="md-source__repository">
  132. mergerfs
  133. </div>
  134. </a>
  135. </div>
  136. <ul class="md-nav__list" data-md-scrollfix>
  137. <li class="md-nav__item">
  138. <a href="../.." class="md-nav__link">
  139. <span class="md-ellipsis">
  140. Home
  141. </span>
  142. </a>
  143. </li>
  144. <li class="md-nav__item">
  145. <a href="../../quickstart/" class="md-nav__link">
  146. <span class="md-ellipsis">
  147. QuickStart
  148. </span>
  149. </a>
  150. </li>
  151. <li class="md-nav__item md-nav__item--nested">
  152. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
  153. <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
  154. <span class="md-ellipsis">
  155. Installation
  156. </span>
  157. <span class="md-nav__icon md-icon"></span>
  158. </label>
  159. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
  160. <label class="md-nav__title" for="__nav_3">
  161. <span class="md-nav__icon md-icon"></span>
  162. Installation
  163. </label>
  164. <ul class="md-nav__list" data-md-scrollfix>
  165. <li class="md-nav__item">
  166. <a href="../../setup/installation/" class="md-nav__link">
  167. <span class="md-ellipsis">
  168. Installation
  169. </span>
  170. </a>
  171. </li>
  172. <li class="md-nav__item">
  173. <a href="../../setup/upgrade/" class="md-nav__link">
  174. <span class="md-ellipsis">
  175. Upgrade
  176. </span>
  177. </a>
  178. </li>
  179. <li class="md-nav__item">
  180. <a href="../../setup/build/" class="md-nav__link">
  181. <span class="md-ellipsis">
  182. Build
  183. </span>
  184. </a>
  185. </li>
  186. </ul>
  187. </nav>
  188. </li>
  189. <li class="md-nav__item">
  190. <a href="../../terminology/" class="md-nav__link">
  191. <span class="md-ellipsis">
  192. Terminology
  193. </span>
  194. </a>
  195. </li>
  196. <li class="md-nav__item md-nav__item--nested">
  197. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
  198. <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
  199. <span class="md-ellipsis">
  200. Config
  201. </span>
  202. <span class="md-nav__icon md-icon"></span>
  203. </label>
  204. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
  205. <label class="md-nav__title" for="__nav_5">
  206. <span class="md-nav__icon md-icon"></span>
  207. Config
  208. </label>
  209. <ul class="md-nav__list" data-md-scrollfix>
  210. <li class="md-nav__item">
  211. <a href="../../config/options/" class="md-nav__link">
  212. <span class="md-ellipsis">
  213. Options
  214. </span>
  215. </a>
  216. </li>
  217. <li class="md-nav__item">
  218. <a href="../../config/deprecated_options/" class="md-nav__link">
  219. <span class="md-ellipsis">
  220. Deprecated Options
  221. </span>
  222. </a>
  223. </li>
  224. <li class="md-nav__item">
  225. <a href="../../config/branches/" class="md-nav__link">
  226. <span class="md-ellipsis">
  227. branches
  228. </span>
  229. </a>
  230. </li>
  231. <li class="md-nav__item">
  232. <a href="../../config/functions_categories_and_policies/" class="md-nav__link">
  233. <span class="md-ellipsis">
  234. functions, categories and policies
  235. </span>
  236. </a>
  237. </li>
  238. <li class="md-nav__item">
  239. <a href="../../config/func_readdir/" class="md-nav__link">
  240. <span class="md-ellipsis">
  241. func.readdir
  242. </span>
  243. </a>
  244. </li>
  245. <li class="md-nav__item">
  246. <a href="../../config/rename_and_link/" class="md-nav__link">
  247. <span class="md-ellipsis">
  248. rename and link
  249. </span>
  250. </a>
  251. </li>
  252. <li class="md-nav__item">
  253. <a href="../../config/cache/" class="md-nav__link">
  254. <span class="md-ellipsis">
  255. caching
  256. </span>
  257. </a>
  258. </li>
  259. <li class="md-nav__item">
  260. <a href="../../config/readahead/" class="md-nav__link">
  261. <span class="md-ellipsis">
  262. readahead
  263. </span>
  264. </a>
  265. </li>
  266. <li class="md-nav__item">
  267. <a href="../../config/inodecalc/" class="md-nav__link">
  268. <span class="md-ellipsis">
  269. inodecalc
  270. </span>
  271. </a>
  272. </li>
  273. <li class="md-nav__item">
  274. <a href="../../config/threads/" class="md-nav__link">
  275. <span class="md-ellipsis">
  276. threads
  277. </span>
  278. </a>
  279. </li>
  280. <li class="md-nav__item">
  281. <a href="../../config/pin-threads/" class="md-nav__link">
  282. <span class="md-ellipsis">
  283. pin-threads
  284. </span>
  285. </a>
  286. </li>
  287. <li class="md-nav__item">
  288. <a href="../../config/link_cow/" class="md-nav__link">
  289. <span class="md-ellipsis">
  290. link_cow
  291. </span>
  292. </a>
  293. </li>
  294. <li class="md-nav__item">
  295. <a href="../../config/fuse_msg_size/" class="md-nav__link">
  296. <span class="md-ellipsis">
  297. fuse_msg_size
  298. </span>
  299. </a>
  300. </li>
  301. <li class="md-nav__item">
  302. <a href="../../config/follow-symlinks/" class="md-nav__link">
  303. <span class="md-ellipsis">
  304. follow-symlinks
  305. </span>
  306. </a>
  307. </li>
  308. <li class="md-nav__item">
  309. <a href="../../config/link-exdev/" class="md-nav__link">
  310. <span class="md-ellipsis">
  311. link-exdev
  312. </span>
  313. </a>
  314. </li>
  315. <li class="md-nav__item">
  316. <a href="../../config/rename-exdev/" class="md-nav__link">
  317. <span class="md-ellipsis">
  318. rename-exdev
  319. </span>
  320. </a>
  321. </li>
  322. <li class="md-nav__item">
  323. <a href="../../config/symlinkify/" class="md-nav__link">
  324. <span class="md-ellipsis">
  325. symlinkify
  326. </span>
  327. </a>
  328. </li>
  329. <li class="md-nav__item">
  330. <a href="../../config/nullrw/" class="md-nav__link">
  331. <span class="md-ellipsis">
  332. nullrw
  333. </span>
  334. </a>
  335. </li>
  336. <li class="md-nav__item">
  337. <a href="../../config/xattr/" class="md-nav__link">
  338. <span class="md-ellipsis">
  339. xattr
  340. </span>
  341. </a>
  342. </li>
  343. <li class="md-nav__item">
  344. <a href="../../config/nfsopenhack/" class="md-nav__link">
  345. <span class="md-ellipsis">
  346. nfsopenhack
  347. </span>
  348. </a>
  349. </li>
  350. <li class="md-nav__item">
  351. <a href="../../config/statfs/" class="md-nav__link">
  352. <span class="md-ellipsis">
  353. statfs / statvfs
  354. </span>
  355. </a>
  356. </li>
  357. <li class="md-nav__item">
  358. <a href="../../config/flush-on-close/" class="md-nav__link">
  359. <span class="md-ellipsis">
  360. flush-on-close
  361. </span>
  362. </a>
  363. </li>
  364. <li class="md-nav__item">
  365. <a href="../../config/export-support/" class="md-nav__link">
  366. <span class="md-ellipsis">
  367. export-support
  368. </span>
  369. </a>
  370. </li>
  371. </ul>
  372. </nav>
  373. </li>
  374. <li class="md-nav__item">
  375. <a href="../../error_handling_and_logging/" class="md-nav__link">
  376. <span class="md-ellipsis">
  377. Error Handling and Logging
  378. </span>
  379. </a>
  380. </li>
  381. <li class="md-nav__item">
  382. <a href="../../runtime_interfaces/" class="md-nav__link">
  383. <span class="md-ellipsis">
  384. Runtime Interfaces
  385. </span>
  386. </a>
  387. </li>
  388. <li class="md-nav__item">
  389. <a href="../../remote_filesystems/" class="md-nav__link">
  390. <span class="md-ellipsis">
  391. Remote Filesystems
  392. </span>
  393. </a>
  394. </li>
  395. <li class="md-nav__item">
  396. <a href="../../tips_notes/" class="md-nav__link">
  397. <span class="md-ellipsis">
  398. Tips and Notes
  399. </span>
  400. </a>
  401. </li>
  402. <li class="md-nav__item">
  403. <a href="../../known_issues_bugs/" class="md-nav__link">
  404. <span class="md-ellipsis">
  405. Known Issues and Bugs
  406. </span>
  407. </a>
  408. </li>
  409. <li class="md-nav__item">
  410. <a href="../../project_comparisons/" class="md-nav__link">
  411. <span class="md-ellipsis">
  412. Project Comparisons
  413. </span>
  414. </a>
  415. </li>
  416. <li class="md-nav__item">
  417. <a href="../../performance/" class="md-nav__link">
  418. <span class="md-ellipsis">
  419. Tweaking Performance
  420. </span>
  421. </a>
  422. </li>
  423. <li class="md-nav__item">
  424. <a href="../../benchmarking/" class="md-nav__link">
  425. <span class="md-ellipsis">
  426. Benchmarking
  427. </span>
  428. </a>
  429. </li>
  430. <li class="md-nav__item">
  431. <a href="../../tooling/" class="md-nav__link">
  432. <span class="md-ellipsis">
  433. Tooling
  434. </span>
  435. </a>
  436. </li>
  437. <li class="md-nav__item">
  438. <a href="../../usage_patterns/" class="md-nav__link">
  439. <span class="md-ellipsis">
  440. Usage Patterns
  441. </span>
  442. </a>
  443. </li>
  444. <li class="md-nav__item md-nav__item--active md-nav__item--nested">
  445. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" checked>
  446. <label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
  447. <span class="md-ellipsis">
  448. FAQ
  449. </span>
  450. <span class="md-nav__icon md-icon"></span>
  451. </label>
  452. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="true">
  453. <label class="md-nav__title" for="__nav_16">
  454. <span class="md-nav__icon md-icon"></span>
  455. FAQ
  456. </label>
  457. <ul class="md-nav__list" data-md-scrollfix>
  458. <li class="md-nav__item">
  459. <a href="../reliability_and_scalability/" class="md-nav__link">
  460. <span class="md-ellipsis">
  461. Reliability and Scalability
  462. </span>
  463. </a>
  464. </li>
  465. <li class="md-nav__item">
  466. <a href="../usage_and_functionality/" class="md-nav__link">
  467. <span class="md-ellipsis">
  468. Usage and Functionality
  469. </span>
  470. </a>
  471. </li>
  472. <li class="md-nav__item">
  473. <a href="../configuration_and_policies/" class="md-nav__link">
  474. <span class="md-ellipsis">
  475. Configuration and Policies
  476. </span>
  477. </a>
  478. </li>
  479. <li class="md-nav__item">
  480. <a href="../compatibility_and_integration/" class="md-nav__link">
  481. <span class="md-ellipsis">
  482. Compatibility and Integration
  483. </span>
  484. </a>
  485. </li>
  486. <li class="md-nav__item">
  487. <a href="../recommendations_and_warnings/" class="md-nav__link">
  488. <span class="md-ellipsis">
  489. Recommendations and Warnings
  490. </span>
  491. </a>
  492. </li>
  493. <li class="md-nav__item md-nav__item--active">
  494. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  495. <label class="md-nav__link md-nav__link--active" for="__toc">
  496. <span class="md-ellipsis">
  497. Technical Behavior and Limitations
  498. </span>
  499. <span class="md-nav__icon md-icon"></span>
  500. </label>
  501. <a href="./" class="md-nav__link md-nav__link--active">
  502. <span class="md-ellipsis">
  503. Technical Behavior and Limitations
  504. </span>
  505. </a>
  506. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  507. <label class="md-nav__title" for="__toc">
  508. <span class="md-nav__icon md-icon"></span>
  509. Table of contents
  510. </label>
  511. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  512. <li class="md-nav__item">
  513. <a href="#do-hardlinks-work" class="md-nav__link">
  514. <span class="md-ellipsis">
  515. Do hardlinks work?
  516. </span>
  517. </a>
  518. </li>
  519. <li class="md-nav__item">
  520. <a href="#how-does-mergerfs-handle-moving-and-copying-of-files" class="md-nav__link">
  521. <span class="md-ellipsis">
  522. How does mergerfs handle moving and copying of files?
  523. </span>
  524. </a>
  525. </li>
  526. <li class="md-nav__item">
  527. <a href="#does-ficlone-or-ficlonerange-work" class="md-nav__link">
  528. <span class="md-ellipsis">
  529. Does FICLONE or FICLONERANGE work?
  530. </span>
  531. </a>
  532. </li>
  533. <li class="md-nav__item">
  534. <a href="#why-do-i-get-an-out-of-space-no-space-left-on-device-enospc-error-even-though-there-appears-to-be-lots-of-space-available" class="md-nav__link">
  535. <span class="md-ellipsis">
  536. Why do I get an "out of space" / "no space left on device" / ENOSPC error even though there appears to be lots of space available?
  537. </span>
  538. </a>
  539. </li>
  540. <li class="md-nav__item">
  541. <a href="#why-does-the-total-available-space-in-mergerfs-not-equal-outside" class="md-nav__link">
  542. <span class="md-ellipsis">
  543. Why does the total available space in mergerfs not equal outside?
  544. </span>
  545. </a>
  546. </li>
  547. <li class="md-nav__item">
  548. <a href="#i-notice-massive-slowdowns-of-writes-when-enabling-cachefiles" class="md-nav__link">
  549. <span class="md-ellipsis">
  550. I notice massive slowdowns of writes when enabling cache.files.
  551. </span>
  552. </a>
  553. </li>
  554. <li class="md-nav__item">
  555. <a href="#why-use-fuse-why-not-a-kernel-based-solution" class="md-nav__link">
  556. <span class="md-ellipsis">
  557. Why use FUSE? Why not a kernel based solution?
  558. </span>
  559. </a>
  560. </li>
  561. <li class="md-nav__item">
  562. <a href="#is-my-oss-libfuse-needed-for-mergerfs-to-work" class="md-nav__link">
  563. <span class="md-ellipsis">
  564. Is my OS's libfuse needed for mergerfs to work?
  565. </span>
  566. </a>
  567. </li>
  568. <li class="md-nav__item">
  569. <a href="#why-was-splice-support-removed" class="md-nav__link">
  570. <span class="md-ellipsis">
  571. Why was splice support removed?
  572. </span>
  573. </a>
  574. </li>
  575. <li class="md-nav__item">
  576. <a href="#how-does-mergerfs-handle-credentials" class="md-nav__link">
  577. <span class="md-ellipsis">
  578. How does mergerfs handle credentials?
  579. </span>
  580. </a>
  581. </li>
  582. </ul>
  583. </nav>
  584. </li>
  585. <li class="md-nav__item">
  586. <a href="../why_isnt_it_working/" class="md-nav__link">
  587. <span class="md-ellipsis">
  588. "Why isn't it working?"
  589. </span>
  590. </a>
  591. </li>
  592. <li class="md-nav__item">
  593. <a href="../limit_drive_spinup/" class="md-nav__link">
  594. <span class="md-ellipsis">
  595. Limiting drive spinup
  596. </span>
  597. </a>
  598. </li>
  599. </ul>
  600. </nav>
  601. </li>
  602. <li class="md-nav__item">
  603. <a href="../../related_projects/" class="md-nav__link">
  604. <span class="md-ellipsis">
  605. Related Projects
  606. </span>
  607. </a>
  608. </li>
  609. <li class="md-nav__item">
  610. <a href="../../media_and_publicity/" class="md-nav__link">
  611. <span class="md-ellipsis">
  612. Media and Publicity
  613. </span>
  614. </a>
  615. </li>
  616. <li class="md-nav__item">
  617. <a href="../../support/" class="md-nav__link">
  618. <span class="md-ellipsis">
  619. Support
  620. </span>
  621. </a>
  622. </li>
  623. <li class="md-nav__item">
  624. <a href="../../sponsorship_and_donations/" class="md-nav__link">
  625. <span class="md-ellipsis">
  626. Sponsorship and Donations
  627. </span>
  628. </a>
  629. </li>
  630. </ul>
  631. </nav>
  632. </div>
  633. </div>
  634. </div>
  635. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  636. <div class="md-sidebar__scrollwrap">
  637. <div class="md-sidebar__inner">
  638. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  639. <label class="md-nav__title" for="__toc">
  640. <span class="md-nav__icon md-icon"></span>
  641. Table of contents
  642. </label>
  643. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  644. <li class="md-nav__item">
  645. <a href="#do-hardlinks-work" class="md-nav__link">
  646. <span class="md-ellipsis">
  647. Do hardlinks work?
  648. </span>
  649. </a>
  650. </li>
  651. <li class="md-nav__item">
  652. <a href="#how-does-mergerfs-handle-moving-and-copying-of-files" class="md-nav__link">
  653. <span class="md-ellipsis">
  654. How does mergerfs handle moving and copying of files?
  655. </span>
  656. </a>
  657. </li>
  658. <li class="md-nav__item">
  659. <a href="#does-ficlone-or-ficlonerange-work" class="md-nav__link">
  660. <span class="md-ellipsis">
  661. Does FICLONE or FICLONERANGE work?
  662. </span>
  663. </a>
  664. </li>
  665. <li class="md-nav__item">
  666. <a href="#why-do-i-get-an-out-of-space-no-space-left-on-device-enospc-error-even-though-there-appears-to-be-lots-of-space-available" class="md-nav__link">
  667. <span class="md-ellipsis">
  668. Why do I get an "out of space" / "no space left on device" / ENOSPC error even though there appears to be lots of space available?
  669. </span>
  670. </a>
  671. </li>
  672. <li class="md-nav__item">
  673. <a href="#why-does-the-total-available-space-in-mergerfs-not-equal-outside" class="md-nav__link">
  674. <span class="md-ellipsis">
  675. Why does the total available space in mergerfs not equal outside?
  676. </span>
  677. </a>
  678. </li>
  679. <li class="md-nav__item">
  680. <a href="#i-notice-massive-slowdowns-of-writes-when-enabling-cachefiles" class="md-nav__link">
  681. <span class="md-ellipsis">
  682. I notice massive slowdowns of writes when enabling cache.files.
  683. </span>
  684. </a>
  685. </li>
  686. <li class="md-nav__item">
  687. <a href="#why-use-fuse-why-not-a-kernel-based-solution" class="md-nav__link">
  688. <span class="md-ellipsis">
  689. Why use FUSE? Why not a kernel based solution?
  690. </span>
  691. </a>
  692. </li>
  693. <li class="md-nav__item">
  694. <a href="#is-my-oss-libfuse-needed-for-mergerfs-to-work" class="md-nav__link">
  695. <span class="md-ellipsis">
  696. Is my OS's libfuse needed for mergerfs to work?
  697. </span>
  698. </a>
  699. </li>
  700. <li class="md-nav__item">
  701. <a href="#why-was-splice-support-removed" class="md-nav__link">
  702. <span class="md-ellipsis">
  703. Why was splice support removed?
  704. </span>
  705. </a>
  706. </li>
  707. <li class="md-nav__item">
  708. <a href="#how-does-mergerfs-handle-credentials" class="md-nav__link">
  709. <span class="md-ellipsis">
  710. How does mergerfs handle credentials?
  711. </span>
  712. </a>
  713. </li>
  714. </ul>
  715. </nav>
  716. </div>
  717. </div>
  718. </div>
  719. <div class="md-content" data-md-component="content">
  720. <article class="md-content__inner md-typeset">
  721. <a href="https://github.com/trapexit/mergerfs/edit/master/mkdocs/docs/faq/technical_behavior_and_limitations.md" title="Edit this page" class="md-content__button md-icon">
  722. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
  723. </a>
  724. <a href="https://github.com/trapexit/mergerfs/raw/master/mkdocs/docs/faq/technical_behavior_and_limitations.md" title="View source of this page" class="md-content__button md-icon">
  725. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg>
  726. </a>
  727. <h1 id="technical-behavior-and-limitations">Technical Behavior and Limitations</h1>
  728. <h2 id="do-hardlinks-work">Do hardlinks work?</h2>
  729. <p>Yes. There is no option to enable or disable links. They are
  730. fundimentally supported in compatible situations. That said the inode
  731. of a file is not necessarily indicitive of two file names linking to
  732. the same underlying data. See also the option <code>inodecalc</code> for how
  733. inode values are calculated.</p>
  734. <p>What mergerfs does not do is fake hard links across branches. Read the
  735. section <a href="../../config/rename_and_link/">rename &amp; link</a> for how it
  736. works.</p>
  737. <p>Remember that hardlinks will <strong>NOT</strong> work across devices. That
  738. includes between the original filesystem and a mergerfs pool, between
  739. two separate pools of the same underlying filesystems, or bind mounts
  740. of paths within the mergerfs pool. The latter is common when using
  741. Docker or Podman. Multiple volumes (bind mounts) to the same
  742. underlying filesystem are considered different devices. There is no
  743. way to link or rename between them. You should mount in the highest
  744. directory in the mergerfs pool that includes all the paths you need if
  745. you want links and rename to work.</p>
  746. <h2 id="how-does-mergerfs-handle-moving-and-copying-of-files">How does mergerfs handle moving and copying of files?</h2>
  747. <p>This is a <em>very</em> common mistaken assumption regarding how filesystems
  748. work. There is no such thing as "move" or "copy." These concepts are
  749. high level behaviors made up of numerous independent steps and <em>not</em>
  750. individual filesystem functions.</p>
  751. <p>A "move" can include a "copy" so lets describe copy first.</p>
  752. <p>When an application copies a file from "source" to "destination" it
  753. can do so in a number of ways but the basics are the following.</p>
  754. <ol>
  755. <li><code>open</code> the source file.</li>
  756. <li><code>create</code> the destination file.</li>
  757. <li><code>read</code> a chunk of data from source and <code>write</code> to
  758. destination. Continue till it runs out of data to copy.</li>
  759. <li>Copy file metadata (<code>stat</code>) such as ownership (<code>chown</code>),
  760. permissions (<code>chmod</code>), timestamps (<code>utimes</code>), extended attributes
  761. (<code>getxattr</code>, <code>setxattr</code>), etc.</li>
  762. <li><code>close</code> source and destination files.</li>
  763. </ol>
  764. <p>"move" is typically a <code>rename(src,dst)</code> and if that errors with
  765. <code>EXDEV</code> (meaning the source and destination are on different
  766. filesystems) the application will "copy" the file as described above
  767. and then it removes (<code>unlink</code>) the source.</p>
  768. <p>The <code>rename(src,dst)</code>, <code>open(src)</code>, <code>create(dst)</code>, data copying,
  769. metadata copying, <code>unlink(src)</code>, etc. are entirely distinct and
  770. separate events. There is really no practical way to know that what is
  771. ultimately occurring is the "copying" of a file or what the source
  772. file would be. Since the source is not known there is no way to know
  773. how large a created file is destined to become. This is why it is
  774. impossible for mergerfs to choose the branch for a <code>create</code> based on
  775. file size. The only context provided when a file is created, besides
  776. the name, is the permissions, if it is to be read and/or written, and
  777. some low level settings for the operating system.</p>
  778. <p>All of this means that mergerfs can not make decisions when a file is
  779. created based on file size or the source of the data. That information
  780. is simply not available. At best mergerfs could respond to files
  781. reaching a certain size when writing data, a file is closed, or
  782. renamed.</p>
  783. <p>Related: if a user wished to have mergerfs perform certain activities
  784. based on the name of a file it is common and even best practice for a
  785. program to write to a temporary file first and then rename to its
  786. final destination. That temporary file name will typically be random
  787. and have no indication of the type of file being written. At best
  788. something could be done on rename.</p>
  789. <h2 id="does-ficlone-or-ficlonerange-work">Does FICLONE or FICLONERANGE work?</h2>
  790. <p>Unfortunately not. FUSE, the technology mergerfs is based on, does not
  791. support the <code>clone_file_range</code> feature needed for it to work. mergerfs
  792. won't even know such a request is made. The kernel will simply return
  793. an error back to the application making the request.</p>
  794. <p>Should FUSE gain the ability mergerfs will be updated to support it.</p>
  795. <h2 id="why-do-i-get-an-out-of-space-no-space-left-on-device-enospc-error-even-though-there-appears-to-be-lots-of-space-available">Why do I get an "out of space" / "no space left on device" / ENOSPC error even though there appears to be lots of space available?</h2>
  796. <p>First make sure you've read the sections above about policies, path
  797. preservation, branch filtering, and the options <code>minfreespace</code>,
  798. <code>moveonenospc</code>, <code>statfs</code>, and <code>statfs_ignore</code>.</p>
  799. <p>mergerfs is simply presenting a union of the content within multiple
  800. branches. The reported free space is an aggregate of space available
  801. within the pool (behavior modified by <code>statfs</code> and
  802. <code>statfs_ignore</code>). It does not represent a contiguous space. In the
  803. same way that read-only filesystems, those with quotas, or reserved
  804. space report the full theoretical space available.</p>
  805. <p>Due to path preservation, branch tagging, read-only status, and
  806. <code>minfreespace</code> settings it is perfectly valid that <code>ENOSPC</code> / "out of
  807. space" / "no space left on device" be returned. It is doing what was
  808. asked of it: filtering possible branches due to those settings. Only
  809. one error can be returned and if one of the reasons for filtering a
  810. branch was <code>minfreespace</code> then it will be returned as
  811. such. <code>moveonenospc</code> is only relevant to writing a file which is too
  812. large for the filesystem it's currently on.</p>
  813. <p>It is also possible that the filesystem selected has run out of
  814. inodes. Use <code>df -i</code> to list the total and available inodes per
  815. filesystem.</p>
  816. <p>If you don't care about path preservation then simply change the
  817. <code>create</code> policy to one which isn't. <code>mfs</code> is probably what most are
  818. looking for. The reason it's not default is because it was originally
  819. set to <code>epmfs</code> and changing it now would change people's setup. Such a
  820. setting change will likely occur in mergerfs 3.</p>
  821. <h2 id="why-does-the-total-available-space-in-mergerfs-not-equal-outside">Why does the total available space in mergerfs not equal outside?</h2>
  822. <p>Are you using ext2/3/4? With reserve for root? mergerfs uses available
  823. space for statfs calculations. If you've reserved space for root then
  824. it won't show up.</p>
  825. <p>You can remove the reserve by running: <code>tune2fs -m 0 &lt;device&gt;</code></p>
  826. <h2 id="i-notice-massive-slowdowns-of-writes-when-enabling-cachefiles">I notice massive slowdowns of writes when enabling cache.files.</h2>
  827. <p>When file caching is enabled in any form (<code>cache.files!=off</code>) it will
  828. issue <code>getxattr</code> requests for <code>security.capability</code> prior to <em>every
  829. single write</em>. This will usually result in performance degradation,
  830. especially when using a network filesystem (such as NFS or SMB.)
  831. Unfortunately at this moment, the kernel is not caching the response.</p>
  832. <p>To work around this situation mergerfs offers a few solutions.</p>
  833. <ol>
  834. <li>Set <code>security_capability=false</code>. It will short circuit any call and
  835. return <code>ENOATTR</code>. This still means though that mergerfs will
  836. receive the request before every write but at least it doesn't get
  837. passed through to the underlying filesystem.</li>
  838. <li>Set <code>xattr=noattr</code>. Same as above but applies to <em>all</em> calls to
  839. getxattr. Not just <code>security.capability</code>. This will not be cached
  840. by the kernel either but mergerfs' runtime config system will still
  841. function.</li>
  842. <li>Set <code>xattr=nosys</code>. Results in mergerfs returning <code>ENOSYS</code> which
  843. <em>will</em> be cached by the kernel. No future xattr calls will be
  844. forwarded to mergerfs. The downside is that also means the xattr
  845. based config and query functionality won't work either.</li>
  846. <li>Disable file caching. If you aren't using applications which use
  847. <code>mmap</code> it's probably simpler to just disable it altogether. The
  848. kernel won't send the requests when caching is disabled.</li>
  849. </ol>
  850. <h2 id="why-use-fuse-why-not-a-kernel-based-solution">Why use FUSE? Why not a kernel based solution?</h2>
  851. <p>As with any solution to a problem, there are advantages and
  852. disadvantages to each one.</p>
  853. <p>A FUSE based solution has all the downsides of FUSE:</p>
  854. <ul>
  855. <li>Higher IO latency due to the trips in and out of kernel space</li>
  856. <li>Higher general overhead due to trips in and out of kernel space</li>
  857. <li>Double caching when using page caching</li>
  858. <li>Misc limitations due to FUSE's design</li>
  859. </ul>
  860. <p>But FUSE also has a lot of upsides:</p>
  861. <ul>
  862. <li>Easier to offer a cross platform solution</li>
  863. <li>Easier forward and backward compatibility</li>
  864. <li>Easier updates for users</li>
  865. <li>Easier and faster release cadence</li>
  866. <li>Allows more flexibility in design and features</li>
  867. <li>Overall easier to write, secure, and maintain</li>
  868. <li>Much lower barrier to entry (getting code into the kernel takes a
  869. lot of time and effort initially)</li>
  870. </ul>
  871. <h2 id="is-my-oss-libfuse-needed-for-mergerfs-to-work">Is my OS's libfuse needed for mergerfs to work?</h2>
  872. <p>No. Normally <code>mount.fuse</code> is needed to get mergerfs (or any FUSE
  873. filesystem to mount using the <code>mount</code> command but in vendoring the
  874. libfuse library the <code>mount.fuse</code> app has been renamed to
  875. <code>mount.mergerfs</code> meaning the filesystem type in <code>fstab</code> can simply be
  876. <code>mergerfs</code>. That said there should be no harm in having it installed
  877. and continuing to using <code>fuse.mergerfs</code> as the type in <code>/etc/fstab</code>.</p>
  878. <p>If <code>mergerfs</code> doesn't work as a type it could be due to how the
  879. <code>mount.mergerfs</code> tool was installed. Must be in <code>/sbin/</code> with proper
  880. permissions.</p>
  881. <h2 id="why-was-splice-support-removed">Why was splice support removed?</h2>
  882. <p>After a lot of testing over the years, splicing always appeared to
  883. at best, provide equivalent performance, and in some cases, worse
  884. performance. Splice is not supported on other platforms forcing a
  885. traditional read/write fallback to be provided. The splice code was
  886. removed to simplify the codebase.</p>
  887. <h2 id="how-does-mergerfs-handle-credentials">How does mergerfs handle credentials?</h2>
  888. <p>mergerfs is a multithreaded application in order to handle requests
  889. from the kernel concurrently. Each FUSE message has a header with
  890. certain details about the request include the process ID (pid) of the
  891. requestion application, the process' effective user id (uid), and
  892. group id (gid). To ensure proper POSIX filesystem behavior and
  893. security mergerfs must change its identity to match that of the
  894. requester when performing the core filesystem function on the
  895. underlying filesystem. On most Unix/POSIX based system a process and
  896. all its threads are under the same uid and gid. However, on Linux each
  897. thread may have its own credentials. This allows mergerfs to be
  898. multithreaded and for each thread to change to the credentials
  899. (seteuid,setegid) as required by the incoming message it is
  900. handling. However, on FreeBSD this is not possible at the moment
  901. (though there has been
  902. <a href="https://wiki.freebsd.org/Per-Thread%20Credentials">discussions</a> and
  903. as such must change the credentials of the whole application when
  904. actioning messages. mergerfs does optimize this behavior by only
  905. changing credentials and locking the thread to do so if the process is
  906. currently not the same as what is necessary by the incoming request.</p>
  907. </article>
  908. </div>
  909. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  910. </div>
  911. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  912. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  913. Back to top
  914. </button>
  915. </main>
  916. <footer class="md-footer">
  917. <nav class="md-footer__inner md-grid" aria-label="Footer" >
  918. <a href="../recommendations_and_warnings/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Recommendations and Warnings">
  919. <div class="md-footer__button md-icon">
  920. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  921. </div>
  922. <div class="md-footer__title">
  923. <span class="md-footer__direction">
  924. Previous
  925. </span>
  926. <div class="md-ellipsis">
  927. Recommendations and Warnings
  928. </div>
  929. </div>
  930. </a>
  931. <a href="../why_isnt_it_working/" class="md-footer__link md-footer__link--next" aria-label="Next: &#34;Why isn&#39;t it working?&#34;">
  932. <div class="md-footer__title">
  933. <span class="md-footer__direction">
  934. Next
  935. </span>
  936. <div class="md-ellipsis">
  937. "Why isn't it working?"
  938. </div>
  939. </div>
  940. <div class="md-footer__button md-icon">
  941. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
  942. </div>
  943. </a>
  944. </nav>
  945. <div class="md-footer-meta md-typeset">
  946. <div class="md-footer-meta__inner md-grid">
  947. <div class="md-copyright">
  948. Made with
  949. <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
  950. Material for MkDocs
  951. </a>
  952. </div>
  953. </div>
  954. </div>
  955. </footer>
  956. </div>
  957. <div class="md-dialog" data-md-component="dialog">
  958. <div class="md-dialog__inner md-typeset"></div>
  959. </div>
  960. <script id="__config" type="application/json">{"base": "../..", "features": ["content.action.edit", "content.action.view", "content.code.copy", "content.code.select", "navigation.footer", "navigation.instant", "navigation.instant.prefetch", "navigation.path", "navigation.top", "navigation.tracking", "optimize", "search.share", "toc.follow"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
  961. <script src="../../assets/javascripts/bundle.f1b6f286.min.js"></script>
  962. </body>
  963. </html>