From: Ethan Carter Edwards <ethan@ethancedwards.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, tytso@mit.edu
Cc: ernesto.mnd.fernandez@gmail.com, dan.carpenter@linaro.org,
sven@svenpeter.dev, ernesto@corellium.com,
gargaditya08@live.com, willy@infradead.org,
asahi@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-staging@lists.linux.dev,
Ethan Carter Edwards <ethan@ethancedwards.com>
Subject: [PATCH RFC 7/8] staging: apfs: init TODO and README.rst
Date: Fri, 14 Mar 2025 17:57:53 -0400 [thread overview]
Message-ID: <20250314-apfs-v1-7-ddfaa6836b5c@ethancedwards.com> (raw)
In-Reply-To: <20250314-apfs-v1-0-ddfaa6836b5c@ethancedwards.com>
There are various cleanup tasks required before this driver can be moved
to fs/ and out of staging/. TODO attemps to start a list of what those
tasks may be.
The README delineates a history and provides credit to the module's
original authors. I am not the original author, I have just ported it
for upstream submission.
Signed-off-by: Ethan Carter Edwards <ethan@ethancedwards.com>
---
drivers/staging/apfs/README.rst | 87 +++++++++++++++++++++++++++++++++++++++++
drivers/staging/apfs/TODO | 7 ++++
2 files changed, 94 insertions(+)
diff --git a/drivers/staging/apfs/README.rst b/drivers/staging/apfs/README.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0aa624e3a6eca4bbce5dac07ccd224ce4a67f690
--- /dev/null
+++ b/drivers/staging/apfs/README.rst
@@ -0,0 +1,87 @@
+===========================
+Apple File System for Linux
+===========================
+
+The Apple File System (APFS) is the copy-on-write filesystem currently used on
+all Apple devices. This module provides a degree of experimental support on
+Linux.
+
+To help test write support, a set of userland tools is also under development.
+The git tree can be retrieved from https://github.com/eafer/apfsprogs.git.
+
+Known limitations
+=================
+
+This module is the result of reverse engineering and testing has been limited.
+If you make use of the write support, there is a real risk of data corruption.
+Please report any issues that you find.
+
+Writes to fusion drives are not currently supported.
+Encryption is also not yet implemented even in read-only mode.
+
+Reporting bugs
+==============
+
+If you encounter any problem, the first thing you should do is run (as root)::
+
+ dmesg | grep -i apfs
+
+to see all the error messages. If that doesn't help you, please report the
+issue via email at lore.kernel.org.
+
+Mount
+=====
+
+Like all filesystems, apfs is mounted with::
+
+ mount [-o options] device dir
+
+where ``device`` is the path to your device file or filesystem image, and
+``dir`` is the mount point. The following options are accepted:
+
+============ =================================================================
+vol=n Volume number to mount. The default is volume 0.
+
+snap=label Volume snapshot to mount (in read-only mode).
+
+tier2=path Path to the tier 2 device. For fusion drives only.
+
+uid=n, gid=n Override on-disk inode ownership data with given uid/gid.
+
+cknodes Verify the checksum on all metadata nodes. Right now this has a
+ severe performance cost, so it's not recommended.
+
+readwrite Enable the experimental write support. This may corrupt your
+ container.
+============ =================================================================
+
+So for instance, if you want to mount volume number 2, and you want the metadata
+to be checked, you should run (as root)::
+
+ mount -o cknodes,vol=2 device dir
+
+To unmount it, run::
+
+ umount dir
+
+Credits
+=======
+
+Originally written by Ernesto A. Fernández <ernesto@corellium.com>, with
+several contributions from Gabriel Krisman Bertazi <krisman@collabora.com>,
+Arnaud Ferraris <arnaud.ferraris@collabora.com> and Stan Skowronek
+<skylark@disorder.metrascale.com>. For attribution details see the historical
+git tree at https://github.com/eafer/linux-apfs.git and
+https://github.com/linux-apfs/linux-apfs-rw.
+
+The module was ported by Ethan Carter Edwards <ethan@ethancedwards.com> to
+mainline and submitted upstream in 2025.
+
+Work was first based on reverse engineering done by others [1]_ [2]_, and later
+on the (very incomplete) official specification [3]_. Some parts of the code
+imitate the ext2 module, and to a lesser degree xfs, udf, gfs2 and hfsplus.
+
+.. [1] Hansen, K.H., Toolan, F., Decoding the APFS file system, Digital
+ Investigation (2017), https://dx.doi.org/10.1016/j.diin.2017.07.003
+.. [2] https://github.com/sgan81/apfs-fuse
+.. [3] https://developer.apple.com/support/apple-file-system/Apple-File-System-Reference.pdf
diff --git a/drivers/staging/apfs/TODO b/drivers/staging/apfs/TODO
new file mode 100644
index 0000000000000000000000000000000000000000..15d566a532688900e7b6234ee7b9600e3c0f4f88
--- /dev/null
+++ b/drivers/staging/apfs/TODO
@@ -0,0 +1,7 @@
+There are a couple things that should probably happen before this
+module is moved to fs/ and out of staging/. Most notably is the
+proper documentation of how APFS/this module works. Another is the
+conversion from bufferheads/pages to folios.
+
+Another good task for newcomers is patches that make it so this
+module conforms to current kernel coding standards.
--
2.48.1
next prev parent reply other threads:[~2025-03-14 21:58 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-14 21:57 [RFC PATCH 0/8] staging: apfs: init APFS module Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 1/8] staging: apfs: init lzfse compression library for APFS Ethan Carter Edwards
2025-03-15 7:12 ` Aditya Garg
2025-03-15 14:08 ` Ethan Carter Edwards
2025-03-15 9:41 ` Dan Carpenter
2025-03-15 14:14 ` Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 2/8] staging: apfs: init unicode.{c,h} Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 3/8] staging: apfs: init apfs_raw.h to handle on-disk structures Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 4/8] staging: apfs: init libzbitmap.{c,h} for decompression Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 5/8] staging: apfs: init APFS Ethan Carter Edwards
2025-03-14 21:57 ` [PATCH RFC 6/8] staging: apfs: init build support for APFS Ethan Carter Edwards
2025-03-14 21:57 ` Ethan Carter Edwards [this message]
2025-03-14 21:57 ` [PATCH RFC 8/8] MAINTAINERS: apfs: add entry and relevant information Ethan Carter Edwards
2025-03-15 7:00 ` [RFC PATCH 0/8] staging: apfs: init APFS module Greg Kroah-Hartman
2025-03-15 9:18 ` Christian Brauner
2025-03-15 9:32 ` Greg Kroah-Hartman
2025-03-15 14:13 ` Ethan Carter Edwards
2025-03-15 14:04 ` Ethan Carter Edwards
2025-03-15 7:10 ` Aditya Garg
2025-03-15 7:21 ` Aditya Garg
2025-03-15 14:12 ` Ethan Carter Edwards
2025-03-15 14:34 ` Aditya Garg
2025-03-15 14:35 ` Aditya Garg
2025-03-15 14:06 ` Ethan Carter Edwards
2025-03-16 3:31 ` Ernesto A. Fernández
2025-03-16 6:31 ` Aditya Garg
2025-03-16 15:48 ` Ethan Carter Edwards
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250314-apfs-v1-7-ddfaa6836b5c@ethancedwards.com \
--to=ethan@ethancedwards.com \
--cc=asahi@lists.linux.dev \
--cc=dan.carpenter@linaro.org \
--cc=ernesto.mnd.fernandez@gmail.com \
--cc=ernesto@corellium.com \
--cc=gargaditya08@live.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=sven@svenpeter.dev \
--cc=tytso@mit.edu \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox