11687d771SAlexander Ziaee.\"- 21687d771SAlexander Ziaee.\" SPDX-License-Identifier: BSD-2-Clause 31687d771SAlexander Ziaee.\" 41687d771SAlexander Ziaee.\" Copyright (c) 2022 Klara, Inc. 51687d771SAlexander Ziaee.\" 61687d771SAlexander Ziaee.\" Redistribution and use in source and binary forms, with or without 71687d771SAlexander Ziaee.\" modification, are permitted provided that the following conditions 81687d771SAlexander Ziaee.\" are met: 91687d771SAlexander Ziaee.\" 1. Redistributions of source code must retain the above copyright 101687d771SAlexander Ziaee.\" notice, this list of conditions and the following disclaimer. 111687d771SAlexander Ziaee.\" 2. Redistributions in binary form must reproduce the above copyright 121687d771SAlexander Ziaee.\" notice, this list of conditions and the following disclaimer in the 131687d771SAlexander Ziaee.\" documentation and/or other materials provided with the distribution. 141687d771SAlexander Ziaee.\" 151687d771SAlexander Ziaee.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 161687d771SAlexander Ziaee.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 171687d771SAlexander Ziaee.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 181687d771SAlexander Ziaee.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 191687d771SAlexander Ziaee.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 201687d771SAlexander Ziaee.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 211687d771SAlexander Ziaee.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 221687d771SAlexander Ziaee.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 231687d771SAlexander Ziaee.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 241687d771SAlexander Ziaee.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 251687d771SAlexander Ziaee.\" SUCH DAMAGE. 261687d771SAlexander Ziaee.\" 271687d771SAlexander Ziaee.Dd February 14, 2023 28f38669efSAlexander Ziaee.Dt TARFS 4 291687d771SAlexander Ziaee.Os 301687d771SAlexander Ziaee.Sh NAME 311687d771SAlexander Ziaee.Nm tarfs 321687d771SAlexander Ziaee.Nd tarball filesystem 331687d771SAlexander Ziaee.Sh SYNOPSIS 341687d771SAlexander ZiaeeTo compile this driver into the kernel, place the following line in 351687d771SAlexander Ziaeeyour kernel configuration file: 361687d771SAlexander Ziaee.Bd -ragged -offset indent 371687d771SAlexander Ziaee.Cd "options TARFS" 381687d771SAlexander Ziaee.Ed 391687d771SAlexander Ziaee.Pp 401687d771SAlexander ZiaeeAlternatively, to load the driver as a module at boot time, place the 411687d771SAlexander Ziaeefollowing line in 421687d771SAlexander Ziaee.Xr loader.conf 5 : 431687d771SAlexander Ziaee.Bd -literal -offset indent 441687d771SAlexander Ziaeetarfs_load="YES" 451687d771SAlexander Ziaee.Ed 461687d771SAlexander Ziaee.Sh DESCRIPTION 471687d771SAlexander ZiaeeThe 481687d771SAlexander Ziaee.Nm 491687d771SAlexander Ziaeedriver implements a read-only filesystem backed by a 501687d771SAlexander Ziaee.Xr tar 5 511687d771SAlexander Ziaeefile. 521687d771SAlexander ZiaeeCurrently, only POSIX archives, optionally compressed with 531687d771SAlexander Ziaee.Xr zstd 1 , 541687d771SAlexander Ziaeeare supported. 551687d771SAlexander Ziaee.Pp 561687d771SAlexander ZiaeeThe preferred I/O size for 571687d771SAlexander Ziaee.Nm 581687d771SAlexander Ziaeefilesystems can be adjusted using the 591687d771SAlexander Ziaee.Va vfs.tarfs.ioshift 601687d771SAlexander Ziaeesysctl setting and tunable. 611687d771SAlexander ZiaeeSetting it to 0 will reset it to its default value. 621687d771SAlexander ZiaeeNote that changes to this setting only apply to filesystems mounted 631687d771SAlexander Ziaeeafter the change. 641687d771SAlexander Ziaee.Pp 651687d771SAlexander ZiaeeWhen the backing tar file is compressed with 661687d771SAlexander Ziaee.Xr zstd 1 , 671687d771SAlexander ZiaeeI/O performance can be improved by ensuring that compressed data is 681687d771SAlexander Ziaeebroken up into multiple frames. 691687d771SAlexander ZiaeeThis helps minimize unnecessary decompression work. 701687d771SAlexander ZiaeeWhen using 711687d771SAlexander Ziaee.Xr bsdtar 1 721687d771SAlexander Ziaeeto create the tar file, this can be achieved using the 731687d771SAlexander Ziaee.Cm zstd:max-frame-size 741687d771SAlexander Ziaeeand 75*124ae0e8STrond Endrestøl.Cm zstd:frame-per-file 761687d771SAlexander Ziaeeoptions. 771687d771SAlexander ZiaeeSensible frame sizes are powers of 2 between the system's base page size 781687d771SAlexander Ziaee(see 791687d771SAlexander Ziaee.Xr arch 7 ) 801687d771SAlexander Ziaeeand the value of the 811687d771SAlexander Ziaee.Sy kern.maxphys 821687d771SAlexander Ziaeesysctl. 831687d771SAlexander ZiaeeSmaller frames will generally yield a worse compression ratio and require extra 841687d771SAlexander Ziaeekernel memory to maintain an index, and larger frames will on average require 851687d771SAlexander Ziaeemore CPU time to access data when performing random I/O. 861687d771SAlexander Ziaee.Sh DIAGNOSTICS 871687d771SAlexander ZiaeeIf enabled by the 881687d771SAlexander Ziaee.Dv TARFS_DEBUG 891687d771SAlexander Ziaeekernel option, the 901687d771SAlexander Ziaee.Va vfs.tarfs.debug 911687d771SAlexander Ziaeesysctl setting can be used to control debugging output from the 921687d771SAlexander Ziaee.Nm 931687d771SAlexander Ziaeedriver. 941687d771SAlexander ZiaeeDebugging output for individual sections of the driver can be enabled 951687d771SAlexander Ziaeeby adding together the relevant values from the table below. 961687d771SAlexander Ziaee.Bl -column Value Description 971687d771SAlexander Ziaee.It 0x01 Ta Memory allocations 981687d771SAlexander Ziaee.It 0x02 Ta Checksum calculations 991687d771SAlexander Ziaee.It 0x04 Ta Filesystem operations (vfsops) 1001687d771SAlexander Ziaee.It 0x08 Ta Path lookups 1011687d771SAlexander Ziaee.It 0x10 Ta File operations (vnops) 1021687d771SAlexander Ziaee.It 0x20 Ta General I/O 1031687d771SAlexander Ziaee.It 0x40 Ta Decompression 1041687d771SAlexander Ziaee.It 0x80 Ta Decompression index 1051687d771SAlexander Ziaee.It 0x100 Ta Sparse file mapping 1061687d771SAlexander Ziaee.It 0x200 Ta Bounce buffer usage 1071687d771SAlexander Ziaee.El 1081687d771SAlexander Ziaee.Sh SEE ALSO 1091687d771SAlexander Ziaee.Xr tar 1 , 1101687d771SAlexander Ziaee.Xr zstd 1 , 1111687d771SAlexander Ziaee.Xr fstab 5 , 1121687d771SAlexander Ziaee.Xr tar 5 , 1131687d771SAlexander Ziaee.Xr mount 8 , 1141687d771SAlexander Ziaee.Xr sysctl 8 1151687d771SAlexander Ziaee.Sh HISTORY 1161687d771SAlexander Ziaee.An -nosplit 1171687d771SAlexander ZiaeeThe 1181687d771SAlexander Ziaee.Nm 1191687d771SAlexander Ziaeedriver was developed by 1201687d771SAlexander Ziaee.An Stephen J. Kiernan Aq Mt stevek@FreeBSD.org 1211687d771SAlexander Ziaeeand 1221687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org 1231687d771SAlexander Ziaeefor Juniper Networks and Klara Systems. 1241687d771SAlexander ZiaeeThis manual page was written by 1251687d771SAlexander Ziaee.An Dag-Erling Smørgrav Aq Mt des@FreeBSD.org 1261687d771SAlexander Ziaeefor Juniper Networks and Klara Systems. 127