On Thu, 28 Oct 2010 08:17:54 -0400 Steve Dickson <steved@xxxxxxxxxx> wrote: > A typo, introduced by commit f11ac8db, in the nfs_direct_write() > routine causes writes with O_DIRECT set to fail with a ENOMEM error. > > Found-by: Jeff Layton <jlayton@xxxxxxxxxx> > Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> > --- > fs/nfs/direct.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c > index 064a809..84d3c8b 100644 > --- a/fs/nfs/direct.c > +++ b/fs/nfs/direct.c > @@ -873,7 +873,7 @@ static ssize_t nfs_direct_write(struct kiocb *iocb, const struct iovec *iov, > dreq->inode = inode; > dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp)); > dreq->l_ctx = nfs_get_lock_context(dreq->ctx); > - if (dreq->l_ctx != NULL) > + if (dreq->l_ctx == NULL) > goto out_release; > if (!is_sync_kiocb(iocb)) > dreq->iocb = iocb; Also, since get_lock_context holds references, this prevents the fs from being unmounted. It looks like this bug is in 2.6.36 too, so this may be suitable for stable series as well. -- Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html