public inbox for linux-staging@lists.linux.dev
 help / color / mirror / Atom feed
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


  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