Re: [PATCH 2/3] afs: Fix afs_write_end() to handle short writes

From: Matthew Wilcox
Date: Mon Jun 14 2021 - 11:43:35 EST


On Mon, Jun 14, 2021 at 04:38:21PM +0100, David Howells wrote:
> Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> > > - ASSERT(PageUptodate(page));
> > > -
> > > if (PagePrivate(page)) {
> > > priv = page_private(page);
> > > f = afs_page_dirty_from(page, priv);
> >
> > Why are you removing this assertion? Does AFS now support dirty,
> > partially-uptodate pages? If so, a subsequent read() to that
> > page is going to need to be careful to only read the parts of the page
> > from the server that haven't been written ...
>
> Because the previous hunk in the patch:
>
> + if (!PageUptodate(page)) {
> + if (copied < len) {
> + copied = 0;
> + goto out;
> + }
> +
> + SetPageUptodate(page);
> + }
>
> means you can't get there unless PageUptodate() is true by that point.

Isn't the point of an assertion to check that this is true?