Correction below
On Thursday 22 January 2009 09:13:40 Charles Manning wrote:
> Hi Wookey
>
> I'm trying to sort through the three available patches and try to make sure
> that what goes forwards considers the best of all of these.
>
> In your patch you have:
>
>
> + if (nWritten == len)
> + SetPageUptodate(pg);
>
> - if (nWritten != nBytes) {
> + if (nWritten != copied) {
>
> which boils down to:
>
> if( nWritten == len)
> SetPageUptodate(pg);
> if(nWritten != copied){
> SetPageError(pg);
> ClearPageUptodate(pg);
> }
>
> Looks a bit odd: shouldn't you use just len or copied?
>
> I notice too that you don't read the data in write_begin. I guess this OK
> so long as pos is always page aligned which might be a valid assumption.
>
> Does your file_ops also have
> .lseek = generic_file_lseek.
.llseek = generic_file_llseek,
>
> Without that it looks like lseek won't work in 2.6.28.
The default behaviour is to use default_lseek which does not seem to handle
negative offsets. ie won't work properly for negative offsets. eg.
newpos = lseek(h,-5,SEEK_CUR);
newpos = lseek(h,-4,SEEK_END);
> -- Charles