[pnfs] Issues implementing LAYOUTRETURN
William A.(Andy) Adamson
andros at citi.umich.edu
Thu Jul 13 11:47:04 EDT 2006
> The code is definitely set up to support layout caching at the layout
> driver layer. Moving away from this will be a big change to the
> pnfs<->layout driver interface. From what I remember, we don't just
> support whole file layouts, but our support of layout extents is quasi
> at best (or incomplete).
>
> Without a layout driver which will help us do layout extents properly,
i am implmenting a block layout driver against an EMC simulator. i expect to
have GETDEVICELIST, GETDEVICEINFO and LAYOUTGET done by months end. so, we
will soon have a driver which deals in extents, and can consider a unified
generic layout cache.
i think it's ok to proceed with the whole file assumption as it is the simple
case, and add complexity as we gain experience.
-->Andy
> as it is really hard to guess the needs of something we don't have,
> maybe we should just continue with our assumption of whole file
> layouts. The unmentioned option 0. We can really worry about layout
> extents and a interface re-organization once the block driver and/or
> object driver starts setting design requirements. Anything we do now
> will just be a guess (e.g., setup_layoutcommit) I'm not against a
> setup_layoutreturn though if people think it has practical use with our
> current layout drivers.
>
> Dean
>
> Benny Halevy wrote:
> > Initially, the thinking was to implement a layout cache at the layout
> > driver layer
> > but I think there are advantages to having a unified, generic layout
> > cache,
> > in particular to scheduling the layout recall process in which possibly
> > several layout segments will have to be returned while the returns
> > need to be serialized with in-flight layout operations.
> > Keep in mind that object based layouts need to be treated a differently
> > than files and blocks as explained in draft-ietf-nfsv4-pnfs-obj-01.txt
> > since each layout segment is immutable and can't be split or merge
> > with neighboring segments (extents).
> >
> > In summary, any design decision we make should take into account the
> > layout
> > recall process...
> >
> > Benny
> >
> > Iyer, Rahul wrote:
> >
> >> Hi!
> >> Currently, even though the LAYOUTRETURN RPC is implemented, it is not
> >> called anywhere. I was planning to add code to make these calls to the
> >> code. However, I'm faced with a problem.
> >> The arguments for the LAYOUTRETURN call are as defined below:
> >> struct nfs4_pnfs_layoutreturn_arg {
> >> __u64 clientid;
> >> __u64 offset;
> >> __u64 length;
> >> __u32 iomode;
> >> __u32 reclaim;
> >> __u32 type;
> >> struct inode* inode;
> >> };
> >>
> >> Unfortunately, from all the places LAYOUTRETURN needs to be called, all
> >> we have is the inode. So, all we can get is the struct pnfs_layout_type.
> >> Since the offset, length and iomode are parts of the opaque layout,
> >> there's no way for a client can fill in these arguments. There is a
> >> function pnfs_return_layout() which calls LAYOUTRETURN. It hardcodes the
> >> iomode to write and the offset and length respectively to 0 and
> >> 0xffffffff (this is probably more correctly expressed as ~0, since
> >> length is __u64, not __u32), but this will obviously not work with
> >> extents.
> >> In order to solve this issue, there could be two possible schemes:
> >> 1. Add a call similar to setup_layoutcommit to the layoutdriver ops.
> >> 2. Move the offset, length and iomode fields from the opaque layout into
> >> to the generic layout (struct pnfs_layout_type).
> >> While both will work, approach 1 will still pose a problem later on.
> >> Currently, the code seems to assume whole file layouts. However, if we
> >> do move to an extent based layout scheme in future, then we would be
> >> faced with a dilemma on how to maintain the layout cache. The current
> >> nfs_inode->current_layout will have to be replaced with a list of
> >> layouts available for the inode (file) and this will mostly be indexed
> >> by the (offset, length and iomode) fields, which are currently not
> >> available. The alternative, of course, would be to have the layout
> >> driver handle cache management, in which case approach 1 will do fine.
> >> I was wondering what people thought on this issue.
> >> Thanks
> >> Rahul
> >> _______________________________________________
> >> pNFS mailing list
> >> pNFS at linux-nfs.org
> >> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
> >>
> >>
> >
> >
> > _______________________________________________
> > pNFS mailing list
> > pNFS at linux-nfs.org
> > http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>
> --
> Dean Hildebrand
> Ph.D. Candidate
> University of Michigan
>
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
More information about the pNFS
mailing list