Message ID | 1344390577-1602-2-git-send-email-bergwolf@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/07/2012 09:49 PM, Peng Tao wrote: > After commit e38eb650 (NFS: set_pnfs_layoutdriver() from > nfs4_proc_fsinfo()), set_pnfs_layoutdriver() is called inside > nfs4_proc_fsinfo(), but pnfs_blksize is not set. It causes setting > blocklayoutdriver failure and pnfsblock mount failure. > > Cc: Bryan Schumaker <bjschuma@netapp.com> > Signed-off-by: Peng Tao <bergwolf@gmail.com> > --- > fs/nfs/nfs4proc.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index 78b2163..299c311 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -3362,8 +3362,11 @@ static int nfs4_proc_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, s > > nfs_fattr_init(fsinfo->fattr); > error = nfs4_do_fsinfo(server, fhandle, fsinfo); > - if (error == 0) > + if (error == 0) { > + /* block layout checks this! */ > + server->pnfs_blksize = fsinfo->blksize; fs/nfs/client.c:nfs_server_set_fsinfo() also sets this field, so I'm surprised there was a problem. You should remove the same line from nfs_server_set_fsinfo() if you're going to set it here. - Bryan > set_pnfs_layoutdriver(server, fhandle, fsinfo->layouttype); > + } > > return error; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Aug 8, 2012 at 8:49 PM, Bryan Schumaker <bjschuma@netapp.com> wrote: > On 08/07/2012 09:49 PM, Peng Tao wrote: >> After commit e38eb650 (NFS: set_pnfs_layoutdriver() from >> nfs4_proc_fsinfo()), set_pnfs_layoutdriver() is called inside >> nfs4_proc_fsinfo(), but pnfs_blksize is not set. It causes setting >> blocklayoutdriver failure and pnfsblock mount failure. >> >> Cc: Bryan Schumaker <bjschuma@netapp.com> >> Signed-off-by: Peng Tao <bergwolf@gmail.com> >> --- >> fs/nfs/nfs4proc.c | 5 ++++- >> 1 files changed, 4 insertions(+), 1 deletions(-) >> >> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c >> index 78b2163..299c311 100644 >> --- a/fs/nfs/nfs4proc.c >> +++ b/fs/nfs/nfs4proc.c >> @@ -3362,8 +3362,11 @@ static int nfs4_proc_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, s >> >> nfs_fattr_init(fsinfo->fattr); >> error = nfs4_do_fsinfo(server, fhandle, fsinfo); >> - if (error == 0) >> + if (error == 0) { >> + /* block layout checks this! */ >> + server->pnfs_blksize = fsinfo->blksize; > > fs/nfs/client.c:nfs_server_set_fsinfo() also sets this field, so I'm surprised there was a problem. You should remove the same line from nfs_server_set_fsinfo() if you're going to set it here. Before commit e38eb650, nfs_server_set_fsinfo() is called before setting layoutdriver. And now it is called after. And block layout driver checks pnfs_blksize so it gets broken. I will remove the line in nfs_server_set_fsinfo() and resend the patch.
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 78b2163..299c311 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -3362,8 +3362,11 @@ static int nfs4_proc_fsinfo(struct nfs_server *server, struct nfs_fh *fhandle, s nfs_fattr_init(fsinfo->fattr); error = nfs4_do_fsinfo(server, fhandle, fsinfo); - if (error == 0) + if (error == 0) { + /* block layout checks this! */ + server->pnfs_blksize = fsinfo->blksize; set_pnfs_layoutdriver(server, fhandle, fsinfo->layouttype); + } return error; }
After commit e38eb650 (NFS: set_pnfs_layoutdriver() from nfs4_proc_fsinfo()), set_pnfs_layoutdriver() is called inside nfs4_proc_fsinfo(), but pnfs_blksize is not set. It causes setting blocklayoutdriver failure and pnfsblock mount failure. Cc: Bryan Schumaker <bjschuma@netapp.com> Signed-off-by: Peng Tao <bergwolf@gmail.com> --- fs/nfs/nfs4proc.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)