From: Andreas Gruenbacher <andreas.gruenbacher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org,
Steve French <sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>,
linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [RFC 00/39] Richacls (2)
Date: Fri, 27 Mar 2015 17:49:58 +0100 [thread overview]
Message-ID: <cover.1427471526.git.agruenba@redhat.com> (raw)
Hello,
here is an update to the richacl patch queue. The changes since the last
posting (https://lwn.net/Articles/634870/) include:
* The ACL4_ and ACE4_ prefixes used for various richacl flags were renamed
to RICHACL_ and RICHACE_. The flag values are still identical with NFSv4
for flags that exist in NFSv4.
* The code is now uid/gid namespace aware.
* The nfs server now uses richacls as its internal acl representation;
struct nfs4_acl is gone. On the underlying file system, it uses either POSIX
ACLs or richacls depending on what that file system supports.
* The nfs client now exports NFSv4 acls as richacls in the "system.richacl"
attribute instead of the nfs-specific "system.nfs4_acl" attribute, just like
local file systems.
Note that the richacl xattr format has changed from the previous version and is
incompatible.
The git version is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/agruen/linux-richacl.git \
richacl-2015-03-27
For comparison, the previous version is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/agruen/linux-richacl.git \
richacl-2015-02-26
Things still to be done, or which I'm not entirely happy with:
* We may need to add back support for the "system.nfs4_acl" attribute
on nfs mounts for backwards compatible. Is anyone actually using that
attribute?
* While richacls do support Automatic Inheritance, the nfs client and server
don't because they don't support the NFSv4.1 "dacl" attribute yet (see RFC
5661).
* The nfs server performs some access checking on its own before calling into
the vfs which is rersponsible for the actual access checking (see where it
calls inode_permission()). With the additional MAY_ flags introduced in
this patch queue, the nfsd access checks may now be too restrictive in some
cases; I have yet to figure out how to deal with this.
* It would make sense for CIFS to expose Windows ACLs as richacls as well.
Steve maybe?
* The base_acl code is still rather ugly.
* It would be nice if the MAY_DELETE_SELF flag could override the sticky
directory check as it did in the previous version of this patch queue. I
couldn't come up with a clean way of achieving that, though.
Andreas Gruenbacher (37):
vfs: Minor documentation fix
uapi: Remove kernel internal declaration
vfs: Shrink struct posix_acl
vfs: Add IS_ACL() and IS_RICHACL() tests
vfs: Add MAY_CREATE_FILE and MAY_CREATE_DIR permission flags
vfs: Add MAY_DELETE_SELF and MAY_DELETE_CHILD permission flags
vfs: Make the inode passed to inode_change_ok non-const
vfs: Add permission flags for setting file attributes
richacl: In-memory representation and helper functions
richacl: Permission mapping functions
richacl: Compute maximum file masks from an acl
richacl: Update the file masks in chmod()
richacl: Permission check algorithm
vfs: Cache base_acl objects in inodes
vfs: Cache richacl in struct inode
richacl: Create-time inheritance
richacl: Check if an acl is equivalent to a file mode
richacl: Automatic Inheritance
richacl: xattr mapping functions
vfs: Add richacl permission checking
richacl: acl editing helper functions
richacl: Move everyone@ aces down the acl
richacl: Propagate everyone@ permissions to other aces
richacl: Isolate the owner and group classes
richacl: Apply the file masks to a richacl
richacl: Create richacl from mode values
richacl: Create acl with masks applied in richacl_from_mode()
nfsd: Remove dead declarations
nfsd: Keep list of acls to dispose of in compoundargs
nfsd: Use richacls as internal acl representation
nfsd: Add richacl support
nfs/sunrpc: No more encode and decode function pointer casting
nfs/sunrpc: Return status code from encode functions
nfs3: Return posix acl encode errors
nfs: Remove unused xdr page offsets in getacl/setacl arguments
rpc: Allow to demand-allocate pages to encode into
nfs: Add richacl support
Aneesh Kumar K.V (2):
ext4: Add richacl support
ext4: Add richacl feature flag
Documentation/filesystems/porting | 8 +-
Documentation/filesystems/vfs.txt | 3 +
drivers/staging/lustre/lustre/llite/llite_lib.c | 2 +-
fs/Kconfig | 9 +
fs/Makefile | 3 +
fs/attr.c | 81 ++-
fs/ext4/Kconfig | 15 +
fs/ext4/Makefile | 1 +
fs/ext4/acl.c | 7 +-
fs/ext4/acl.h | 12 +-
fs/ext4/ext4.h | 6 +-
fs/ext4/file.c | 6 +-
fs/ext4/ialloc.c | 7 +-
fs/ext4/inode.c | 10 +-
fs/ext4/namei.c | 11 +-
fs/ext4/richacl.c | 211 ++++++
fs/ext4/richacl.h | 47 ++
fs/ext4/super.c | 41 +-
fs/ext4/xattr.c | 6 +
fs/ext4/xattr.h | 1 +
fs/f2fs/acl.c | 4 +-
fs/inode.c | 15 +-
fs/lockd/clnt4xdr.c | 58 +-
fs/lockd/clntxdr.c | 58 +-
fs/lockd/mon.c | 26 +-
fs/namei.c | 108 ++-
fs/nfs/inode.c | 2 +-
fs/nfs/mount_clnt.c | 24 +-
fs/nfs/nfs2xdr.c | 115 ++--
fs/nfs/nfs3xdr.c | 225 ++++---
fs/nfs/nfs4proc.c | 335 +++++-----
fs/nfs/nfs4xdr.c | 699 ++++++++++++++------
fs/nfs/super.c | 4 +-
fs/nfs_common/Makefile | 1 +
fs/nfs_common/nfs4acl.c | 41 ++
fs/nfsd/Kconfig | 1 +
fs/nfsd/acl.h | 24 +-
fs/nfsd/nfs4acl.c | 467 ++++++-------
fs/nfsd/nfs4callback.c | 29 +-
fs/nfsd/nfs4proc.c | 17 +-
fs/nfsd/nfs4xdr.c | 103 +--
fs/nfsd/xdr4.h | 12 +-
fs/posix_acl.c | 31 +-
fs/richacl_base.c | 549 ++++++++++++++++
fs/richacl_compat.c | 835 ++++++++++++++++++++++++
fs/richacl_inode.c | 195 ++++++
fs/richacl_xattr.c | 210 ++++++
fs/xattr.c | 34 +-
include/linux/fs.h | 47 +-
include/linux/nfs4.h | 16 -
include/linux/nfs4acl.h | 7 +
include/linux/nfs_fs.h | 2 +-
include/linux/nfs_fs_sb.h | 2 +
include/linux/nfs_xdr.h | 8 +-
include/linux/posix_acl.h | 12 +-
include/linux/richacl.h | 330 ++++++++++
include/linux/richacl_compat.h | 40 ++
include/linux/richacl_xattr.h | 52 ++
include/linux/sunrpc/xdr.h | 5 +-
include/uapi/linux/fs.h | 3 +-
include/uapi/linux/nfs4.h | 7 -
include/uapi/linux/xattr.h | 2 +
net/sunrpc/auth.c | 7 +-
net/sunrpc/auth_gss/gss_rpc_upcall.c | 4 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 11 +-
net/sunrpc/auth_gss/gss_rpc_xdr.h | 8 +-
net/sunrpc/clnt.c | 5 +-
net/sunrpc/rpcb_clnt.c | 57 +-
net/sunrpc/xdr.c | 8 +
69 files changed, 4283 insertions(+), 1059 deletions(-)
create mode 100644 fs/ext4/richacl.c
create mode 100644 fs/ext4/richacl.h
create mode 100644 fs/nfs_common/nfs4acl.c
create mode 100644 fs/richacl_base.c
create mode 100644 fs/richacl_compat.c
create mode 100644 fs/richacl_inode.c
create mode 100644 fs/richacl_xattr.c
create mode 100644 include/linux/nfs4acl.h
create mode 100644 include/linux/richacl.h
create mode 100644 include/linux/richacl_compat.h
create mode 100644 include/linux/richacl_xattr.h
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Gruenbacher <andreas.gruenbacher@gmail.com>
To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-nfs@vger.kernel.org, linux-api@vger.kernel.org,
samba-technical@lists.samba.org, Steve French <sfrench@samba.org>,
linux-security-module@vger.kernel.org
Subject: [RFC 00/39] Richacls (2)
Date: Fri, 27 Mar 2015 17:49:58 +0100 [thread overview]
Message-ID: <cover.1427471526.git.agruenba@redhat.com> (raw)
Hello,
here is an update to the richacl patch queue. The changes since the last
posting (https://lwn.net/Articles/634870/) include:
* The ACL4_ and ACE4_ prefixes used for various richacl flags were renamed
to RICHACL_ and RICHACE_. The flag values are still identical with NFSv4
for flags that exist in NFSv4.
* The code is now uid/gid namespace aware.
* The nfs server now uses richacls as its internal acl representation;
struct nfs4_acl is gone. On the underlying file system, it uses either POSIX
ACLs or richacls depending on what that file system supports.
* The nfs client now exports NFSv4 acls as richacls in the "system.richacl"
attribute instead of the nfs-specific "system.nfs4_acl" attribute, just like
local file systems.
Note that the richacl xattr format has changed from the previous version and is
incompatible.
The git version is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/agruen/linux-richacl.git \
richacl-2015-03-27
For comparison, the previous version is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/agruen/linux-richacl.git \
richacl-2015-02-26
Things still to be done, or which I'm not entirely happy with:
* We may need to add back support for the "system.nfs4_acl" attribute
on nfs mounts for backwards compatible. Is anyone actually using that
attribute?
* While richacls do support Automatic Inheritance, the nfs client and server
don't because they don't support the NFSv4.1 "dacl" attribute yet (see RFC
5661).
* The nfs server performs some access checking on its own before calling into
the vfs which is rersponsible for the actual access checking (see where it
calls inode_permission()). With the additional MAY_ flags introduced in
this patch queue, the nfsd access checks may now be too restrictive in some
cases; I have yet to figure out how to deal with this.
* It would make sense for CIFS to expose Windows ACLs as richacls as well.
Steve maybe?
* The base_acl code is still rather ugly.
* It would be nice if the MAY_DELETE_SELF flag could override the sticky
directory check as it did in the previous version of this patch queue. I
couldn't come up with a clean way of achieving that, though.
Andreas Gruenbacher (37):
vfs: Minor documentation fix
uapi: Remove kernel internal declaration
vfs: Shrink struct posix_acl
vfs: Add IS_ACL() and IS_RICHACL() tests
vfs: Add MAY_CREATE_FILE and MAY_CREATE_DIR permission flags
vfs: Add MAY_DELETE_SELF and MAY_DELETE_CHILD permission flags
vfs: Make the inode passed to inode_change_ok non-const
vfs: Add permission flags for setting file attributes
richacl: In-memory representation and helper functions
richacl: Permission mapping functions
richacl: Compute maximum file masks from an acl
richacl: Update the file masks in chmod()
richacl: Permission check algorithm
vfs: Cache base_acl objects in inodes
vfs: Cache richacl in struct inode
richacl: Create-time inheritance
richacl: Check if an acl is equivalent to a file mode
richacl: Automatic Inheritance
richacl: xattr mapping functions
vfs: Add richacl permission checking
richacl: acl editing helper functions
richacl: Move everyone@ aces down the acl
richacl: Propagate everyone@ permissions to other aces
richacl: Isolate the owner and group classes
richacl: Apply the file masks to a richacl
richacl: Create richacl from mode values
richacl: Create acl with masks applied in richacl_from_mode()
nfsd: Remove dead declarations
nfsd: Keep list of acls to dispose of in compoundargs
nfsd: Use richacls as internal acl representation
nfsd: Add richacl support
nfs/sunrpc: No more encode and decode function pointer casting
nfs/sunrpc: Return status code from encode functions
nfs3: Return posix acl encode errors
nfs: Remove unused xdr page offsets in getacl/setacl arguments
rpc: Allow to demand-allocate pages to encode into
nfs: Add richacl support
Aneesh Kumar K.V (2):
ext4: Add richacl support
ext4: Add richacl feature flag
Documentation/filesystems/porting | 8 +-
Documentation/filesystems/vfs.txt | 3 +
drivers/staging/lustre/lustre/llite/llite_lib.c | 2 +-
fs/Kconfig | 9 +
fs/Makefile | 3 +
fs/attr.c | 81 ++-
fs/ext4/Kconfig | 15 +
fs/ext4/Makefile | 1 +
fs/ext4/acl.c | 7 +-
fs/ext4/acl.h | 12 +-
fs/ext4/ext4.h | 6 +-
fs/ext4/file.c | 6 +-
fs/ext4/ialloc.c | 7 +-
fs/ext4/inode.c | 10 +-
fs/ext4/namei.c | 11 +-
fs/ext4/richacl.c | 211 ++++++
fs/ext4/richacl.h | 47 ++
fs/ext4/super.c | 41 +-
fs/ext4/xattr.c | 6 +
fs/ext4/xattr.h | 1 +
fs/f2fs/acl.c | 4 +-
fs/inode.c | 15 +-
fs/lockd/clnt4xdr.c | 58 +-
fs/lockd/clntxdr.c | 58 +-
fs/lockd/mon.c | 26 +-
fs/namei.c | 108 ++-
fs/nfs/inode.c | 2 +-
fs/nfs/mount_clnt.c | 24 +-
fs/nfs/nfs2xdr.c | 115 ++--
fs/nfs/nfs3xdr.c | 225 ++++---
fs/nfs/nfs4proc.c | 335 +++++-----
fs/nfs/nfs4xdr.c | 699 ++++++++++++++------
fs/nfs/super.c | 4 +-
fs/nfs_common/Makefile | 1 +
fs/nfs_common/nfs4acl.c | 41 ++
fs/nfsd/Kconfig | 1 +
fs/nfsd/acl.h | 24 +-
fs/nfsd/nfs4acl.c | 467 ++++++-------
fs/nfsd/nfs4callback.c | 29 +-
fs/nfsd/nfs4proc.c | 17 +-
fs/nfsd/nfs4xdr.c | 103 +--
fs/nfsd/xdr4.h | 12 +-
fs/posix_acl.c | 31 +-
fs/richacl_base.c | 549 ++++++++++++++++
fs/richacl_compat.c | 835 ++++++++++++++++++++++++
fs/richacl_inode.c | 195 ++++++
fs/richacl_xattr.c | 210 ++++++
fs/xattr.c | 34 +-
include/linux/fs.h | 47 +-
include/linux/nfs4.h | 16 -
include/linux/nfs4acl.h | 7 +
include/linux/nfs_fs.h | 2 +-
include/linux/nfs_fs_sb.h | 2 +
include/linux/nfs_xdr.h | 8 +-
include/linux/posix_acl.h | 12 +-
include/linux/richacl.h | 330 ++++++++++
include/linux/richacl_compat.h | 40 ++
include/linux/richacl_xattr.h | 52 ++
include/linux/sunrpc/xdr.h | 5 +-
include/uapi/linux/fs.h | 3 +-
include/uapi/linux/nfs4.h | 7 -
include/uapi/linux/xattr.h | 2 +
net/sunrpc/auth.c | 7 +-
net/sunrpc/auth_gss/gss_rpc_upcall.c | 4 +-
net/sunrpc/auth_gss/gss_rpc_xdr.c | 11 +-
net/sunrpc/auth_gss/gss_rpc_xdr.h | 8 +-
net/sunrpc/clnt.c | 5 +-
net/sunrpc/rpcb_clnt.c | 57 +-
net/sunrpc/xdr.c | 8 +
69 files changed, 4283 insertions(+), 1059 deletions(-)
create mode 100644 fs/ext4/richacl.c
create mode 100644 fs/ext4/richacl.h
create mode 100644 fs/nfs_common/nfs4acl.c
create mode 100644 fs/richacl_base.c
create mode 100644 fs/richacl_compat.c
create mode 100644 fs/richacl_inode.c
create mode 100644 fs/richacl_xattr.c
create mode 100644 include/linux/nfs4acl.h
create mode 100644 include/linux/richacl.h
create mode 100644 include/linux/richacl_compat.h
create mode 100644 include/linux/richacl_xattr.h
--
2.1.0
next reply other threads:[~2015-03-27 16:49 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-27 16:49 Andreas Gruenbacher [this message]
2015-03-27 16:49 ` [RFC 00/39] Richacls (2) Andreas Gruenbacher
2015-03-27 16:49 ` [RFC 01/39] vfs: Minor documentation fix Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 02/39] uapi: Remove kernel internal declaration Andreas Gruenbacher
2015-04-20 18:57 ` J. Bruce Fields
2015-04-20 18:57 ` J. Bruce Fields
2015-04-24 11:25 ` Andreas Grünbacher
2015-03-27 16:50 ` [RFC 03/39] vfs: Shrink struct posix_acl Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 04/39] vfs: Add IS_ACL() and IS_RICHACL() tests Andreas Gruenbacher
2015-03-27 16:50 ` Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 05/39] vfs: Add MAY_CREATE_FILE and MAY_CREATE_DIR permission flags Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 06/39] vfs: Add MAY_DELETE_SELF and MAY_DELETE_CHILD " Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 07/39] vfs: Make the inode passed to inode_change_ok non-const Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 08/39] vfs: Add permission flags for setting file attributes Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 09/39] richacl: In-memory representation and helper functions Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 10/39] richacl: Permission mapping functions Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 11/39] richacl: Compute maximum file masks from an acl Andreas Gruenbacher
2015-04-20 21:28 ` J. Bruce Fields
2015-04-20 21:28 ` J. Bruce Fields
2015-04-24 11:07 ` Andreas Grünbacher
2015-03-27 16:50 ` [RFC 12/39] richacl: Update the file masks in chmod() Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 13/39] richacl: Permission check algorithm Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 14/39] vfs: Cache base_acl objects in inodes Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 15/39] vfs: Cache richacl in struct inode Andreas Gruenbacher
2015-03-27 16:50 ` Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 16/39] richacl: Create-time inheritance Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 17/39] richacl: Check if an acl is equivalent to a file mode Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 18/39] richacl: Automatic Inheritance Andreas Gruenbacher
2015-03-27 16:50 ` Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 19/39] richacl: xattr mapping functions Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 20/39] vfs: Add richacl permission checking Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 21/39] ext4: Add richacl support Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 22/39] ext4: Add richacl feature flag Andreas Gruenbacher
2015-03-27 16:50 ` Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 23/39] richacl: acl editing helper functions Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 24/39] richacl: Move everyone@ aces down the acl Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 25/39] richacl: Propagate everyone@ permissions to other aces Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 26/39] richacl: Isolate the owner and group classes Andreas Gruenbacher
2015-03-27 16:50 ` Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 27/39] richacl: Apply the file masks to a richacl Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 28/39] richacl: Create richacl from mode values Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 29/39] richacl: Create acl with masks applied in richacl_from_mode() Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 30/39] nfsd: Remove dead declarations Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 31/39] nfsd: Keep list of acls to dispose of in compoundargs Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 32/39] nfsd: Use richacls as internal acl representation Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 33/39] nfsd: Add richacl support Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 34/39] nfs/sunrpc: No more encode and decode function pointer casting Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 35/39] nfs/sunrpc: Return status code from encode functions Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 36/39] nfs3: Return posix acl encode errors Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 37/39] nfs: Remove unused xdr page offsets in getacl/setacl arguments Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 38/39] rpc: Allow to demand-allocate pages to encode into Andreas Gruenbacher
2015-03-27 16:50 ` [RFC 39/39] nfs: Add richacl support Andreas Gruenbacher
[not found] ` <cover.1427471526.git.agruenba-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-03-30 18:16 ` Fwd: [RFC 00/39] Richacls (2) Steve French
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=cover.1427471526.git.agruenba@redhat.com \
--to=andreas.gruenbacher-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org \
--cc=sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.