All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Steve French (smfltc)" <smfltc@us.ibm.com>
To: miklos@szeredi.hu
Cc: Dave Kleikamp <shaggy@linux.vnet.ibm.com>,
	akpm@linux-foundation.org, linux-fsdevel@vger.kernel.org,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [Fwd: [PATCH] consolidate generic_writepages and mpage_writepages]
Date: Fri, 16 Feb 2007 17:15:39 -0600	[thread overview]
Message-ID: <45D63B1B.4000503@us.ibm.com> (raw)
In-Reply-To: <1171647615.8468.14.camel@kleikamp.austin.ibm.com>


>From: Miklos Szeredi <miklos@szeredi.hu>
>To: akpm@linux-foundation.org
>Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
>Subject: [PATCH] consolidate generic_writepages and mpage_writepages
>Date: 	Fri, 16 Feb 2007 17:23:25 +0100
>
>From: Miklos Szeredi <mszeredi@suse.cz>
>
>Clean up massive code duplication between mpage_writepages() and
>generic_writepages().
>
>The new generic function, write_cache_pages() takes a function pointer
>argument, which will be called for each page to be written.
>
>Maybe cifs_writepages() too can use this infrastructure, but I'm not
>touching that with a ten-foot pole.
>  
>
The cifs case ought to be one of the simpler ones, pseudo-code is pretty 
easy, the hard part is all of the stuff unrelated to cifs:
Ideally if there were generic functions to help out, cifs writepages 
would look roughly like the following

cifs_writepages(struct address_space *mapping, struct writeback_control 
*wbc)
{
   
    while (no more pages to write) {
        /* find writeable file handle for this inode */
        /* find the biggest set of contiguous pages that total less than 
wsize */
        if (packet signing is enabled)
                /* write lock pages so they can not be changed under us 
while we are calculating the checksum */
      
       CIFSSMBWrite2(tree_connection, network_file_handle, array of 
iovecs, number of iovecs);

        if(packet signing was enabled)
                /* unlock pages */

        if(error) {
             set page errors
             if (mounted "hard" )
                   continue; /* retry */
             else /* if no retry possible */
                   return error to caller;
       }
        update bytes written statistics
        update index to point to next set of pages
    }  /* end while loop */
}


If it were even better, CIFSSMBWrite2 could be called async - so that it 
did not have to wait for a network response from Samba (just an ack from 
TCP), before issuing the next write onto the wire - but this would 
require that we could queue a pointer to a completion routine to the mpx 
entry.

       reply	other threads:[~2007-02-16 23:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1171647615.8468.14.camel@kleikamp.austin.ibm.com>
2007-02-16 23:15 ` Steve French (smfltc) [this message]
2007-02-17 10:04   ` [Fwd: [PATCH] consolidate generic_writepages and mpage_writepages] Miklos Szeredi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45D63B1B.4000503@us.ibm.com \
    --to=smfltc@us.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=shaggy@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.