Re: [NFS] [PATCH] mmap corruption

Trond Myklebust (trond.myklebust@fys.uio.no)
Sun, 6 Apr 2003 14:30:09 +0200


>>>>> " " == Steve Dickson <SteveD@RedHat.com> writes:

> filemap_fdatasync(inode->i_mapping);
> error = nfs_wb_all(inode);
> filemap_fdatawait(inode->i_mapping);
> if (error)
> goto out;

> /*
> * Every time either npages or ncommit had a value and the file
> size is
> * immediately changed (with in a microsecond or two) by another
> * truncation, followed by a mmap read, the file would be
> corrupted.
> */
> if (NFS_I(inode)->npages || NFS_I(inode)->ncommit ||
> NFS_I(inode)->ndirty) {
> printk("nfs_notify_change: fid %Ld npages %d ncommit
> %d ndirty %d\n", NFS_FILEID(inode),
> NFS_I(inode)->npages, ncommit, NFS_I(inode)->ndirty);
> }
> }

My point is that nfs_wb_all() is supposed to ensure that
NFS_I(inode)->ncommit, and/or NFS_I(inode)->ndirty are both
zero. i.e. you can have pending reads (in which case
NFS_I(inode)->npages != 0), but *no* pending writes.

Was this the case?

Cheers,
Trond
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/