[linux-cifs-client] Re: Fwd: fsx-linux failing with latest cifs-2.6 git tree

Steve French smfrench at gmail.com
Fri Nov 21 21:02:56 GMT 2008


thx ... the only other thing I noticed was that the original patch removed

2067         if ((offset >= i_size) ||
2068             ((from == 0) && (offset + to) >= i_size)) {
2069                 /*
2070                  * We don't need to read data beyond the end of the file.
2071                  * zero it, and set the page uptodate
2072                  */
2073                 simple_prepare_write(file, page, from, to);
2074                 SetPageUptodate(page);

which means we do a lot of extra reads (which return no bytes) when we
write near or at end of file



On Fri, Nov 21, 2008 at 2:41 PM, Dave Kleikamp
<shaggy at linux.vnet.ibm.com> wrote:
> On Fri, 2008-11-21 at 14:38 -0600, Steve French wrote:
>> Fix attached.
>>
>> Shaggy/Jeff/Nick etc. do you want to review/ack it since it is late in the rc?
>
> Acked-by: Dave Kleikamp <shaggy at linux.vnet.ibm.com>
>
>>
>> On Fri, Nov 21, 2008 at 2:18 PM, Steve French <smfrench at gmail.com> wrote:
>> > Looks like the following change to cifs_write_begin does fix it ...
>> > thanks Shaggy ...
>> >
>> > @@ -2062,8 +2074,10 @@ static int cifs_write_begin(struct file *file,
>> > struct address_space *mapping,
>> >  {
>> >        pgoff_t index = pos >> PAGE_CACHE_SHIFT;
>> >        loff_t offset = pos & (PAGE_CACHE_SIZE - 1);
>> > +       loff_t page_start = pos & PAGE_MASK;
>> >
>> >       cFYI(1, ("write_begin from %lld len %d", (long long)pos, len));
>> > @@ -2081,13 +2095,14 @@ static int cifs_write_begin(struct file *file,
>> > struct address_space *mapping,
>> >                int rc;
>> >
>> >                /* might as well read a page, it is fast enough */
>> > -               rc = cifs_readpage_worker(file, *pagep, &offset);
>> > +               rc = cifs_readpage_worker(file, *pagep, &page_start);
>> >
>> >                /* we do not need to pass errors back
>> >                   e.g. if we do not have read access to the file
>> >                   because cifs_write_end will attempt synchronous writes
>> >                   -- shaggy */
>> >
>> >
>
> --
> David Kleikamp
> IBM Linux Technology Center
>
>



-- 
Thanks,

Steve


More information about the linux-cifs-client mailing list