Index: clntlock.c =================================================================== RCS file: /home/cvs/kernel_26/fs/lockd/clntlock.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 clntlock.c --- clntlock.c 23 Feb 2005 11:07:55 -0000 1.1.1.1 +++ clntlock.c 6 Sep 2005 10:44:34 -0000 @@ -137,24 +137,17 @@ /* * Mark the locks for reclaiming. - * FIXME: In 2.5 we don't want to iterate through any global file_lock_list. - * Maintain NLM lock reclaiming lists in the nlm_host instead. */ static void nlmclnt_mark_reclaim(struct nlm_host *host) { + struct nlm_wait *head; struct file_lock *fl; - struct inode *inode; - struct list_head *tmp; - list_for_each(tmp, &file_lock_list) { - fl = list_entry(tmp, struct file_lock, fl_link); - - inode = fl->fl_file->f_dentry->d_inode; - if (inode->i_sb->s_magic != NFS_SUPER_MAGIC) - continue; - if (fl->fl_u.nfs_fl.owner->host != host) + for (head = nlm_blocked; head; head = head->b_next) { + if (head->b_host != host) continue; + fl = head->b_lock; if (!(fl->fl_u.nfs_fl.flags & NFS_LCK_GRANTED)) continue; fl->fl_u.nfs_fl.flags |= NFS_LCK_RECLAIM; @@ -202,9 +195,8 @@ { struct nlm_host *host = (struct nlm_host *) ptr; struct nlm_wait *block; - struct list_head *tmp; struct file_lock *fl; - struct inode *inode; + struct nlm_wait *head; daemonize("%s-reclaim", host->h_name); allow_signal(SIGKILL); @@ -216,14 +208,10 @@ /* First, reclaim all locks that have been marked. */ restart: - list_for_each(tmp, &file_lock_list) { - fl = list_entry(tmp, struct file_lock, fl_link); - - inode = fl->fl_file->f_dentry->d_inode; - if (inode->i_sb->s_magic != NFS_SUPER_MAGIC) - continue; - if (fl->fl_u.nfs_fl.owner->host != host) + for (head = nlm_blocked; head; head = head->b_next) { + if (head->b_host != host) continue; + fl = head->b_lock; if (!(fl->fl_u.nfs_fl.flags & NFS_LCK_RECLAIM)) continue;