diff mbox

nfs-util: Add cache_flush in mountd UMNT procedure.

Message ID 1341717459-7297-1-git-send-email-linkinjeon@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Namjae Jeon July 8, 2012, 3:17 a.m. UTC
For removing storage device - user needs to safely un-mount the device
and then eject. But if 'EBUSY' occurs in umount then it will create
confusion for the user as it will mean some I/O is in progress - and
won't allow user to safely ejecting device.

1. Without this patch:

On NFS Client:
$ mount.nfs <NFS_SERVER>:/mnt /mnt
$ umount.nfs /mnt

On NFS Server:
$ umount /mnt
umount: can't umount /mnt: Device or resource busy

2. With this patch:

On NFS Client:
$ mount.nfs <NFS_SERVER>:/mnt /mnt
$ umount.nfs /mnt

On NFS Server:
$ umount.nfs /mnt --> umount successful

Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
Signed-off-by: Vivek Trivedi <vtrivedi018@gmail.com>
---
 utils/mountd/mountd.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

J. Bruce Fields July 10, 2012, 2:59 p.m. UTC | #1
On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
> For removing storage device - user needs to safely un-mount the device
> and then eject. But if 'EBUSY' occurs in umount then it will create
> confusion for the user as it will mean some I/O is in progress - and
> won't allow user to safely ejecting device.

The one drawback is that recovering from the cache flushes might be a
little expensive if you have a lot of exports in use.

I'm curious, since you said this was for a usb disk: are users expected
to just unplug it (in which case--is it read only?) or do they have some
way of unmounting before they pull the plug?

--b.

> 
> 1. Without this patch:
> 
> On NFS Client:
> $ mount.nfs <NFS_SERVER>:/mnt /mnt
> $ umount.nfs /mnt
> 
> On NFS Server:
> $ umount /mnt
> umount: can't umount /mnt: Device or resource busy
> 
> 2. With this patch:
> 
> On NFS Client:
> $ mount.nfs <NFS_SERVER>:/mnt /mnt
> $ umount.nfs /mnt
> 
> On NFS Server:
> $ umount.nfs /mnt --> umount successful
> 
> Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
> Signed-off-by: Vivek Trivedi <vtrivedi018@gmail.com>
> ---
>  utils/mountd/mountd.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
> index bcf5080..2b190fb 100644
> --- a/utils/mountd/mountd.c
> +++ b/utils/mountd/mountd.c
> @@ -275,6 +275,7 @@ mount_umnt_1_svc(struct svc_req *rqstp, dirpath *argp, void *UNUSED(resp))
>  		return 1;
>  
>  	mountlist_del(host_ntop(sap, buf, sizeof(buf)), p);
> +	cache_flush(1);
>  	return 1;
>  }
>  
> @@ -292,6 +293,7 @@ mount_umntall_1_svc(struct svc_req *rqstp, void *UNUSED(argp),
>  	auth_reload();
>  
>  	mountlist_del_all(nfs_getrpccaller(rqstp->rq_xprt));
> +	cache_flush(1);
>  	return 1;
>  }
>  
> -- 
> 1.7.9.5
> 
--
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
Namjae Jeon July 11, 2012, 4:10 a.m. UTC | #2
2012/7/10, J. Bruce Fields <bfields@fieldses.org>:
> On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
>> For removing storage device - user needs to safely un-mount the device
>> and then eject. But if 'EBUSY' occurs in umount then it will create
>> confusion for the user as it will mean some I/O is in progress - and
>> won't allow user to safely ejecting device.
>
Hi James.
> The one drawback is that recovering from the cache flushes might be a
> little expensive if you have a lot of exports in use.
Good point. I will look for more there is the method flush only mount entry.
>
> I'm curious, since you said this was for a usb disk: are users expected
> to just unplug it (in which case--is it read only?) or do they have some
> way of unmounting before they pull the plug?
Users expected to unplug it on both read only and read/write.
And there is no way that system be prepared to know about the
intelligence when the user is going to unplug.
if the user really want to detach the device safely. There is an
option like the desktop PC - where, we can say - umount/eject the
device. There is a proper user interface for safe removal.
but they can not unplug safely if usb device is mounted with nfs
because of this issue.
>
> --b.
>
--
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
J. Bruce Fields July 11, 2012, 2:09 p.m. UTC | #3
On Wed, Jul 11, 2012 at 01:10:53PM +0900, Namjae Jeon wrote:
> 2012/7/10, J. Bruce Fields <bfields@fieldses.org>:
> > On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
> >> For removing storage device - user needs to safely un-mount the device
> >> and then eject. But if 'EBUSY' occurs in umount then it will create
> >> confusion for the user as it will mean some I/O is in progress - and
> >> won't allow user to safely ejecting device.
> >
> Hi James.
> > The one drawback is that recovering from the cache flushes might be a
> > little expensive if you have a lot of exports in use.
> Good point. I will look for more there is the method flush only mount entry.

I don't think there's a good way to flush only one entry.

Also, this isn't going to help for NFSv4 since a v4 client won't do an
unmount call.

> > I'm curious, since you said this was for a usb disk: are users expected
> > to just unplug it (in which case--is it read only?) or do they have some
> > way of unmounting before they pull the plug?
> Users expected to unplug it on both read only and read/write.
> And there is no way that system be prepared to know about the
> intelligence when the user is going to unplug.
> if the user really want to detach the device safely. There is an
> option like the desktop PC - where, we can say - umount/eject the
> device. There is a proper user interface for safe removal.
> but they can not unplug safely if usb device is mounted with nfs
> because of this issue.

Ideal might be to get some way to notify nfsd when the device
diseappears or the filesystem wants to unmount.  I don't know how to do
that.

--b.
--
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
Namjae Jeon July 11, 2012, 10:38 p.m. UTC | #4
2012/7/11, J. Bruce Fields <bfields@fieldses.org>:
> On Wed, Jul 11, 2012 at 01:10:53PM +0900, Namjae Jeon wrote:
>> 2012/7/10, J. Bruce Fields <bfields@fieldses.org>:
>> > On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
>> >> For removing storage device - user needs to safely un-mount the device
>> >> and then eject. But if 'EBUSY' occurs in umount then it will create
>> >> confusion for the user as it will mean some I/O is in progress - and
>> >> won't allow user to safely ejecting device.
>> >
>> Hi James.
>> > The one drawback is that recovering from the cache flushes might be a
>> > little expensive if you have a lot of exports in use.
>> Good point. I will look for more there is the method flush only mount
>> entry.
>
> I don't think there's a good way to flush only one entry.
>
> Also, this isn't going to help for NFSv4 since a v4 client won't do an
> unmount call.
Okay.
>
>> > I'm curious, since you said this was for a usb disk: are users expected
>> > to just unplug it (in which case--is it read only?) or do they have
>> > some
>> > way of unmounting before they pull the plug?
>> Users expected to unplug it on both read only and read/write.
>> And there is no way that system be prepared to know about the
>> intelligence when the user is going to unplug.
>> if the user really want to detach the device safely. There is an
>> option like the desktop PC - where, we can say - umount/eject the
>> device. There is a proper user interface for safe removal.
>> but they can not unplug safely if usb device is mounted with nfs
>> because of this issue.
>
> Ideal might be to get some way to notify nfsd when the device
> diseappears or the filesystem wants to unmount.  I don't know how to do
> that.
Okay. I will look for good solution for this issue.
Thanks.
>
> --b.
>
--
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
Namjae Jeon July 11, 2012, 10:43 p.m. UTC | #5
2012/7/12, Namjae Jeon <linkinjeon@gmail.com>:
> 2012/7/11, J. Bruce Fields <bfields@fieldses.org>:
>> On Wed, Jul 11, 2012 at 01:10:53PM +0900, Namjae Jeon wrote:
>>> 2012/7/10, J. Bruce Fields <bfields@fieldses.org>:
>>> > On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
>>> >> For removing storage device - user needs to safely un-mount the
>>> >> device
>>> >> and then eject. But if 'EBUSY' occurs in umount then it will create
>>> >> confusion for the user as it will mean some I/O is in progress - and
>>> >> won't allow user to safely ejecting device.
>>> >
>>> Hi James.
>>> > The one drawback is that recovering from the cache flushes might be a
>>> > little expensive if you have a lot of exports in use.
>>> Good point. I will look for more there is the method flush only mount
>>> entry.
>>
>> I don't think there's a good way to flush only one entry.
>>
>> Also, this isn't going to help for NFSv4 since a v4 client won't do an
>> unmount call.
> Okay.
>>
>>> > I'm curious, since you said this was for a usb disk: are users
>>> > expected
>>> > to just unplug it (in which case--is it read only?) or do they have
>>> > some
>>> > way of unmounting before they pull the plug?
>>> Users expected to unplug it on both read only and read/write.
>>> And there is no way that system be prepared to know about the
>>> intelligence when the user is going to unplug.
>>> if the user really want to detach the device safely. There is an
>>> option like the desktop PC - where, we can say - umount/eject the
>>> device. There is a proper user interface for safe removal.
>>> but they can not unplug safely if usb device is mounted with nfs
>>> because of this issue.
>>
>> Ideal might be to get some way to notify nfsd when the device
>> diseappears or the filesystem wants to unmount.  I don't know how to do
>> that.
> Okay. I will look for good solution for this issue.
> Thanks.
Hi James.
I have a question.
If we found the method to notify nfs when unplugging device, Can nfsd
flush only entry of usb mount ?

Thanks.

>>
>> --b.
>>
>
--
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
J. Bruce Fields July 24, 2012, 4:24 p.m. UTC | #6
On Thu, Jul 12, 2012 at 07:43:49AM +0900, Namjae Jeon wrote:
> 2012/7/12, Namjae Jeon <linkinjeon@gmail.com>:
> > 2012/7/11, J. Bruce Fields <bfields@fieldses.org>:
> >> On Wed, Jul 11, 2012 at 01:10:53PM +0900, Namjae Jeon wrote:
> >>> 2012/7/10, J. Bruce Fields <bfields@fieldses.org>:
> >>> > On Sat, Jul 07, 2012 at 11:17:39PM -0400, Namjae Jeon wrote:
> >>> >> For removing storage device - user needs to safely un-mount the
> >>> >> device
> >>> >> and then eject. But if 'EBUSY' occurs in umount then it will create
> >>> >> confusion for the user as it will mean some I/O is in progress - and
> >>> >> won't allow user to safely ejecting device.
> >>> >
> >>> Hi James.
> >>> > The one drawback is that recovering from the cache flushes might be a
> >>> > little expensive if you have a lot of exports in use.
> >>> Good point. I will look for more there is the method flush only mount
> >>> entry.
> >>
> >> I don't think there's a good way to flush only one entry.
> >>
> >> Also, this isn't going to help for NFSv4 since a v4 client won't do an
> >> unmount call.
> > Okay.
> >>
> >>> > I'm curious, since you said this was for a usb disk: are users
> >>> > expected
> >>> > to just unplug it (in which case--is it read only?) or do they have
> >>> > some
> >>> > way of unmounting before they pull the plug?
> >>> Users expected to unplug it on both read only and read/write.
> >>> And there is no way that system be prepared to know about the
> >>> intelligence when the user is going to unplug.
> >>> if the user really want to detach the device safely. There is an
> >>> option like the desktop PC - where, we can say - umount/eject the
> >>> device. There is a proper user interface for safe removal.
> >>> but they can not unplug safely if usb device is mounted with nfs
> >>> because of this issue.
> >>
> >> Ideal might be to get some way to notify nfsd when the device
> >> diseappears or the filesystem wants to unmount.  I don't know how to do
> >> that.
> > Okay. I will look for good solution for this issue.
> > Thanks.
> Hi James.
> I have a question.
> If we found the method to notify nfs when unplugging device,

What's that?

> Can nfsd
> flush only entry of usb mount ?

Hm, I don't think there's anything that does that now.  But I think if
you look it up and set the cache item's expiry_time to the current unix
time in seconds, that'd be at least a start.

Come to think of it you should actually be able to do that from
userspace if you want: just write a negative cache entry for that
export.

However you do this there may still be some brief delay while some
thread finishes processing an rpc using the entry; I don't know what to
do about that.  It's unlikely in your case (where clients have unmounted
first).

--b.
--
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
Namjae Jeon July 28, 2012, 4:52 a.m. UTC | #7
>> Hi James.
>> I have a question.
>> If we found the method to notify nfs when unplugging device,
>
Hi James.
> What's that?
I need to check more...

>
>> Can nfsd
>> flush only entry of usb mount ?
>
> Hm, I don't think there's anything that does that now.  But I think if
> you look it up and set the cache item's expiry_time to the current unix
> time in seconds, that'd be at least a start.
>
> Come to think of it you should actually be able to do that from
> userspace if you want: just write a negative cache entry for that
> export.
>
> However you do this there may still be some brief delay while some
> thread finishes processing an rpc using the entry; I don't know what to
> do about that.  It's unlikely in your case (where clients have unmounted
> first).
Okay, I will look for more.
Thanks for your reply.
>
> --b.
>
--
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
diff mbox

Patch

diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index bcf5080..2b190fb 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -275,6 +275,7 @@  mount_umnt_1_svc(struct svc_req *rqstp, dirpath *argp, void *UNUSED(resp))
 		return 1;
 
 	mountlist_del(host_ntop(sap, buf, sizeof(buf)), p);
+	cache_flush(1);
 	return 1;
 }
 
@@ -292,6 +293,7 @@  mount_umntall_1_svc(struct svc_req *rqstp, void *UNUSED(argp),
 	auth_reload();
 
 	mountlist_del_all(nfs_getrpccaller(rqstp->rq_xprt));
+	cache_flush(1);
 	return 1;
 }