Umm... my suggestion doesn't break anything... but it doesn't fix the  
issue at hand :)

I have committed the obvious correction (test time stamp equality, not  
greater than).

I think the only way to make further improvements is to use sub-second  
time info when available, as raster suggests.
IMO it's not worth while to test inode, size, etc. too.

/Kim


On Sat, 19 Mar 2011 05:05:26 +0100, Carsten Haitzler  
<ras...@rasterman.com> wrote:

> On Thu, 17 Mar 2011 11:51:33 +0100 "Jesper Saxtorph"
> <jesper.saxto...@prevas.dk> said:
>
> the problem is - you are BOTH right and BOTH things break something.
> suggestion. use things OTHEr than modified timestamp for comparisons. ie
> timestamp must EXACTLY match for caching (== not >=), ANd size, and  
> mode, and
> uid and gid, inode... the filesystem may also support (on linux)  
> nanosecond
> resolution: st_mtimensec (see bits/stat.h). thats the only kind of  
> solution
> that will make everyone happy. still not 100% perfect as size may be the  
> same
> and inode re-cycled, and other things the same (als the timestamp  
> discussion)
> BUT if the fs supports nanosecond res timestamps... you are golden...  
> well
> unless the file was written within the same nanosecond :)
>
>> I understand your thoughts, however I your suggestion will not work. I
>> will try to explain it clearer. Bear with me, if it gets a little long
>> and I repeat what is written earlier, but I am not sure what part you
>> are missing.
>>
>> In an ideal world where timestamps has infinite precision and they
>> represents the actual real time the files has been changed (never future
>> timestamps). If this was the case the original code would work fine.
>>
>> In the real world 3 things can happen to break the setup.
>> 1) People can force incorrect timestamps.
>> 2) By error files can be marked in the future. If this happens we risk
>> that the file will be changed again at the exact time of the timestamp,
>> which means 2 writes with the same timestamp.
>> 3) The file can be written more than one time with the same timestamp
>> because of the timestamp resolution.
>>
>> Case 1), we should not really care about, as people break the system on
>> purpose.
>>
>> For both case 2) and 3) the problem happen in the following situation:
>> a) Imlib reads the file and register the timestamp of the file (for
>> simplification I consider this atomic in this example). The file content
>> is cached.
>> b) The file is changed, but the timestamp is still the same. This can
>> happen according to case 2) and 3) above.
>> c) Imlib need the file data again and want
>> (imlib_image_set_changes_on_disk) to decide if the cached data is valid.
>> It checks the timestamp to validate this. However, as the timestamp has
>> not changed, the data are deemed valid, while in reality they are not.
>>
>> Now back to your suggestion.
>> What you do is the following: On first load you cache the data. On a
>> later load you try test if the files current timestamp is right now.
>>
>> So lets take an example of why can fail according to case 3):
>> I) A file is written at time 17.
>> II) The file is read and cached by imlib at time 17.
>> III) The file is changed again after the imlib read but still at time
>> 17.
>> IV) At time 20 imlib need the data again. It try to validate the cache.
>> However, since the cache timestamp is still equal to the file timestamp
>> and not equal to the current time (20), imlib will validate the cache,
>> which is wrong.
>>
>> You can make a similar scenario for case 2)
>>
>> I hope this makes it more clear.
>>
>> -Jesper
>>
>> ------------------------------------------------------------------------------
>> Colocation vs. Managed Hosting
>> A question and answer guide to determining the best fit
>> for your organization - today and in the future.
>> http://p.sf.net/sfu/internap-sfd2d
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to