1296
1297 if (err) {
1298
1299 spin_lock(&swap_lock);
1300 if (p->prio < 0)
1301 p->prio = --least_priority;
1302 prev = -1;
1303 for (i = swap_list.head; i >= 0; i = swap_info[i].next) {
1304 if (p->prio >= swap_info[i].prio)
1305 break;
1306 prev = i;
1307 }
1308 p->next = i;
1309 if (prev < 0)
1310 swap_list.head = swap_list.next = p - swap_info;
1311 else
1312 swap_info[prev].next = p - swap_info;
1313 nr_swap_pages += p->pages;
1314 total_swap_pages += p->pages;
1315 p->flags |= SWP_WRITEOK;
1316 spin_unlock(&swap_lock);
1317 goto out_dput;
1318 }
1319
1320
1321 down_write(&swap_unplug_sem);
1322 up_write(&swap_unplug_sem);
1323
1324 destroy_swap_extents(p);
1325 mutex_lock(&swapon_mutex);
1326 spin_lock(&swap_lock);
1327 drain_mmlist();
1328
1329
1330 p->highest_bit = 0;
1331 while (p->flags >= SWP_SCANNING) {
1332 spin_unlock(&swap_lock);
1333 schedule_timeout_uninterruptible(1);
1334 spin_lock(&swap_lock);
1335 }
1336