summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/defaults.c15
-rw-r--r--libglusterfs/src/glfs-message-id.h4
-rw-r--r--libglusterfs/src/glusterfs.h9
3 files changed, 28 insertions, 0 deletions
diff --git a/libglusterfs/src/defaults.c b/libglusterfs/src/defaults.c
index 599f9477dca..a4f8f924b17 100644
--- a/libglusterfs/src/defaults.c
+++ b/libglusterfs/src/defaults.c
@@ -2287,6 +2287,21 @@ default_notify (xlator_t *this, int32_t event, void *data, ...)
}
}
break;
+ case GF_EVENT_UPCALL:
+ {
+ xlator_list_t *parent = this->parents;
+
+ if (!parent && this->ctx && this->ctx->master)
+ xlator_notify (this->ctx->master, event, data, NULL);
+
+ while (parent) {
+ if (parent->xlator->init_succeeded)
+ xlator_notify (parent->xlator, event,
+ data, NULL);
+ parent = parent->next;
+ }
+ }
+ break;
default:
{
xlator_list_t *parent = this->parents;
diff --git a/libglusterfs/src/glfs-message-id.h b/libglusterfs/src/glfs-message-id.h
index 35abe472aab..c977206c44d 100644
--- a/libglusterfs/src/glfs-message-id.h
+++ b/libglusterfs/src/glfs-message-id.h
@@ -72,6 +72,10 @@
#define GLFS_MSGID_COMP_COMMON_END (GLFS_MSGID_COMP_COMMON +\
GLFS_MSGID_SEGMENT)
+#define GLFS_MSGID_COMP_UPCALL GLFS_MSGID_COMP_COMMON_END
+#define GLFS_MSGID_COMP_UPCALL_END (GLFS_MSGID_COMP_UPCALL +\
+ GLFS_MSGID_SEGMENT)
+
/* --- new segments for messages goes above this line --- */
#endif /* !_GLFS_MESSAGE_ID_H_ */
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h
index c482b3d2242..d5a604d0341 100644
--- a/libglusterfs/src/glusterfs.h
+++ b/libglusterfs/src/glusterfs.h
@@ -562,6 +562,7 @@ typedef enum {
GF_EVENT_VOLUME_DEFRAG,
GF_EVENT_PARENT_DOWN,
GF_EVENT_VOLUME_BARRIER_OP,
+ GF_EVENT_UPCALL,
GF_EVENT_MAXVAL,
} glusterfs_event_t;
@@ -574,6 +575,14 @@ struct gf_flock {
gf_lkowner_t l_owner;
};
+struct gf_upcall {
+ char *client_uid;
+ char gfid[16];
+ u_int event_type;
+ u_int flags;
+ u_int expire_time_attr;
+};
+
#define GF_MUST_CHECK __attribute__((warn_unused_result))
/*
* Some macros (e.g. ALLOC_OR_GOTO) set variables in function scope, but the