Merge pull request #48 from versity/zab/missed_invalidate_wakeup

Queue invalidation during previous request
This commit is contained in:
Zach Brown
2021-08-09 09:50:39 -07:00
committed by GitHub

View File

@@ -862,8 +862,9 @@ static void lock_invalidate_worker(struct work_struct *work)
lock->invalidate_pending = 0;
wake_up(&lock->waitq);
} else {
/* another request filled nl/net_id, put it back on the list */
/* another request filled nl/net_id, back on the list and requeue */
list_move_tail(&lock->inv_head, &linfo->inv_list);
queue_inv_work(linfo);
}
put_lock(linfo, lock);
}
@@ -910,9 +911,10 @@ int scoutfs_lock_invalidate_request(struct super_block *sb, u64 net_id,
if (list_empty(&lock->inv_head)) {
list_add_tail(&lock->inv_head, &linfo->inv_list);
lock->invalidate_pending = 1;
queue_inv_work(linfo);
/* otherwise inv work queues itself when it sees inv_net_id */
}
trace_scoutfs_lock_invalidate_request(sb, lock);
queue_inv_work(linfo);
}
spin_unlock(&linfo->lock);