1*1687d771SAlexander Ziaee.\"- 2*1687d771SAlexander Ziaee.\" SPDX-License-Identifier: BSD-2-Clause 3*1687d771SAlexander Ziaee.\" 4*1687d771SAlexander Ziaee.\" Copyright (c) 2022 Klara, Inc. 5*1687d771SAlexander Ziaee.\" 6*1687d771SAlexander Ziaee.\" Redistribution and use in source and binary forms, with or without 7*1687d771SAlexander Ziaee.\" modification, are permitted provided that the following conditions 8*1687d771SAlexander Ziaee.\" are met: 9*1687d771SAlexander Ziaee.\" 1. Redistributions of source code must retain the above copyright 10*1687d771SAlexander Ziaee.\" notice, this list of conditions and the following disclaimer. 11*1687d771SAlexander Ziaee.\" 2. Redistributions in binary form must reproduce the above copyright 12*1687d771SAlexander Ziaee.\" notice, this list of conditions and the following disclaimer in the 13*1687d771SAlexander Ziaee.\" documentation and/or other materials provided with the distribution. 14*1687d771SAlexander Ziaee.\" 15*1687d771SAlexander Ziaee.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*1687d771SAlexander Ziaee.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*1687d771SAlexander Ziaee.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*1687d771SAlexander Ziaee.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*1687d771SAlexander Ziaee.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*1687d771SAlexander Ziaee.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*1687d771SAlexander Ziaee.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*1687d771SAlexander Ziaee.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*1687d771SAlexander Ziaee.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*1687d771SAlexander Ziaee.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*1687d771SAlexander Ziaee.\" SUCH DAMAGE. 26*1687d771SAlexander Ziaee.\" 27*1687d771SAlexander Ziaee.Dd February 14, 2023 28*1687d771SAlexander Ziaee.Dt TARFS 5 29*1687d771SAlexander Ziaee.Os 30*1687d771SAlexander Ziaee.Sh NAME 31*1687d771SAlexander Ziaee.Nm tarfs 32*1687d771SAlexander Ziaee.Nd tarball filesystem 33*1687d771SAlexander Ziaee.Sh SYNOPSIS 34*1687d771SAlexander ZiaeeTo compile this driver into the kernel, place the following line in 35*1687d771SAlexander Ziaeeyour kernel configuration file: 36*1687d771SAlexander Ziaee.Bd -ragged -offset indent 37*1687d771SAlexander Ziaee.Cd "options TARFS" 38*1687d771SAlexander Ziaee.Ed 39*1687d771SAlexander Ziaee.Pp 40*1687d771SAlexander ZiaeeAlternatively, to load the driver as a module at boot time, place the 41*1687d771SAlexander Ziaeefollowing line in 42*1687d771SAlexander Ziaee.Xr loader.conf 5 : 43*1687d771SAlexander Ziaee.Bd -literal -offset indent 44*1687d771SAlexander Ziaeetarfs_load="YES" 45*1687d771SAlexander Ziaee.Ed 46*1687d771SAlexander Ziaee.Sh DESCRIPTION 47*1687d771SAlexander ZiaeeThe 48*1687d771SAlexander Ziaee.Nm 49*1687d771SAlexander Ziaeedriver implements a read-only filesystem backed by a 50*1687d771SAlexander Ziaee.Xr tar 5 51*1687d771SAlexander Ziaeefile. 52*1687d771SAlexander ZiaeeCurrently, only POSIX archives, optionally compressed with 53*1687d771SAlexander Ziaee.Xr zstd 1 , 54*1687d771SAlexander Ziaeeare supported. 55*1687d771SAlexander Ziaee.Pp 56*1687d771SAlexander ZiaeeThe preferred I/O size for 57*1687d771SAlexander Ziaee.Nm 58*1687d771SAlexander Ziaeefilesystems can be adjusted using the 59*1687d771SAlexander Ziaee.Va vfs.tarfs.ioshift 60*1687d771SAlexander Ziaeesysctl setting and tunable. 61*1687d771SAlexander ZiaeeSetting it to 0 will reset it to its default value. 62*1687d771SAlexander ZiaeeNote that changes to this setting only apply to filesystems mounted 63*1687d771SAlexander Ziaeeafter the change. 64*1687d771SAlexander Ziaee.Pp 65*1687d771SAlexander ZiaeeWhen the backing tar file is compressed with 66*1687d771SAlexander Ziaee.Xr zstd 1 , 67*1687d771SAlexander ZiaeeI/O performance can be improved by ensuring that compressed data is 68*1687d771SAlexander Ziaeebroken up into multiple frames. 69*1687d771SAlexander ZiaeeThis helps minimize unnecessary decompression work. 70*1687d771SAlexander ZiaeeWhen using 71*1687d771SAlexander Ziaee.Xr bsdtar 1 72*1687d771SAlexander Ziaeeto create the tar file, this can be achieved using the 73*1687d771SAlexander Ziaee.Cm zstd:max-frame-size 74*1687d771SAlexander Ziaeeand 75*1687d771SAlexander Ziaee.Cm ztsd:frame-per-file 76*1687d771SAlexander Ziaeeoptions. 77*1687d771SAlexander ZiaeeSensible frame sizes are powers of 2 between the system's base page size 78*1687d771SAlexander Ziaee(see 79*1687d771SAlexander Ziaee.Xr arch 7 ) 80*1687d771SAlexander Ziaeeand the value of the 81*1687d771SAlexander Ziaee.Sy kern.maxphys 82*1687d771SAlexander Ziaeesysctl. 83*1687d771SAlexander ZiaeeSmaller frames will generally yield a worse compression ratio and require extra 84*1687d771SAlexander Ziaeekernel memory to maintain an index, and larger frames will on average require 85*1687d771SAlexander Ziaeemore CPU time to access data when performing random I/O. 86*1687d771SAlexander Ziaee.Sh DIAGNOSTICS 87*1687d771SAlexander ZiaeeIf enabled by the 88*1687d771SAlexander Ziaee.Dv TARFS_DEBUG 89*1687d771SAlexander Ziaeekernel option, the 90*1687d771SAlexander Ziaee.Va vfs.tarfs.debug 91*1687d771SAlexander Ziaeesysctl setting can be used to control debugging output from the 92*1687d771SAlexander Ziaee.Nm 93*1687d771SAlexander Ziaeedriver. 94*1687d771SAlexander ZiaeeDebugging output for individual sections of the driver can be enabled 95*1687d771SAlexander Ziaeeby adding together the relevant values from the table below. 96*1687d771SAlexander Ziaee.Bl -column Value Description 97*1687d771SAlexander Ziaee.It 0x01 Ta Memory allocations 98*1687d771SAlexander Ziaee.It 0x02 Ta Checksum calculations 99*1687d771SAlexander Ziaee.It 0x04 Ta Filesystem operations (vfsops) 100*1687d771SAlexander Ziaee.It 0x08 Ta Path lookups 101*1687d771SAlexander Ziaee.It 0x10 Ta File operations (vnops) 102*1687d771SAlexander Ziaee.It 0x20 Ta General I/O 103*1687d771SAlexander Ziaee.It 0x40 Ta Decompression 104*1687d771SAlexander Ziaee.It 0x80 Ta Decompression index 105*1687d771SAlexander Ziaee.It 0x100 Ta Sparse file mapping 106*1687d771SAlexander Ziaee.It 0x200 Ta Bounce buffer usage 107*1687d771SAlexander Ziaee.El 108*1687d771SAlexander Ziaee.Sh SEE ALSO 109*1687d771SAlexander Ziaee.Xr tar 1 , 110*1687d771SAlexander Ziaee.Xr zstd 1 , 111*1687d771SAlexander Ziaee.Xr fstab 5 , 112*1687d771SAlexander Ziaee.Xr tar 5 , 113*1687d771SAlexander Ziaee.Xr mount 8 , 114*1687d771SAlexander Ziaee.Xr sysctl 8 115*1687d771SAlexander Ziaee.Sh HISTORY 116*1687d771SAlexander Ziaee.An -nosplit 117*1687d771SAlexander ZiaeeThe 118*1687d771SAlexander Ziaee.Nm 119*1687d771SAlexander Ziaeedriver was developed by 120*1687d771SAlexander Ziaee.An Stephen J. Kiernan Aq Mt stevek@FreeBSD.org 121*1687d771SAlexander Ziaeeand 122*1687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org 123*1687d771SAlexander Ziaeefor Juniper Networks and Klara Systems. 124*1687d771SAlexander ZiaeeThis manual page was written by 125*1687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org 126*1687d771SAlexander Ziaeefor Juniper Networks and Klara Systems. 127