Merge tag 'v3.10.79' into update
This is the 3.10.79 stable release
This commit is contained in:
+1
-1
@@ -388,7 +388,7 @@ static int nilfs_btree_root_broken(const struct nilfs_btree_node *node,
|
||||
nchildren = nilfs_btree_node_get_nchildren(node);
|
||||
|
||||
if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN ||
|
||||
level > NILFS_BTREE_LEVEL_MAX ||
|
||||
level >= NILFS_BTREE_LEVEL_MAX ||
|
||||
nchildren < 0 ||
|
||||
nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX)) {
|
||||
pr_crit("NILFS: bad btree root (inode number=%lu): level = %d, flags = 0x%x, nchildren = %d\n",
|
||||
|
||||
@@ -729,6 +729,19 @@ lookup:
|
||||
if (tmpres) {
|
||||
spin_unlock(&dlm->spinlock);
|
||||
spin_lock(&tmpres->spinlock);
|
||||
|
||||
/*
|
||||
* Right after dlm spinlock was released, dlm_thread could have
|
||||
* purged the lockres. Check if lockres got unhashed. If so
|
||||
* start over.
|
||||
*/
|
||||
if (hlist_unhashed(&tmpres->hash_node)) {
|
||||
spin_unlock(&tmpres->spinlock);
|
||||
dlm_lockres_put(tmpres);
|
||||
tmpres = NULL;
|
||||
goto lookup;
|
||||
}
|
||||
|
||||
/* Wait on the thread that is mastering the resource */
|
||||
if (tmpres->owner == DLM_LOCK_RES_OWNER_UNKNOWN) {
|
||||
__dlm_wait_on_lockres(tmpres);
|
||||
|
||||
Reference in New Issue
Block a user