On Tue, Sep 06, 2005 at 02:05:39PM +0300, Alex Lyashkov wrote:
> Hello All
>
> What anyone think about this patch?
> this patch remove play with global lock list and use interlnal list
> nlm_blocked.
This patch looks cool to me, but doesn't seem to apply to current kernels where
nlm_blocked is a list_head. (urgg, we also seem to have another local variable
called nlm_blocked in svclock.c that's a nlm_block * ...)
Could you redo the patch for a current kernel?
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;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]