diff options
Diffstat (limited to 'libglusterfs')
-rw-r--r-- | libglusterfs/src/defaults.c | 15 | ||||
-rw-r--r-- | libglusterfs/src/glfs-message-id.h | 4 | ||||
-rw-r--r-- | libglusterfs/src/glusterfs.h | 9 |
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 |