From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org, hch@lst.de
Subject: [PATCH 22/24] xfs: move dirent update hooks to xfs_dir2.c
Date: Thu, 20 Jun 2024 16:04:08 -0700 [thread overview]
Message-ID: <171892418278.3183075.2874879886308264652.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <171892417831.3183075.10759987417835165626.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
Move the directory entry update hook code to xfs_dir2 so that it is
mostly consolidated with the higher level directory functions. Retain
the exports so that online fsck can still send notifications through the
hooks.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
fs/xfs/libxfs/xfs_dir2.c | 104 +++++++++++++++++++++++++++++++++++++++++
fs/xfs/libxfs/xfs_dir2.h | 25 ++++++++++
fs/xfs/scrub/common.c | 1
fs/xfs/xfs_inode.c | 117 ----------------------------------------------
fs/xfs/xfs_inode.h | 25 ----------
fs/xfs/xfs_symlink.c | 2 -
6 files changed, 130 insertions(+), 144 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c
index 34b63ba2e4f71..202468223bf94 100644
--- a/fs/xfs/libxfs/xfs_dir2.c
+++ b/fs/xfs/libxfs/xfs_dir2.c
@@ -762,6 +762,81 @@ xfs_dir2_compname(
return xfs_da_compname(args, name, len);
}
+#ifdef CONFIG_XFS_LIVE_HOOKS
+/*
+ * Use a static key here to reduce the overhead of directory live update hooks.
+ * If the compiler supports jump labels, the static branch will be replaced by
+ * a nop sled when there are no hook users. Online fsck is currently the only
+ * caller, so this is a reasonable tradeoff.
+ *
+ * Note: Patching the kernel code requires taking the cpu hotplug lock. Other
+ * parts of the kernel allocate memory with that lock held, which means that
+ * XFS callers cannot hold any locks that might be used by memory reclaim or
+ * writeback when calling the static_branch_{inc,dec} functions.
+ */
+DEFINE_STATIC_XFS_HOOK_SWITCH(xfs_dir_hooks_switch);
+
+void
+xfs_dir_hook_disable(void)
+{
+ xfs_hooks_switch_off(&xfs_dir_hooks_switch);
+}
+
+void
+xfs_dir_hook_enable(void)
+{
+ xfs_hooks_switch_on(&xfs_dir_hooks_switch);
+}
+
+/* Call hooks for a directory update relating to a child dirent update. */
+inline void
+xfs_dir_update_hook(
+ struct xfs_inode *dp,
+ struct xfs_inode *ip,
+ int delta,
+ const struct xfs_name *name)
+{
+ if (xfs_hooks_switched_on(&xfs_dir_hooks_switch)) {
+ struct xfs_dir_update_params p = {
+ .dp = dp,
+ .ip = ip,
+ .delta = delta,
+ .name = name,
+ };
+ struct xfs_mount *mp = ip->i_mount;
+
+ xfs_hooks_call(&mp->m_dir_update_hooks, 0, &p);
+ }
+}
+
+/* Call the specified function during a directory update. */
+int
+xfs_dir_hook_add(
+ struct xfs_mount *mp,
+ struct xfs_dir_hook *hook)
+{
+ return xfs_hooks_add(&mp->m_dir_update_hooks, &hook->dirent_hook);
+}
+
+/* Stop calling the specified function during a directory update. */
+void
+xfs_dir_hook_del(
+ struct xfs_mount *mp,
+ struct xfs_dir_hook *hook)
+{
+ xfs_hooks_del(&mp->m_dir_update_hooks, &hook->dirent_hook);
+}
+
+/* Configure directory update hook functions. */
+void
+xfs_dir_hook_setup(
+ struct xfs_dir_hook *hook,
+ notifier_fn_t mod_fn)
+{
+ xfs_hook_setup(&hook->dirent_hook, mod_fn);
+}
+#endif /* CONFIG_XFS_LIVE_HOOKS */
+
/*
* Given a directory @dp, a newly allocated inode @ip, and a @name, link @ip
* into @dp under the given @name. If @ip is a directory, it will be
@@ -809,6 +884,7 @@ xfs_dir_create_child(
return error;
}
+ xfs_dir_update_hook(dp, ip, 1, name);
return 0;
}
@@ -873,6 +949,7 @@ xfs_dir_add_child(
return error;
}
+ xfs_dir_update_hook(dp, ip, 1, name);
return 0;
}
@@ -954,6 +1031,7 @@ xfs_dir_remove_child(
return error;
}
+ xfs_dir_update_hook(dp, ip, -1, name);
return 0;
}
@@ -1079,6 +1157,18 @@ xfs_dir_exchange_children(
return error;
}
+ /*
+ * Inform our hook clients that we've finished an exchange operation as
+ * follows: removed the source and target files from their directories;
+ * added the target to the source directory; and added the source to
+ * the target directory. All inodes are locked, so it's ok to model a
+ * rename this way so long as we say we deleted entries before we add
+ * new ones.
+ */
+ xfs_dir_update_hook(dp1, ip1, -1, name1);
+ xfs_dir_update_hook(dp2, ip2, -1, name2);
+ xfs_dir_update_hook(dp1, ip2, 1, name1);
+ xfs_dir_update_hook(dp2, ip1, 1, name2);
return 0;
}
@@ -1305,5 +1395,19 @@ xfs_dir_rename_children(
return error;
}
+ /*
+ * Inform our hook clients that we've finished a rename operation as
+ * follows: removed the source and target files from their directories;
+ * that we've added the source to the target directory; and finally
+ * that we've added the whiteout, if there was one. All inodes are
+ * locked, so it's ok to model a rename this way so long as we say we
+ * deleted entries before we add new ones.
+ */
+ if (target_ip)
+ xfs_dir_update_hook(target_dp, target_ip, -1, target_name);
+ xfs_dir_update_hook(src_dp, src_ip, -1, src_name);
+ xfs_dir_update_hook(target_dp, src_ip, 1, target_name);
+ if (du_wip->ip)
+ xfs_dir_update_hook(src_dp, du_wip->ip, 1, src_name);
return 0;
}
diff --git a/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h
index df6d4bbe3d6f9..576068ed81fac 100644
--- a/fs/xfs/libxfs/xfs_dir2.h
+++ b/fs/xfs/libxfs/xfs_dir2.h
@@ -309,6 +309,31 @@ static inline unsigned char xfs_ascii_ci_xfrm(unsigned char c)
return c;
}
+struct xfs_dir_update_params {
+ const struct xfs_inode *dp;
+ const struct xfs_inode *ip;
+ const struct xfs_name *name;
+ int delta;
+};
+
+#ifdef CONFIG_XFS_LIVE_HOOKS
+void xfs_dir_update_hook(struct xfs_inode *dp, struct xfs_inode *ip,
+ int delta, const struct xfs_name *name);
+
+struct xfs_dir_hook {
+ struct xfs_hook dirent_hook;
+};
+
+void xfs_dir_hook_disable(void);
+void xfs_dir_hook_enable(void);
+
+int xfs_dir_hook_add(struct xfs_mount *mp, struct xfs_dir_hook *hook);
+void xfs_dir_hook_del(struct xfs_mount *mp, struct xfs_dir_hook *hook);
+void xfs_dir_hook_setup(struct xfs_dir_hook *hook, notifier_fn_t mod_fn);
+#else
+# define xfs_dir_update_hook(dp, ip, delta, name) ((void)0)
+#endif /* CONFIG_XFS_LIVE_HOOKS */
+
struct xfs_parent_args;
struct xfs_dir_update {
diff --git a/fs/xfs/scrub/common.c b/fs/xfs/scrub/common.c
index 1ad8ec63a7f44..22f5f1a9d3f09 100644
--- a/fs/xfs/scrub/common.c
+++ b/fs/xfs/scrub/common.c
@@ -26,6 +26,7 @@
#include "xfs_da_format.h"
#include "xfs_da_btree.h"
#include "xfs_dir2_priv.h"
+#include "xfs_dir2.h"
#include "xfs_attr.h"
#include "xfs_reflink.h"
#include "xfs_ag.h"
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 99bd811b309d8..d79a191ed6068 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -600,81 +600,6 @@ xfs_icreate(
return 0;
}
-#ifdef CONFIG_XFS_LIVE_HOOKS
-/*
- * Use a static key here to reduce the overhead of directory live update hooks.
- * If the compiler supports jump labels, the static branch will be replaced by
- * a nop sled when there are no hook users. Online fsck is currently the only
- * caller, so this is a reasonable tradeoff.
- *
- * Note: Patching the kernel code requires taking the cpu hotplug lock. Other
- * parts of the kernel allocate memory with that lock held, which means that
- * XFS callers cannot hold any locks that might be used by memory reclaim or
- * writeback when calling the static_branch_{inc,dec} functions.
- */
-DEFINE_STATIC_XFS_HOOK_SWITCH(xfs_dir_hooks_switch);
-
-void
-xfs_dir_hook_disable(void)
-{
- xfs_hooks_switch_off(&xfs_dir_hooks_switch);
-}
-
-void
-xfs_dir_hook_enable(void)
-{
- xfs_hooks_switch_on(&xfs_dir_hooks_switch);
-}
-
-/* Call hooks for a directory update relating to a child dirent update. */
-inline void
-xfs_dir_update_hook(
- struct xfs_inode *dp,
- struct xfs_inode *ip,
- int delta,
- const struct xfs_name *name)
-{
- if (xfs_hooks_switched_on(&xfs_dir_hooks_switch)) {
- struct xfs_dir_update_params p = {
- .dp = dp,
- .ip = ip,
- .delta = delta,
- .name = name,
- };
- struct xfs_mount *mp = ip->i_mount;
-
- xfs_hooks_call(&mp->m_dir_update_hooks, 0, &p);
- }
-}
-
-/* Call the specified function during a directory update. */
-int
-xfs_dir_hook_add(
- struct xfs_mount *mp,
- struct xfs_dir_hook *hook)
-{
- return xfs_hooks_add(&mp->m_dir_update_hooks, &hook->dirent_hook);
-}
-
-/* Stop calling the specified function during a directory update. */
-void
-xfs_dir_hook_del(
- struct xfs_mount *mp,
- struct xfs_dir_hook *hook)
-{
- xfs_hooks_del(&mp->m_dir_update_hooks, &hook->dirent_hook);
-}
-
-/* Configure directory update hook functions. */
-void
-xfs_dir_hook_setup(
- struct xfs_dir_hook *hook,
- notifier_fn_t mod_fn)
-{
- xfs_hook_setup(&hook->dirent_hook, mod_fn);
-}
-#endif /* CONFIG_XFS_LIVE_HOOKS */
-
/* Return dquots for the ids that will be assigned to a new file. */
int
xfs_icreate_dqalloc(
@@ -798,12 +723,6 @@ xfs_create(
if (error)
goto out_trans_cancel;
- /*
- * Create ip with a reference from dp, and add '.' and '..' references
- * if it's a directory.
- */
- xfs_dir_update_hook(dp, du.ip, 1, name);
-
/*
* If this is a synchronous mount, make sure that the
* create transaction goes to disk before returning to
@@ -1025,8 +944,6 @@ xfs_link(
if (error)
goto error_return;
- xfs_dir_update_hook(tdp, sip, 1, target_name);
-
/*
* If this is a synchronous mount, make sure that the
* link transaction goes to disk before returning to
@@ -2079,12 +1996,6 @@ xfs_remove(
if (error)
goto out_trans_cancel;
- /*
- * Drop the link from dp to ip, and if ip was a directory, remove the
- * '.' and '..' references since we freed the directory.
- */
- xfs_dir_update_hook(dp, ip, -1, name);
-
/*
* If this is a synchronous mount, make sure that the
* remove transaction goes to disk before returning to
@@ -2241,19 +2152,6 @@ xfs_cross_rename(
if (error)
goto out_trans_abort;
- /*
- * Inform our hook clients that we've finished an exchange operation as
- * follows: removed the source and target files from their directories;
- * added the target to the source directory; and added the source to
- * the target directory. All inodes are locked, so it's ok to model a
- * rename this way so long as we say we deleted entries before we add
- * new ones.
- */
- xfs_dir_update_hook(dp1, ip1, -1, name1);
- xfs_dir_update_hook(dp2, ip2, -1, name2);
- xfs_dir_update_hook(dp1, ip2, 1, name1);
- xfs_dir_update_hook(dp2, ip1, 1, name2);
-
return xfs_finish_rename(tp);
out_trans_abort:
@@ -2535,21 +2433,6 @@ xfs_rename(
VFS_I(du_wip.ip)->i_state &= ~I_LINKABLE;
}
- /*
- * Inform our hook clients that we've finished a rename operation as
- * follows: removed the source and target files from their directories;
- * that we've added the source to the target directory; and finally
- * that we've added the whiteout, if there was one. All inodes are
- * locked, so it's ok to model a rename this way so long as we say we
- * deleted entries before we add new ones.
- */
- if (target_ip)
- xfs_dir_update_hook(target_dp, target_ip, -1, target_name);
- xfs_dir_update_hook(src_dp, src_ip, -1, src_name);
- xfs_dir_update_hook(target_dp, src_ip, 1, target_name);
- if (du_wip.ip)
- xfs_dir_update_hook(src_dp, du_wip.ip, 1, src_name);
-
error = xfs_finish_rename(tp);
nospace_error = 0;
goto out_unlock;
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h
index 5ee044674c3ab..51defdebef30e 100644
--- a/fs/xfs/xfs_inode.h
+++ b/fs/xfs/xfs_inode.h
@@ -632,31 +632,6 @@ void xfs_inode_count_blocks(struct xfs_trans *tp, struct xfs_inode *ip,
xfs_filblks_t *dblocks, xfs_filblks_t *rblocks);
unsigned int xfs_inode_alloc_unitsize(struct xfs_inode *ip);
-struct xfs_dir_update_params {
- const struct xfs_inode *dp;
- const struct xfs_inode *ip;
- const struct xfs_name *name;
- int delta;
-};
-
-#ifdef CONFIG_XFS_LIVE_HOOKS
-void xfs_dir_update_hook(struct xfs_inode *dp, struct xfs_inode *ip,
- int delta, const struct xfs_name *name);
-
-struct xfs_dir_hook {
- struct xfs_hook dirent_hook;
-};
-
-void xfs_dir_hook_disable(void);
-void xfs_dir_hook_enable(void);
-
-int xfs_dir_hook_add(struct xfs_mount *mp, struct xfs_dir_hook *hook);
-void xfs_dir_hook_del(struct xfs_mount *mp, struct xfs_dir_hook *hook);
-void xfs_dir_hook_setup(struct xfs_dir_hook *hook, notifier_fn_t mod_fn);
-#else
-# define xfs_dir_update_hook(dp, ip, delta, name) ((void)0)
-#endif /* CONFIG_XFS_LIVE_HOOKS */
-
int xfs_icreate_dqalloc(const struct xfs_icreate_args *args,
struct xfs_dquot **udqpp, struct xfs_dquot **gdqpp,
struct xfs_dquot **pdqpp);
diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c
index c0f5c2e1f215b..77f19e2f66e07 100644
--- a/fs/xfs/xfs_symlink.c
+++ b/fs/xfs/xfs_symlink.c
@@ -200,8 +200,6 @@ xfs_symlink(
if (error)
goto out_trans_cancel;
- xfs_dir_update_hook(dp, du.ip, 1, link_name);
-
/*
* If this is a synchronous mount, make sure that the
* symlink transaction goes to disk before returning to
next prev parent reply other threads:[~2024-06-20 23:04 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-20 22:50 [PATCHBOMB 6.11] xfs: inode cleanups for metadata directories Darrick J. Wong
2024-06-20 22:57 ` [PATCHSET v3.0 1/5] xfs: hoist inode operations to libxfs Darrick J. Wong
2024-06-20 22:58 ` [PATCH 01/24] xfs: use consistent uid/gid when grabbing dquots for inodes Darrick J. Wong
2024-06-21 4:37 ` Christoph Hellwig
2024-06-20 22:58 ` [PATCH 02/24] xfs: move inode copy-on-write predicates to xfs_inode.[ch] Darrick J. Wong
2024-06-21 4:37 ` Christoph Hellwig
2024-06-20 22:59 ` [PATCH 03/24] xfs: hoist extent size helpers to libxfs Darrick J. Wong
2024-06-21 4:37 ` Christoph Hellwig
2024-06-20 22:59 ` [PATCH 04/24] xfs: hoist inode flag conversion functions " Darrick J. Wong
2024-06-21 4:38 ` Christoph Hellwig
2024-06-20 22:59 ` [PATCH 05/24] xfs: hoist project id get/set " Darrick J. Wong
2024-06-21 4:38 ` Christoph Hellwig
2024-06-20 22:59 ` [PATCH 06/24] xfs: pack icreate initialization parameters into a separate structure Darrick J. Wong
2024-06-21 4:39 ` Christoph Hellwig
2024-06-20 23:00 ` [PATCH 07/24] xfs: implement atime updates in xfs_trans_ichgtime Darrick J. Wong
2024-06-21 4:39 ` Christoph Hellwig
2024-06-20 23:00 ` [PATCH 08/24] xfs: use xfs_trans_ichgtime to set times when allocating inode Darrick J. Wong
2024-06-21 4:39 ` Christoph Hellwig
2024-06-20 23:00 ` [PATCH 09/24] xfs: split new inode creation into two pieces Darrick J. Wong
2024-06-21 4:40 ` Christoph Hellwig
2024-06-20 23:01 ` [PATCH 10/24] xfs: hoist new inode initialization functions to libxfs Darrick J. Wong
2024-06-21 4:40 ` Christoph Hellwig
2024-06-20 23:01 ` [PATCH 11/24] xfs: push xfs_icreate_args creation out of xfs_create* Darrick J. Wong
2024-06-21 4:40 ` Christoph Hellwig
2024-06-20 23:01 ` [PATCH 12/24] xfs: wrap inode creation dqalloc calls Darrick J. Wong
2024-06-21 4:41 ` Christoph Hellwig
2024-06-20 23:01 ` [PATCH 13/24] xfs: hoist xfs_iunlink to libxfs Darrick J. Wong
2024-06-21 4:41 ` Christoph Hellwig
2024-06-20 23:02 ` [PATCH 14/24] xfs: hoist xfs_{bump,drop}link " Darrick J. Wong
2024-06-21 4:41 ` Christoph Hellwig
2024-06-20 23:02 ` [PATCH 15/24] xfs: separate the icreate logic around INIT_XATTRS Darrick J. Wong
2024-06-21 4:42 ` Christoph Hellwig
2024-06-20 23:02 ` [PATCH 16/24] xfs: create libxfs helper to link a new inode into a directory Darrick J. Wong
2024-06-21 4:42 ` Christoph Hellwig
2024-06-20 23:02 ` [PATCH 17/24] xfs: create libxfs helper to link an existing " Darrick J. Wong
2024-06-21 4:44 ` Christoph Hellwig
2024-06-20 23:03 ` [PATCH 18/24] xfs: hoist inode free function to libxfs Darrick J. Wong
2024-06-21 4:44 ` Christoph Hellwig
2024-06-20 23:03 ` [PATCH 19/24] xfs: create libxfs helper to remove an existing inode/name from a directory Darrick J. Wong
2024-06-21 4:44 ` Christoph Hellwig
2024-06-20 23:03 ` [PATCH 20/24] xfs: create libxfs helper to exchange two directory entries Darrick J. Wong
2024-06-21 4:45 ` Christoph Hellwig
2024-06-20 23:03 ` [PATCH 21/24] xfs: create libxfs helper to rename " Darrick J. Wong
2024-06-21 4:45 ` Christoph Hellwig
2024-06-20 23:04 ` Darrick J. Wong [this message]
2024-06-21 4:45 ` [PATCH 22/24] xfs: move dirent update hooks to xfs_dir2.c Christoph Hellwig
2024-06-20 23:04 ` [PATCH 23/24] xfs: get rid of trivial rename helpers Darrick J. Wong
2024-06-21 4:45 ` Christoph Hellwig
2024-06-20 23:04 ` [PATCH 24/24] xfs: don't use the incore struct xfs_sb for offsets into struct xfs_dsb Darrick J. Wong
2024-06-21 4:46 ` Christoph Hellwig
2024-06-20 22:57 ` [PATCHSET v3.0 2/5] xfs: extent free log intent cleanups Darrick J. Wong
2024-06-20 23:04 ` [PATCH 1/9] xfs: clean up extent free log intent item tracepoint callsites Darrick J. Wong
2024-06-21 4:46 ` Christoph Hellwig
2024-06-20 23:05 ` [PATCH 2/9] xfs: convert "skip_discard" to a proper flags bitset Darrick J. Wong
2024-06-21 4:47 ` Christoph Hellwig
2024-06-20 23:05 ` [PATCH 3/9] xfs: pass the fsbno to xfs_perag_intent_get Darrick J. Wong
2024-06-20 23:05 ` [PATCH 4/9] xfs: add a xefi_entry helper Darrick J. Wong
2024-06-20 23:05 ` [PATCH 5/9] xfs: reuse xfs_extent_free_cancel_item Darrick J. Wong
2024-06-20 23:06 ` [PATCH 6/9] xfs: factor out a xfs_efd_add_extent helper Darrick J. Wong
2024-06-20 23:06 ` [PATCH 7/9] xfs: remove duplicate asserts in xfs_defer_extent_free Darrick J. Wong
2024-06-20 23:06 ` [PATCH 8/9] xfs: remove xfs_defer_agfl_block Darrick J. Wong
2024-07-03 8:07 ` kernel test robot
2024-06-20 23:07 ` [PATCH 9/9] xfs: move xfs_extent_free_defer_add to xfs_extfree_item.c Darrick J. Wong
2024-06-21 4:48 ` Christoph Hellwig
2024-06-20 22:57 ` [PATCHSET v3.0 3/5] xfs: rmap log intent cleanups Darrick J. Wong
2024-06-20 23:07 ` [PATCH 1/9] xfs: give rmap btree cursor error tracepoints their own class Darrick J. Wong
2024-06-21 4:48 ` Christoph Hellwig
2024-06-20 23:07 ` [PATCH 2/9] xfs: prepare rmap btree tracepoints for widening Darrick J. Wong
2024-06-21 4:49 ` Christoph Hellwig
2024-06-21 18:07 ` Darrick J. Wong
2024-06-20 23:07 ` [PATCH 3/9] xfs: clean up rmap log intent item tracepoint callsites Darrick J. Wong
2024-06-21 4:50 ` Christoph Hellwig
2024-06-20 23:08 ` [PATCH 4/9] xfs: remove xfs_trans_set_rmap_flags Darrick J. Wong
2024-06-21 4:50 ` Christoph Hellwig
2024-06-20 23:08 ` [PATCH 5/9] xfs: add a ri_entry helper Darrick J. Wong
2024-06-20 23:08 ` [PATCH 6/9] xfs: reuse xfs_rmap_update_cancel_item Darrick J. Wong
2024-06-20 23:08 ` [PATCH 7/9] xfs: don't bother calling xfs_rmap_finish_one_cleanup in xfs_rmap_finish_one Darrick J. Wong
2024-06-20 23:09 ` [PATCH 8/9] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2024-06-20 23:09 ` [PATCH 9/9] xfs: move xfs_rmap_update_defer_add to xfs_rmap_item.c Darrick J. Wong
2024-06-21 4:51 ` Christoph Hellwig
2024-06-20 22:58 ` [PATCHSET v3.0 4/5] xfs: refcount log intent cleanups Darrick J. Wong
2024-06-20 23:09 ` [PATCH 01/10] xfs: give refcount btree cursor error tracepoints their own class Darrick J. Wong
2024-06-21 4:51 ` Christoph Hellwig
2024-06-20 23:09 ` [PATCH 02/10] xfs: create specialized classes for refcount tracepoints Darrick J. Wong
2024-06-21 4:51 ` Christoph Hellwig
2024-06-20 23:10 ` [PATCH 03/10] xfs: prepare refcount btree tracepoints for widening Darrick J. Wong
2024-06-21 4:52 ` Christoph Hellwig
2024-06-20 23:10 ` [PATCH 04/10] xfs: clean up refcount log intent item tracepoint callsites Darrick J. Wong
2024-06-21 4:52 ` Christoph Hellwig
2024-06-20 23:10 ` [PATCH 05/10] xfs: remove xfs_trans_set_refcount_flags Darrick J. Wong
2024-06-21 4:53 ` Christoph Hellwig
2024-06-20 23:10 ` [PATCH 06/10] xfs: add a ci_entry helper Darrick J. Wong
2024-06-21 4:53 ` Christoph Hellwig
2024-06-20 23:11 ` [PATCH 07/10] xfs: reuse xfs_refcount_update_cancel_item Darrick J. Wong
2024-06-21 4:54 ` Christoph Hellwig
2024-06-20 23:11 ` [PATCH 08/10] xfs: don't bother calling xfs_refcount_finish_one_cleanup in xfs_refcount_finish_one Darrick J. Wong
2024-06-21 4:54 ` Christoph Hellwig
2024-06-20 23:11 ` [PATCH 09/10] xfs: simplify usage of the rcur local variable " Darrick J. Wong
2024-06-21 4:54 ` Christoph Hellwig
2024-06-20 23:11 ` [PATCH 10/10] xfs: move xfs_refcount_update_defer_add to xfs_refcount_item.c Darrick J. Wong
2024-06-21 4:54 ` Christoph Hellwig
2024-06-20 22:58 ` [PATCHSET v3.0 5/5] xfs: enable FITRIM for the realtime section Darrick J. Wong
2024-06-20 23:12 ` [PATCH 1/1] xfs: enable FITRIM on the realtime device Darrick J. Wong
2024-06-21 5:00 ` Christoph Hellwig
2024-06-21 18:23 ` Darrick J. Wong
2024-06-24 15:04 ` [PATCH v2 " Darrick J. Wong
2024-06-24 15:12 ` Christoph Hellwig
2024-06-27 6:13 ` Chandan Babu R
2024-06-27 6:35 ` Christoph Hellwig
2024-06-27 6:38 ` Christoph Hellwig
2024-06-27 20:54 ` Darrick J. Wong
[not found] ` <2O52BJOH5Y79X.3A332GBFVJ9K7@gmail.com>
[not found] ` <20240723032327.GU1998502@frogsfrogsfrogs>
[not found] ` <2NTNQAOVQB88C.3NX279FOIEOI0@gmail.com>
[not found] ` <20240723232805.GX1998502@frogsfrogsfrogs>
[not found] ` <1YL3BJOD4E6EC.2JWNIADIUU7OD@gmail.com>
[not found] ` <20240724235707.GG1646003@frogsfrogsfrogs>
[not found] ` <3UKNEUV4T2OLQ.30FMK239EJTGG@gmail.com>
[not found] ` <20240806163246.GD623936@frogsfrogsfrogs>
[not found] ` <20240806230656.GD623922@frogsfrogsfrogs>
2024-08-19 16:01 ` [PATCH " Konst Mayer
2024-06-21 3:09 ` [PATCHSET v3.0 5/5] xfs: enable FITRIM for the realtime section Konst Mayer
2024-06-21 18:26 ` Darrick J. Wong
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=171892418278.3183075.2874879886308264652.stgit@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.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