Details
-
New Feature
-
Resolution: Fixed
-
Minor
-
None
-
None
-
None
-
13
-
10538
Description
Currently, if OI files are removed/recreated, then osd_oi_lookup() will return confused "-ENOENT". Because OSD cannot distinguish whether the given FID is new one w/o corresponding file resides on disk, or just old one but missed OI mapping entry because of OI files removed/recreated.
Under such case, it is helpful if up layer caller can supply some hint to help to distinguish. Otherwise, OSD will return the "-EINPROGRESS" to notify the caller. Client has to resend the RPC repeatedly until related OI mapping entry is re-inserted or all the OI files are build. That is trouble for some interactive applications, especially for create if it has to wait and repeat until OI rebuilding finished. So We need to process these properly and try to reduce/eliminate the affect of OI files removed/recreated.
We have introduced LOC_F_NEW for create case during OI rebuilding, and also handled OI lookup_by_FID after OI lookup_by_name. The other case of lookup_by_FID, has no better solution, just return "-EINPROGRESS" to the client for retrying.