Bug 1438810

Summary: File-level WORM allows ftruncate() on read-only files
Product: [Community] GlusterFS Reporter: Karthik U S <ksubrahm>
Component: unclassifiedAssignee: Karthik U S <ksubrahm>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: mainlineCC: amukherj, bugs, gm06041
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard: worm
Fixed In Version: glusterfs-3.11.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1437763 Environment:
Last Closed: 2017-05-30 18:49:22 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1437763, 1439112    

Description Karthik U S 2017-04-04 13:19:45 UTC
+++ This bug was initially created as a clone of Bug #1437763 +++

Description of problem:

file is truncated on File level WORM volume.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1. create worm volume (File Level)
$ gluster volume create vol_repl gm0604:/home/glu_test
$ gluster volume set vol_repl features.worm-file-level "on"
$ gluster volume set vol_repl features.worm "off"
$ gluster volume set vol_repl features.auto-commit-period 1
$ gluster volume set vol_repl features.retention-mode relax
$ gluster volume start vol_repl
$ mount -t glusterfs -o worm gm0604:/vol_repl /home/glu_gate

Volume Name: vol_repl
Type: Distribute
Volume ID: 603d32ef-9290-423d-8a66-20776d4ef252
Status: Started
Snapshot Count: 0
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: gm0604:/home/glu_test
Options Reconfigured:
nfs.disable: on
performance.readdir-ahead: on
transport.address-family: inet
features.worm-file-level: on
features.worm: off
features.auto-commit-period: 1
features.retention-mode: relax

2. create file on WORM volume (File Level)
$ cd /home/glu_gate
$ ls -l / > test1
$ ls -l
total 2
-rw-r--r-- 1 root root 1786 Feb 17 09:16 test1

3. delete or overwrite a file on WORM volume (File Level)
$ rm test1
rm: remove regular file 'test1'? y
rm: cannot remove 'test1': Read-only file system
$ ls -l / > test1
ls: write error: Read-only file system
$ ls -l
total 0
-rw-r--r-- 1 root root 0 Feb 17 09:16 test1

Actual results:
- the file should not be changed.

Expected results:
- the file should not be truncated.

Additional info:

--- Additional comment from Geunmoon Oh on 2017-03-31 02:38:28 EDT ---

i corrected some explanation.

Actual results:
- the file was truncated.

Related github issue:
https://github.com/gluster/glusterfs/issues/123

Comment 1 Worker Ant 2017-04-04 13:37:07 UTC
REVIEW: https://review.gluster.org/16995 (features/worm: Adding implementation for ftruncate) posted (#1) for review on master by Karthik U S (ksubrahm)

Comment 2 Worker Ant 2017-04-04 13:41:47 UTC
REVIEW: https://review.gluster.org/16995 (features/worm: Adding implementation for ftruncate) posted (#2) for review on master by Karthik U S (ksubrahm)

Comment 3 Worker Ant 2017-04-05 08:11:54 UTC
COMMIT: https://review.gluster.org/16995 committed in master by Niels de Vos (ndevos) 
------
commit c5a4a77848024d2adf8cd4f35d550ba90c174fc7
Author: karthik-us <ksubrahm>
Date:   Tue Apr 4 18:57:32 2017 +0530

    features/worm: Adding implementation for ftruncate
    
    Problem:
    Since the ftruncate fop was not handled in the worm feature, when
    truncate and write was happening on a worm-retained/worm file, it was
    giving the EROFS error but truncating the file, which is not correct.
    
    Change-Id: I1a7e904655210d78bce9e01652ac56f3783b5aed
    BUG: 1438810
    Signed-off-by: karthik-us <ksubrahm>
    Reviewed-on: https://review.gluster.org/16995
    NetBSD-regression: NetBSD Build System <jenkins.org>
    Reviewed-by: Niels de Vos <ndevos>
    CentOS-regression: Gluster Build System <jenkins.org>
    Reviewed-by: Ravishankar N <ravishankar>
    Smoke: Gluster Build System <jenkins.org>
    Reviewed-by: Amar Tumballi <amarts>
    Reviewed-by: Raghavendra Talur <rtalur>

Comment 4 Shyamsundar 2017-05-30 18:49:22 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.11.0, please open a new bug report.

glusterfs-3.11.0 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] http://lists.gluster.org/pipermail/announce/2017-May/000073.html
[2] https://www.gluster.org/pipermail/gluster-users/