diff options
-rwxr-xr-x | tests/performance/open-behind.t | 18 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 5 | ||||
-rw-r--r-- | xlators/performance/open-behind/src/open-behind.c | 4 |
3 files changed, 25 insertions, 2 deletions
diff --git a/tests/performance/open-behind.t b/tests/performance/open-behind.t index 2524ce9e276..032154a202d 100755 --- a/tests/performance/open-behind.t +++ b/tests/performance/open-behind.t @@ -32,6 +32,21 @@ function write_to() TEST write_to "$M0/$F0" "$D0"; EXPECT "$D0" cat $M1/$F0; +# open-behind delays open and uses anonymous fds for fops like +# fstat and readv. So after creating the file, if volume is restarted +# then later when the file is read, because of the use of anonymous fds +# volume top open will show number of files opened as 0. +TEST $CLI volume stop $V0; +sleep 1; +TEST $CLI volume start $V0; + +sleep 2; +cat $M1/$F0 >/dev/null; + +string=$(gluster volume top $V0 open | grep -w "$F0"); + +EXPECT "" echo $string; + TEST $CLI volume set $V0 performance.open-behind off; D1="hello-this-is-a-test-message1"; @@ -42,4 +57,7 @@ EXPECT "$D1" cat $M1/$F1; EXPECT "$D0" cat $M1/$F0; +gluster volume top $V0 open | grep -w "$F0" >/dev/null 2>&1 +TEST [ $? -eq 0 ]; + cleanup; diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 62e7b4259cb..c063fc62fe1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -356,6 +356,11 @@ struct volopt_map_entry glusterd_volopt_map[] = { .flags = 2, .op_version = 1 }, + { .key = "performance.lazy-open", + .voltype = "performance/open-behind", + .option = "lazy-open", + .op_version = 2 + }, { .key = "performance.read-ahead-page-count", .voltype = "performance/read-ahead", .option = "page-count", diff --git a/xlators/performance/open-behind/src/open-behind.c b/xlators/performance/open-behind/src/open-behind.c index e6791973489..ec5f62580af 100644 --- a/xlators/performance/open-behind/src/open-behind.c +++ b/xlators/performance/open-behind/src/open-behind.c @@ -361,7 +361,7 @@ ob_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, if (!stub) goto err; - open_and_resume (this, fd, stub); + open_and_resume (this, wind_fd, stub); return 0; err: @@ -408,7 +408,7 @@ ob_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata) if (!stub) goto err; - open_and_resume (this, fd, stub); + open_and_resume (this, wind_fd, stub); return 0; err: |