PFL known issues tracking ticket (LU-9349)

[LU-9424] ‘lfs getstripe --component-count’ return nothing for non-composite files Created: 01/May/17  Updated: 03/Jun/17  Resolved: 03/Jun/17

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.10.0
Fix Version/s: Lustre 2.10.0

Type: Technical task Priority: Critical
Reporter: James Nunez (Inactive) Assignee: Niu Yawei (Inactive)
Resolution: Fixed Votes: 0
Labels: pfl

Issue Links:
Related
is related to LU-9362 PFL: Files with multiple components s... Resolved
is related to LU-9349 PFL known issues tracking ticket Resolved
Rank (Obsolete): 9223372036854775807

 Description   

I’ve created several composite and non-composite files:

# touch /lustre/scratch/nocomp
# lfs setstripe -E 1M -E 2M -E 3M /lustre/scratch/threecompfile
# lfs setstripe -E 3M /lustre/scratch/onec
# lfs setstripe -E 1m -E 4M /lustre/scratch/twoc

For non-composite (non-PFL) files, I thought the component count would be 0 or 1, but that’s not the case. Using ‘lfs find –component-count’, I know that the component count for the non-composite file, nocomp, is not 0 and not 1:

# lfs getstripe --component-count /lustre/scratch/nocomp 
# lfs getstripe --component-count /lustre/scratch/onec 
1
# lfs getstripe --component-count /lustre/scratch/twoc 
2
# lfs getstripe --component-count /lustre/scratch/threecompfile 
3

# lfs find --component-count 0 /lustre/scratch
# lfs find --component-count 1 /lustre/scratch
/lustre/scratch/onec

# lfs find ! --component-count 0 /lustre/scratch
/lustre/scratch
/lustre/scratch/twoc
/lustre/scratch/onec
/lustre/scratch/nocomp
/lustre/scratch/threecompfile

# lfs find ! --component-count 1 /lustre/scratch
/lustre/scratch
/lustre/scratch/twoc
/lustre/scratch/nocomp
/lustre/scratch/threecompfile

It seems like non-composite files should have a count of 1 or, possibly, 0.



 Comments   
Comment by Peter Jones [ 02/May/17 ]

Niu

Could you please assist with this one?

Thanks

Peter

Comment by Niu Yawei (Inactive) [ 03/May/17 ]

hmm, I think the key problem here is that should we regard non-composite file as component-count=0 file? My original implementation treats them differently, because I don't think it's not proper to define the component count of a non-composite file as 0 or 1.

So component count of a non-composite file is neither 0 nor 1, it should match both "! comp_count=0" and "! comp_count=1", isn't it?

Comment by Andreas Dilger [ 04/May/17 ]

I think that the command needs to return something in this case, otherwise it makes it difficult to write a script which handles the results. Returning a component count of "0" makes sense to me, since it is not a composite file and it has no (zero) components.

Comment by Niu Yawei (Inactive) [ 05/May/17 ]

Then what about --component-id, --component-flags, etc? Should we return error message when user try to use component options for a non-composite file? A side effect of returning error message is it will interfere the output parsing for a mixed options getstripe (when user perform getstripe with mixed options to a set of files)

Comment by Andreas Dilger [ 05/May/17 ]

I would be ok to return 0 for component ID (which is invalid for composite files), and 0 for component flags (since no flags are set). Returning 0 for component count is also a simple way for scripts to know that this is not a composite file, if they want to scan the filesystem for non-PFL files.

Comment by Niu Yawei (Inactive) [ 08/May/17 ]

Is this change going to be limited in the output of 'lfs getstripe' or are we going to update 'lfs find' as well?

We need some extra effort if the 'lfs find' is going to be updated as well, for example, if someone try to find component count < 5 files by 'lfs find --component-count=-5', should the plain file (with component-count=0) being matched? I think it's reasonable to match plain file for such kind of 'find' if we regard plain as kind of single component file (with comp_cnt=1, comp_id=0, comp_flags=init, comp_start=0, comp_end=eof), and it could be differentiated with real single component file by comp_id=0.

Another problem is that 'lfs getstripe --component-xxx=optional_args' may print nothing as well (when no component satisfy criterion), should we print an error message or just leave it as-is? I prefer to keep it as-is.

Comment by Niu Yawei (Inactive) [ 09/May/17 ]

I think current candidate solutions are:
1. 'lfs getstripe' display comp_count=0, comp_id=0, comp_flags=0, comp_start=0, comp_end=0 (or eof?), and keep 'lfs find' not matching plain file on comp options.
2. 'lfs getstripe' display comp_count=0, comp_id=0, comp_flags=0, comp_start=0, comp_end=0 (or eof?), and change 'lfs find' to match plain file on comp options.
3. 'lfs getstripe' display comp_count=1, comp_id=0, comp_flags=0, comp_start=0, comp_end=eof, and keep 'lfs find' not matching plain file on comp options.
4. 'lfs getstripe' display comp_count=1, comp_id=0, comp_flags=0, comp_start=0, comp_end=eof, and change 'lfs find' to match plain file on comp options.
5. 'lfs getstripe' display nothing for comp options, and 'lfs find' doesn't match plain file on comp options. (current behavior)

Andreas, Bobi, which one do you prefer? I prefer 4 or 5.

Comment by Zhenyu Xu [ 09/May/17 ]

I vote 4.

Comment by Andreas Dilger [ 10/May/17 ]

My first preference would be #1 with comp_end=eof, but second choice would be #4.

Comment by John Hammond [ 10/May/17 ]

I vote 4.

Comment by Jinshan Xiong (Inactive) [ 10/May/17 ]

I vote 4. The reason is that non-PFL file should be handled exactly the same way as single component PFL file.

Comment by Gerrit Updater [ 11/May/17 ]

Niu Yawei (yawei.niu@intel.com) uploaded a new patch: https://review.whamcloud.com/27060
Subject: LU-9424 tools: v1/v3 as composite layout
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: 5cdb8dc668ea4e2aaac833d4155a91db2b9dab04

Comment by Gerrit Updater [ 03/Jun/17 ]

Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/27060/
Subject: LU-9424 tools: v1/v3 as composite layout
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 013baaa0ccac4a1e376081c604f5daacf828bfea

Comment by Peter Jones [ 03/Jun/17 ]

Landed for 2.10

Generated at Sat Feb 10 02:26:04 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.