Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Xubuntu Development (http://www.linux-archive.org/xubuntu-development/)
-   -   Slow Shutdown when Network Mgr closes before CIFS unmounted (http://www.linux-archive.org/xubuntu-development/310036-slow-shutdown-when-network-mgr-closes-before-cifs-unmounted.html)

David Collins 01-15-2010 10:44 PM

Slow Shutdown when Network Mgr closes before CIFS unmounted
 
Hello,

I am working on a fairly well-known ongoing problem where you have a slow logoff if connected wirelessly to a Samba share.
You get the message 'CIFS VFS: No response ...' and it takes about 2 minutes for the laptop to shutdown.

Apparently it happens because Network Manager closes down before the CIFS mounts are unmounted.

It will probably be some time before this gets fixed at the root cause but there is a good work-around for Gnome.
It entails running a process in the Gnome session that waits for the 'save-yourself' event (see below).


Is there a similar closing-down event that can be hooked into with an XFCE session ?
Would anyone be able to supply the few lines of code required in main() below ?
I could then test and, if successful, post the solution back into the Ubuntu forums article below.*


#!/usr/bin/env python

#Author: Seamus Phelan
# http://ubuntuforums.org/showthread.php?p=8451352#post8451352

#This program runs a custom command/script just before gnome shuts

#down.* This is done the same way that gedit does it (listening for
#the 'save-yourself' event).* This is different to placing scipts
#in /etc/rc#.d/ as the script will be run before gnome exits.
#If the custom script/command fails with a non-zero return code, a

#popup dialog box will appear offering the chance to cancel logout
#
#Usage: 1 - change the command in the 'subprocess.call' in
#********** function 'session_save_yourself' below to be what ever

#********** you want to run at logout.
#****** 2 - Run this program at every gnome login (add via menu System
#********** -> Preferences -> Session)
#
#

import sys
import subprocess
import datetime


import gnome
import gnome.ui
import gtk

class Namespace: pass
ns = Namespace()
ns.dialog = None

def main():
*** prog = gnome.init ("gnome_save_yourself", "1.0", gnome.libgnome_module_info_get(), sys.argv, [])

*** client = gnome.ui.master_client()
*** #set up call back for when 'logout'/'Shutdown' button pressed
*** client.connect("save-yourself", session_save_yourself)
*** client.connect("shutdown-cancelled", shutdown_cancelled)


def session_save_yourself( *args):
*** #Unmount those CIFS shares!
*** retcode = subprocess.call("sudo /etc/init.d/umountnfs.sh", shell=True)
*** if retcode != 0:
******* #command failed*
******* show_error_dialog()

*** return True

def shutdown_cancelled( *args):
*** if ns.dialog != None:
******* ns.dialog.destroy()
*** return True

def show_error_dialog():
*** ns.dialog = gtk.Dialog("There was a problem running your pre-shutdown script",

************************** None,
************************** gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
************************** ("There was a problem running your pre-shutdown script - continue logout", gtk.RESPONSE_ACCEPT))

*** if ns.test_mode == True:
******* response = ns.dialog.run()
******* ns.dialog.destroy()
*** else:
******* #when in shutdown mode gnome will only allow you to open a window using master_client().save_any_dialog()

******* #It also adds the 'Cancel logout' button
******* gnome.ui.master_client().save_any_dialog(ns.dialog )

#Find out if we are in test mode???
if len(sys.argv) >=2 and sys.argv[1] == "test":

*** ns.test_mode = True
else:
*** ns.test_mode = False

if ns.test_mode == True:
*** main()
*** session_save_yourself()
else:
*** main()
*** gtk.main()

Regards,
David Collins


--
xubuntu-devel mailing list
xubuntu-devel@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/xubuntu-devel

"Sandahl *" 01-15-2010 11:53 PM

Slow Shutdown when Network Mgr closes before CIFS unmounted
 
Are there any plans to replace Network Manager with Wicd?* I have always found it much easier to set up networking with Wicd.

B. Sandahl

http://wicd.sourceforge.net/


On Fri, Jan 15, 2010 at 4:44 PM, David Collins <david.8.collins@gmail.com> wrote:

Hello,

I am working on a fairly well-known ongoing problem where you have a slow logoff if connected wirelessly to a Samba share.
You get the message 'CIFS VFS: No response ...' and it takes about 2 minutes for the laptop to shutdown.


Apparently it happens because Network Manager closes down before the CIFS mounts are unmounted.

It will probably be some time before this gets fixed at the root cause but there is a good work-around for Gnome.

It entails running a process in the Gnome session that waits for the 'save-yourself' event (see below).


Is there a similar closing-down event that can be hooked into with an XFCE session ?
Would anyone be able to supply the few lines of code required in main() below ?
I could then test and, if successful, post the solution back into the Ubuntu forums article below.*



#!/usr/bin/env python

#Author: Seamus Phelan
# http://ubuntuforums.org/showthread.php?p=8451352#post8451352


#This program runs a custom command/script just before gnome shuts

#down.* This is done the same way that gedit does it (listening for
#the 'save-yourself' event).* This is different to placing scipts
#in /etc/rc#.d/ as the script will be run before gnome exits.
#If the custom script/command fails with a non-zero return code, a


#popup dialog box will appear offering the chance to cancel logout
#
#Usage: 1 - change the command in the 'subprocess.call' in
#********** function 'session_save_yourself' below to be what ever


#********** you want to run at logout.
#****** 2 - Run this program at every gnome login (add via menu System
#********** -> Preferences -> Session)
#
#

import sys
import subprocess
import datetime



import gnome
import gnome.ui
import gtk

class Namespace: pass
ns = Namespace()
ns.dialog = None

def main():
*** prog = gnome.init ("gnome_save_yourself", "1.0", gnome.libgnome_module_info_get(), sys.argv, [])


*** client = gnome.ui.master_client()
*** #set up call back for when 'logout'/'Shutdown' button pressed
*** client.connect("save-yourself", session_save_yourself)
*** client.connect("shutdown-cancelled", shutdown_cancelled)



def session_save_yourself( *args):
*** #Unmount those CIFS shares!
*** retcode = subprocess.call("sudo /etc/init.d/umountnfs.sh", shell=True)
*** if retcode != 0:
******* #command failed*
******* show_error_dialog()


*** return True

def shutdown_cancelled( *args):
*** if ns.dialog != None:
******* ns.dialog.destroy()
*** return True

def show_error_dialog():
*** ns.dialog = gtk.Dialog("There was a problem running your pre-shutdown script",


************************** None,
************************** gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
************************** ("There was a problem running your pre-shutdown script - continue logout", gtk.RESPONSE_ACCEPT))


*** if ns.test_mode == True:
******* response = ns.dialog.run()
******* ns.dialog.destroy()
*** else:
******* #when in shutdown mode gnome will only allow you to open a window using master_client().save_any_dialog()


******* #It also adds the 'Cancel logout' button
******* gnome.ui.master_client().save_any_dialog(ns.dialog )

#Find out if we are in test mode???
if len(sys.argv) >=2 and sys.argv[1] == "test":


*** ns.test_mode = True
else:
*** ns.test_mode = False

if ns.test_mode == True:
*** main()
*** session_save_yourself()
else:
*** main()
*** gtk.main()

Regards,
David Collins




--

xubuntu-devel mailing list

xubuntu-devel@lists.ubuntu.com

https://lists.ubuntu.com/mailman/listinfo/xubuntu-devel




--
xubuntu-devel mailing list
xubuntu-devel@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/xubuntu-devel


All times are GMT. The time now is 05:43 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.