Re: [PATCH] RFC: export options for junctions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 21, 2012 at 05:35:17PM -0400, Chuck Lever wrote:
> 
> On Mar 21, 2012, at 5:29 PM, J. Bruce Fields wrote:
> 
> > On Wed, Mar 21, 2012 at 05:11:40PM -0400, Chuck Lever wrote:
> >>  1.  We have to create a version of lookup_export() that does exactly what's needed to find the junction's parent.
> >> 
> >>  2.  Once we find the parent's exportent, we have to reverse parse the data in that exportent to get an options string, and concatenate that to the options string we're building for the junction itself.
> >> 
> >>  3.  Once we have the full options string for the junction, we use mkexportent() to convert it all back into another exportent.  (or is there a simple way to merge the exportents?)

You should be able to skip steps 2 and 3 and use dupexportent.

Does that sound doable?

--b.

> >> 
> >>  4.  Then, we send the referral data to the kernel by converting that exportent back into a string with dump_to_cache().
> >> 
> >> For the time being, though a kludge, it seems easiest by far to simply stick the "insecure" option on all junctions.  I don't think this is otherwise terribly risky.
> >> 
> >> Maybe at some later point we can think of a cleaner way to approach this?  Is there a possible kernel solution for this (ie something that can be done in the kernel's export cache only for referrals)?
> >> 
> >>> --b.
> >>> 
> >>>> 
> >>>> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> >>>> ---
> >>>> 
> >>>> utils/mountd/cache.c |    2 +-
> >>>> 1 files changed, 1 insertions(+), 1 deletions(-)
> >>>> 
> >>>> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
> >>>> index ac9cdbd..35bc2e9 100644
> >>>> --- a/utils/mountd/cache.c
> >>>> +++ b/utils/mountd/cache.c
> >>>> @@ -853,7 +853,7 @@ locations_to_options(struct jp_ops *ops, nfs_fsloc_set_t locations,
> >>>> 			ptr += len;
> >>>> 		} else {
> >>>> 			if (last_path == NULL)
> >>>> -				len = snprintf(ptr, remaining, "refer=%s@%s",
> >>>> +				len = snprintf(ptr, remaining, "insecure,refer=%s@%s",
> >>>> 							rootpath, server);
> >>>> 			else
> >>>> 				len = snprintf(ptr, remaining, ":%s@%s",
> >>>> 
> >>> --
> >>> 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
> >> 
> >> -- 
> >> Chuck Lever
> >> chuck[dot]lever[at]oracle[dot]com
> >> 
> >> 
> >> 
> >> 
> > --
> > 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
> 
> -- 
> Chuck Lever
> chuck[dot]lever[at]oracle[dot]com
> 
> 
> 
> 
--
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


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux