1303
1304
1305
1306
1307
1308static void __wait_on_freeing_inode(struct inode *inode)
1309{
1310 wait_queue_head_t *wq;
1311 DEFINE_WAIT_BIT(wait, &inode->i_state, __I_LOCK);
1312 wq = bit_waitqueue(&inode->i_state, __I_LOCK);
1313 prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE);
1314 spin_unlock(&inode_lock);
1315 schedule();
1316 finish_wait(wq, &wait.wait);
1317 spin_lock(&inode_lock);
1318}
1319
1320
1321
1322
1323
1324
1325
1326void inode_double_lock(struct inode *inode1, struct inode *inode2)
1327{
1328 if (inode1 == NULL || inode2 == NULL || inode1 == inode2) {
1329 if (inode1)
1330 mutex_lock(&inode1->i_mutex);
1331 else if (inode2)
1332 mutex_lock(&inode2->i_mutex);
1333 return;
1334 }
1335
1336 if (inode1 < inode2) {
1337 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT);
1338 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD);
1339 } else {
1340 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT);
1341 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD);
1342 }
1343}