If we encounter a split page, we add two iovecs to the bio, one for the fragment of the buffer on each side of the split. In order to do this safely, we must be sure that we always have room for both fragments. Its possible for a linear abd to have multiple pages, in which case we want to add the "left" fragment, then a run of proper 4K pages. then then "right" fragment. In this way we can keep whole pages together as much possible. This change handles both cases by noticing a split page. If we don't have at least two iovecs remaining in the bio, then we abort outright (allowing the caller to allocate a new bio and try again). We add the "left" fragment, and note how big we expect the right fragment to be. Then we load in as many full pages as are available. When we reach the last iovec, we close out the bio by taking as uch as is necessary to restore alignment. Signed-off-by: Rob Norris <rob.norris@klarasystems.com> (cherry picked from commit 173cafcc3d8b6c94c61844c705d7a410f412a18e) |
||
---|---|---|
.github | ||
cmd | ||
config | ||
contrib | ||
etc | ||
include | ||
lib | ||
man | ||
module | ||
rpm | ||
scripts | ||
tests | ||
udev | ||
.editorconfig | ||
.gitignore | ||
.gitmodules | ||
AUTHORS | ||
CODE_OF_CONDUCT.md | ||
COPYRIGHT | ||
LICENSE | ||
META | ||
Makefile.am | ||
NEWS | ||
NOTICE | ||
README.md | ||
RELEASES.md | ||
TEST | ||
autogen.sh | ||
configure.ac | ||
copy-builtin | ||
zfs.release.in |
README.md
OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. This repository contains the code for running OpenZFS on Linux and FreeBSD.
Official Resources
- Documentation - for using and developing this repo
- ZoL Site - Linux release info & links
- Mailing lists
- OpenZFS site - for conference videos and info on other platforms (illumos, OSX, Windows, etc)
Installation
Full documentation for installing OpenZFS on your favorite operating system can be found at the Getting Started Page.
Contribute & Develop
We have a separate document with contribution guidelines.
We have a Code of Conduct.
Release
OpenZFS is released under a CDDL license.
For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197
Supported Kernels
- The
META
file contains the officially recognized supported Linux kernel versions. - Supported FreeBSD versions are any supported branches and releases starting from 12.2-RELEASE.