This service will be undergoing maintenance at 00:00 UTC, 2017-10-23 It is expected to last about 30 minutes
Bug 1286092 - Duplicate files seen on mount point while trying to create files which are greater than the brick size
Duplicate files seen on mount point while trying to create files which are gr...
Status: NEW
Product: Red Hat Gluster Storage
Classification: Red Hat
Component: distribute (Show other bugs)
3.1
Unspecified Unspecified
unspecified Severity urgent
: ---
: ---
Assigned To: Raghavendra G
Anoop
dht-brick-full, dht-qe-3.2, dht-3.2.0...
: ZStream
Depends On: 1464350 1471366 990909
Blocks: 1286095 1286134 RHGS-3.4-GSS-proposed-tracker
  Show dependency treegraph
 
Reported: 2015-11-27 05:45 EST by Susant Kumar Palai
Modified: 2017-10-21 13:17 EDT (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 990909
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Comment 2 Raghavendra G 2016-07-01 06:38:26 EDT
RCA:

1. Posix_mknod succeeds even though linkto xattr is not set because of no space. However the dentry/file is created. Hence this is a file with only T bit set, but without any linkto xattr.
2. Since mknod succeeds, dht proceeds to create data file on a subvol with enough space (min-free disk scenario).
3. Now we've two files and both are data files (because of lack of linkto xattr on hashed-subvol).

Also, since the file on hashed-subvol has only T bit set, all calls to IS_DHT_MIGRATION_PHASE2 succeed. This results in fops like dht_writev_cbk, dht_stat_cbk etc (fops handling migration) to falsely assume that a migration is going on and invoke dht_migration_complete_check task, which fails because of lack of linkto xattr. This error is propagated back to application in these calls (write, stat etc).

Fix:

Two possible fixes.
1. make posix_mknod atomic with respect to file creation and xattr setting. It should succeed only if both succeed. When xattr setting fails, it should cleanup the file.
2. dht_linkfile_create_cbk should double check whether the file created is indeed a linkto file (by asking for linkto xattr and iatt in cbk). If it finds that file created is not a linkto file, it'll cleanup the file and fails the create call with appropriate error (ENOSPC in this case).

regards,
Raghavendra

Note You need to log in before you can comment on or make changes to this bug.