diff options
author | Krishnan Parthasarathi <kparthas@redhat.com> | 2015-02-05 15:41:35 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2015-02-07 13:25:26 -0800 |
commit | f18a3f30bbeaf3bb067b913082830d7f874555ca (patch) | |
tree | 9d283dc48f6158b24acfc4be9176db7b48e50c1c /xlators/protocol/client/src/client.h | |
parent | a7f5893c9243c8c563db215352fa7e47f6968e8b (diff) |
protocol/client: sequence CHILD_UP, CHILD_DOWN etc notifications
... from all bricks in the volume
This patch is important in the context of MT epoll. With MT epoll,
notification events from client xlators could reach cluster xlators like
afr, dht, ec, stripe etc. in different orders.
For e.g, In a distributed replicate volume of 2 bricks, namely Brick1
and Brick2, the following network events are observed by a mount
process.
- connection to Brick1 is broken.
- connection to Brick1 has been restored.
- connection to Brick2 is broken.
- connection to Brick2 has been restored.
Without establishing a total ordering of events, we can't guarantee that
cluster xlators like afr, dht perceive them in the same order. While we
would expect afr (say) to perceive it as only one of Brick1 and Brick2
going down at any given time, it is possible for the notification of
Brick2 going offline to race with the notification of Brick1 coming back
online.
Change-Id: I78f5a52bfb05593335d0e9ad53ebfff98995593d
BUG: 1104462
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/9591
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/protocol/client/src/client.h')
-rw-r--r-- | xlators/protocol/client/src/client.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h index af70926b178..1aea1353727 100644 --- a/xlators/protocol/client/src/client.h +++ b/xlators/protocol/client/src/client.h @@ -262,4 +262,6 @@ int client_fd_fop_prepare_local (call_frame_t *frame, fd_t *fd, int64_t remote_fd); gf_boolean_t __is_fd_reopen_in_progress (clnt_fd_ctx_t *fdctx); +int +client_notify_dispatch (xlator_t *this, int32_t event, void *data, ...); #endif /* !_CLIENT_H */ |