diff options
author | Ashish Pandey <aspandey@redhat.com> | 2015-11-26 14:35:49 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2015-12-15 00:35:59 -0800 |
commit | c4f6521dfe6a44cee2f61ae41fc26faaf785372d (patch) | |
tree | 2dc31b5470c7a1b3213deb4b544a2fb341c9c353 /xlators/storage/posix/src/posix-handle.c | |
parent | be438f9aa70cce9d14d72d7cf8ddee89738db36c (diff) |
storage/posix: Implement .unlink directory
Problem: For EC volume, If a file descriptor is open and
file has been unlinked, any further write on that fd will
fail. When a write request comes, EC internally reads some
blocks using anonymous fd. This read will fail as the file
has already been unlinked.
Solution: To solve this issue, we are using .unlink directory
to keep track of unlinked file. If a file is to be unlinked
while its fd is open, move this to .unlink directory and unlink
it from .glusterfs and real path. Once all the fd will be closed,
remove this entry form .unlink directory.
Change-Id: I8344edb0d340bdb883dc46458c16edbc336916b9
BUG: 1286029
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
Reviewed-on: http://review.gluster.org/12816
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'xlators/storage/posix/src/posix-handle.c')
-rw-r--r-- | xlators/storage/posix/src/posix-handle.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/xlators/storage/posix/src/posix-handle.c b/xlators/storage/posix/src/posix-handle.c index 9a521d019a4..5a8f180b9f4 100644 --- a/xlators/storage/posix/src/posix-handle.c +++ b/xlators/storage/posix/src/posix-handle.c @@ -16,6 +16,8 @@ #include <alloca.h> #endif +#include "common-utils.h" + #include "posix-handle.h" #include "posix.h" #include "xlator.h" @@ -447,7 +449,6 @@ out: return len; } - int posix_handle_init (xlator_t *this) { |