diff --git a/[refs] b/[refs] index 98bf76021e13..ecbace1b96eb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 60e2ec48665b8495360ca4a6004c5cd52beb2bc1 +refs/heads/master: 5fd131893793567c361ae64cbeb28a2a753bbe35 diff --git a/trunk/fs/ocfs2/super.c b/trunk/fs/ocfs2/super.c index b0ee0fdf799a..a3f8871d21fd 100644 --- a/trunk/fs/ocfs2/super.c +++ b/trunk/fs/ocfs2/super.c @@ -1218,13 +1218,17 @@ static void ocfs2_kill_sb(struct super_block *sb) { struct ocfs2_super *osb = OCFS2_SB(sb); + /* Failed mount? */ + if (!osb || atomic_read(&osb->vol_state) == VOLUME_DISABLED) + goto out; + /* Prevent further queueing of inode drop events */ spin_lock(&dentry_list_lock); ocfs2_set_osb_flag(osb, OCFS2_OSB_DROP_DENTRY_LOCK_IMMED); spin_unlock(&dentry_list_lock); /* Wait for work to finish and/or remove it */ cancel_work_sync(&osb->dentry_lock_work); - +out: kill_block_super(sb); }