summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/performance/write-behind/src/write-behind.c46
1 files changed, 26 insertions, 20 deletions
diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c
index cdc88969976..4b8e0d188bf 100644
--- a/xlators/performance/write-behind/src/write-behind.c
+++ b/xlators/performance/write-behind/src/write-behind.c
@@ -322,6 +322,8 @@ wb_file_create (xlator_t *this, fd_t *fd, int32_t flags)
file->window_conf = conf->window_size;
file->flags = flags;
+ LOCK_INIT (&file->lock);
+
fd_ctx_set (fd, this, (uint64_t)(long)file);
out:
@@ -1367,19 +1369,21 @@ wb_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,
goto out;
}
- /* If O_DIRECT then, we disable chaching */
- if (((flags & O_DIRECT) == O_DIRECT)
- || ((flags & O_ACCMODE) == O_RDONLY)
- || (((flags & O_SYNC) == O_SYNC)
- && conf->enable_O_SYNC == _gf_true)) {
- file->window_conf = 0;
- }
+ LOCK (&file->lock);
+ {
+ /* If O_DIRECT then, we disable chaching */
+ if (((flags & O_DIRECT) == O_DIRECT)
+ || ((flags & O_ACCMODE) == O_RDONLY)
+ || (((flags & O_SYNC) == O_SYNC)
+ && conf->enable_O_SYNC == _gf_true)) {
+ file->window_conf = 0;
+ }
- if (wbflags & GF_OPEN_NOWB) {
- file->disabled = 1;
+ if (wbflags & GF_OPEN_NOWB) {
+ file->disabled = 1;
+ }
}
-
- LOCK_INIT (&file->lock);
+ UNLOCK (&file->lock);
}
out:
@@ -1443,17 +1447,19 @@ wb_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
goto out;
}
- /* If O_DIRECT then, we disable chaching */
- if (frame->local) {
- if (((flags & O_DIRECT) == O_DIRECT)
- || ((flags & O_ACCMODE) == O_RDONLY)
- || (((flags & O_SYNC) == O_SYNC)
- && (conf->enable_O_SYNC == _gf_true))) {
- file->window_conf = 0;
+ LOCK (&file->lock);
+ {
+ /* If O_DIRECT then, we disable chaching */
+ if (frame->local) {
+ if (((flags & O_DIRECT) == O_DIRECT)
+ || ((flags & O_ACCMODE) == O_RDONLY)
+ || (((flags & O_SYNC) == O_SYNC)
+ && (conf->enable_O_SYNC == _gf_true))) {
+ file->window_conf = 0;
+ }
}
}
-
- LOCK_INIT (&file->lock);
+ UNLOCK (&file->lock);
}
frame->local = NULL;