diff options
author | N Balachandran <nbalacha@redhat.com> | 2017-07-10 09:38:54 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-07-19 11:25:10 +0000 |
commit | 856aa0ff090fa08629493e7848e5c446a93a9f2d (patch) | |
tree | ceb1b45c684adf59cddda73f6fa4149c54ea7939 /xlators/cluster/dht/src/dht-rebalance.c | |
parent | 590a7718c948d02ad93ce4f68c9c75ec0674a3cd (diff) |
cluster/dht: Fix fd check race
There is a another race between the cached subvol
being updated in the inode_ctx and the fd being opened on
the target.
1. fop1 -> fd1 -> subvol0
2. file migrated from subvol0 to subvol1 and cached_subvol
changed to subvol1 in inode_ctx
3. fop2 -> fd1 -> subvol1 [takes new cached subvol]
4. fop2 -> checks fd ctx (fd not open on subvol1) -> opens fd1 on subvol1
5. fop1 -> checks fd ctx (fd not open on subvol0)
-> tries to open fd1 on subvol0 -> fails with "No such file on directory".
Fix:
If dht_fd_open_on_dst fails with ENOENT or ESTALE, wind to old subvol
and let the phase1/phase2 checks handle it.
> BUG: 1465075
> Signed-off-by: N Balachandran <nbalacha@redhat.com>
> Reviewed-on: https://review.gluster.org/17731
> Smoke: Gluster Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
> Reviewed-by: Amar Tumballi <amarts@redhat.com>
(cherry picked from commit f7a450c17fee7e43c544473366220887f0534ed7)
Change-Id: I34f8011574a8b72e3bcfe03b0cc4f024b352f225
BUG: 1465123
Signed-off-by: N Balachandran <nbalacha@redhat.com>
Reviewed-on: https://review.gluster.org/17751
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/cluster/dht/src/dht-rebalance.c')
0 files changed, 0 insertions, 0 deletions