Re: [PATCH 1/2] Read /etc/exports.d/*.export as extra export files

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

 



On Fri, 04 Mar 2011 11:21:54 -0500, Steve Dickson <SteveD@xxxxxxxxxx> wrote
> 
> 
> On 03/04/2011 01:10 AM, Masatake YAMATO wrote:
>> Hi,
>> 
>> thank you for replying.
> Again.. my apologies for taking so long... 
> 
>> 
>>> On 03/03/2011 09:01 AM, Masatake YAMATO wrote:
>>>> No comment?
>>> Sorry about that... I was traveling for the couple weeks... 
>>>
>>> Would you happen to have an example script on how 
>>> this new feature would be used? I just want to run 
>>> some quick tests...
>>>
>>> tia,
>>>
>>> steved.
>> 
>> Could you try following one?
>> 
>> # cd /tmp
>> # mkdir /tmp/alpha
>> # mkdir /tmp/beta
>> # mkdir /etc/exports.d
>> # mkdir /etc/exports.d
>> # echo '/tmp/alpha *(ro)' > /etc/exports.d/alpha.export
>> # echo '/tmp/beta *(ro)'  > /etc/exports.d/beta.export
>> # /etc/init.d nfs restart
>> 
>> After above setting up, when you do `exportfs', following lines 
>> may be included in the output:
>> 
>>     /tmp/alpha	 <world>
>>     /tmp/beta        <world>
> Question... Where is the race? Meaning who is reading the exports
> file while its being modified?

Sorry, I don't understand well. Are you talking about race condition
introduced with my patch?

> The reason I ask is exporting (or re-exporting) pretty serial:
> 
> exportfs read /etc/exports
> exportfs writes the new exports to /var/lib/nfs/etab
> mountd notices etab has changed and rereads its.
> mountd flush the kernel cache cause the kernel to do upcalls to get the new exports.

With my patch doesn't change match this sequence:

(S1) exportfs read /etc/exports
(S2) exportfs read /etc/exports.d/*.export 
(S3) exportfs writes the new exports to /var/lib/nfs/etab
(S4) mountd notices etab has changed and rereads its.
(S5) mountd flush the kernel cache cause the kernel to do upcalls to get the new exports.

I've added (Sn) to make discussion easier. I've just added S2 stage.
 
> So since exportfs command not a daemon I don't see why 
>    cp exports.new /etc/exports && exportfs -arv
> 
> isn't all that is needed.  What am I missing?

Consider the case when an user wants to add following entry to /etc/exports:

	 '/tmp/alpha *(ro)'

How one will do? Without my patch I image following sequence (sequence 1).

    cp /etc/exports exports.new
    echo '/tmp/alpha *(ro)' >> exports.new
    cp exports.new /etc/exports && exportfs -arv    

With my patch this sequence becomes simplified as (sequence 1'):

     echo '/tmp/alpha *(ro)' > /etc/exports.d/alpha.export
     exportfs -arv    

When duplicated entries must be considered the sequence 1 may become
more complex.


Next, consider removing the export entry from /etc/exports.
Without my patch I image following sequence (sequence 2).

    cp /etc/exports exports.old
    grep -v '/tmp/alpha *(ro)' < exports.old > /etc/exports
    exportfs -arv        

With my patch this sequence becomes simplified as (sequence 2'):
    rm /etc/exports.d/alpha.export
    exportfs -arv 



More background I'm thinking expanding the area of utilizing rpm package
in system management. Consider installing an export entry to a system
via rpm package. Without my patch you have to write down sequence 1
to %post and sequence 2 to %postun of the spec file. With my patch
you have to just put /etc/exports.d/alpha.export to %files section.

This story of rpm is just my application. However, I thik my patch may be
useful for other purposes. 


Masatake YAMATO

> steved.
> 
> 
>    
> --
> 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
--
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