mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
fsnotify: remove redundant arguments to handle_event()
inode_mark and vfsmount_mark arguments are passed to handle_event() operation as function arguments as well as on iter_info struct. The difference is that iter_info struct may contain marks that should not be handled and are represented as NULL arguments to inode_mark or vfsmount_mark. Instead of passing the inode_mark and vfsmount_mark arguments, add a report_mask member to iter_info struct to indicate which marks should be handled, versus marks that should only be kept alive during user wait. This change is going to be used for passing more mark types with handle_event() (i.e. super block marks). Signed-off-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
d6f7b98bc8
commit
5b0457ad02
11 changed files with 58 additions and 50 deletions
|
@ -98,8 +98,6 @@ struct fsnotify_iter_info;
|
|||
struct fsnotify_ops {
|
||||
int (*handle_event)(struct fsnotify_group *group,
|
||||
struct inode *inode,
|
||||
struct fsnotify_mark *inode_mark,
|
||||
struct fsnotify_mark *vfsmount_mark,
|
||||
u32 mask, const void *data, int data_type,
|
||||
const unsigned char *file_name, u32 cookie,
|
||||
struct fsnotify_iter_info *iter_info);
|
||||
|
@ -212,6 +210,24 @@ enum fsnotify_obj_type {
|
|||
#define FSNOTIFY_OBJ_TYPE_VFSMOUNT_FL (1U << FSNOTIFY_OBJ_TYPE_VFSMOUNT)
|
||||
#define FSNOTIFY_OBJ_ALL_TYPES_MASK ((1U << FSNOTIFY_OBJ_TYPE_COUNT) - 1)
|
||||
|
||||
struct fsnotify_iter_info {
|
||||
struct fsnotify_mark *inode_mark;
|
||||
struct fsnotify_mark *vfsmount_mark;
|
||||
unsigned int report_mask;
|
||||
int srcu_idx;
|
||||
};
|
||||
|
||||
#define FSNOTIFY_ITER_FUNCS(name, NAME) \
|
||||
static inline struct fsnotify_mark *fsnotify_iter_##name##_mark( \
|
||||
struct fsnotify_iter_info *iter_info) \
|
||||
{ \
|
||||
return (iter_info->report_mask & FSNOTIFY_OBJ_TYPE_##NAME##_FL) ? \
|
||||
iter_info->name##_mark : NULL; \
|
||||
}
|
||||
|
||||
FSNOTIFY_ITER_FUNCS(inode, INODE)
|
||||
FSNOTIFY_ITER_FUNCS(vfsmount, VFSMOUNT)
|
||||
|
||||
/*
|
||||
* Inode / vfsmount point to this structure which tracks all marks attached to
|
||||
* the inode / vfsmount. The reference to inode / vfsmount is held by this
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue