/* Called from break_lease() with lock_kernel() held. Note: we assume break_lease will only call this  */
static void nfsd_break_deleg_cb(struct file_lock *fl)
/* Called from break_lease() with lock_kernel() held. Note: we assume break_lease will only call this  */
static void nfsd_break_deleg_cb(struct file_lock *fl)
{
	struct nfs4_delegation *dp = (struct nfs4_delegation *)fl->fl_owner;
	dprintk("NFSD nfsd_break_deleg_cb: dp %p fl %p\n",dp,fl);
	if (!dp)
		return;
	atomic_inc(&dp->dl_count);
	atomic_inc(&dp->dl_client->cl_count);
	spin_lock(&recall_lock);
	list_add_tail(&dp->dl_recall_lru, &del_recall_lru);
	spin_unlock(&recall_lock);
	dp->dl_time = get_seconds();
	fl->fl_break_time = 0;
	dp->dl_file->fi_had_conflict = true;
	nfsd4_cb_recall(dp);
}