Commit ad8034f1 authored by Steve French's avatar Steve French

[CIFS] remove bkl usage from umount begin

The lock_kernel call moved into the fs for umount_begin
is not needed.  This adds a check to make sure we don't
call umount_begin twice on the same fs.

umount_begin for cifs is probably not needed and
may eventually be able to be removed, but in
the meantime this smaller patch is safe and
gets rid of the bkl from this path which provides
some benefit.

Acked-by: Jeff Layton <redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 0f3bc09e
...@@ -537,9 +537,14 @@ static void cifs_umount_begin(struct super_block *sb) ...@@ -537,9 +537,14 @@ static void cifs_umount_begin(struct super_block *sb)
if (tcon == NULL) if (tcon == NULL)
return; return;
lock_kernel();
read_lock(&cifs_tcp_ses_lock); read_lock(&cifs_tcp_ses_lock);
if (tcon->tc_count == 1) if ((tcon->tc_count > 1) || (tcon->tidStatus == CifsExiting)) {
/* we have other mounts to same share or we have
already tried to force umount this and woken up
all waiting network requests, nothing to do */
read_unlock(&cifs_tcp_ses_lock);
return;
} else if (tcon->tc_count == 1)
tcon->tidStatus = CifsExiting; tcon->tidStatus = CifsExiting;
read_unlock(&cifs_tcp_ses_lock); read_unlock(&cifs_tcp_ses_lock);
...@@ -554,9 +559,7 @@ static void cifs_umount_begin(struct super_block *sb) ...@@ -554,9 +559,7 @@ static void cifs_umount_begin(struct super_block *sb)
wake_up_all(&tcon->ses->server->response_q); wake_up_all(&tcon->ses->server->response_q);
msleep(1); msleep(1);
} }
/* BB FIXME - finish add checks for tidStatus BB */
unlock_kernel();
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment