1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (c) 2022-2024 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
8 #include "xfs_shared.h"
9 #include "xfs_format.h"
10 #include "xfs_trans_resv.h"
11 #include "xfs_mount.h"
13 #include "xfs_trace.h"
15 /* Initialize a notifier chain. */
18 struct xfs_hooks
*chain
)
20 BLOCKING_INIT_NOTIFIER_HEAD(&chain
->head
);
23 /* Make it so a function gets called whenever we hit a certain hook point. */
26 struct xfs_hooks
*chain
,
27 struct xfs_hook
*hook
)
29 ASSERT(hook
->nb
.notifier_call
!= NULL
);
30 BUILD_BUG_ON(offsetof(struct xfs_hook
, nb
) != 0);
32 return blocking_notifier_chain_register(&chain
->head
, &hook
->nb
);
35 /* Remove a previously installed hook. */
38 struct xfs_hooks
*chain
,
39 struct xfs_hook
*hook
)
41 blocking_notifier_chain_unregister(&chain
->head
, &hook
->nb
);
44 /* Call a hook. Returns the NOTIFY_* value returned by the last hook. */
47 struct xfs_hooks
*chain
,
51 return blocking_notifier_call_chain(&chain
->head
, val
, priv
);