static void cifs_umount_begin(struct super_block * sblock)
{
struct cifs_sb_info *cifs_sb;
+ struct cifsTconInfo * tcon;
- cifs_sb = CIFS_SB(sb);
+ cifs_sb = CIFS_SB(sblock);
if(cifs_sb == NULL)
- return -EIO;
- if(cifs_sb->tcon == NULL)
- return -EIO;
+ return;
+
+ tcon = cifs_sb->tcon;
+ if(tcon == NULL)
+ return;
down(&tcon->tconSem);
if (atomic_read(&tcon->useCount) == 1)
tcon->tidStatus = CifsExiting;
up(&tcon->tconSem);
- if((cifs->sb->tcon->ses) && (cifs_sb->tcon->ses->server))
+ if(tcon->ses && tcon->ses->server)
{
cERROR(1,("wake up tasks now - umount begin not complete"));
- wake_up_all(&server->request_q);
+ wake_up_all(&tcon->ses->server->request_q);
}
/* BB FIXME - finish add checks for tidStatus BB */
oplockThread = current;
do {
- if(try_to_freeze())
+ if (try_to_freeze())
continue;
spin_lock(&GlobalMid_Lock);
INIT_LIST_HEAD(&GlobalSMBSessionList);
INIT_LIST_HEAD(&GlobalTreeConnectionList);
INIT_LIST_HEAD(&GlobalOplock_Q);
+#ifdef CONFIG_CIFS_EXPERIMENTAL
+ INIT_LIST_HEAD(&GlobalDnotifyReqList);
+ INIT_LIST_HEAD(&GlobalDnotifyRsp_Q);
+#endif
/*
* Initialize Global counters
*/