public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 0/8] list.h related cleanups
@ 2006-03-30  8:16 Akinobu Mita
  2006-03-30  8:16 ` [patch 1/8] introduce hlist_move_head() Akinobu Mita
                   ` (7 more replies)
  0 siblings, 8 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm

This patch set does:

- Introduce hlist_add_head() and use it
- Use list_add_tail() instead of list_add(A, B.prev)
- Use list_move() instead of the combination of list_del() and list_add()

for readability and micro optimization.
--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 1/8] introduce hlist_move_head()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30  8:16 ` [patch 2/8] use hlist_move_head() Akinobu Mita
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, Akinobu Mita

[-- Attachment #1: hlist-move-head.patch --]
[-- Type: text/plain, Size: 726 bytes --]

This patch introduces the function hlist_move_head().
This function deletes from one hash list and add as another's head

Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 include/linux/list.h |    5 +++++
 1 files changed, 5 insertions(+)

Index: 2.6-git/include/linux/list.h
===================================================================
--- 2.6-git.orig/include/linux/list.h
+++ 2.6-git/include/linux/list.h
@@ -656,6 +656,11 @@ static inline void hlist_add_head(struct
 	n->pprev = &h->first;
 }
 
+static inline void hlist_move_head(struct hlist_node *n, struct hlist_head *h)
+{
+	__hlist_del(n);
+	hlist_add_head(n, h);
+}
 
 /**
  * hlist_add_head_rcu - adds the specified element to the specified hlist,

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 2/8] use hlist_move_head()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
  2006-03-30  8:16 ` [patch 1/8] introduce hlist_move_head() Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-04-10  8:22   ` Andrew Morton
  2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: akpm, Neil Brown, Prasanna S Panchamukhi, David S. Miller,
	Akinobu Mita

[-- Attachment #1: use-hlist-move-head.patch --]
[-- Type: text/plain, Size: 6415 bytes --]

This patch converts the combination of hlist_del(A) and hlist_add_head(A, B)
to hlist_move_head(A, B).

CC: Neil Brown <neilb@cse.unsw.edu.au>
CC: Prasanna S Panchamukhi <prasanna@in.ibm.com>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 fs/nfsd/nfscache.c                      |    3 +--
 kernel/kprobes.c                        |   10 +++++-----
 net/core/dev.c                          |    3 +--
 net/ipv4/fib_hash.c                     |    4 +---
 net/ipv4/fib_semantics.c                |    8 ++------
 net/ipv4/ip_fragment.c                  |    4 +---
 net/ipv6/netfilter/nf_conntrack_reasm.c |    3 +--
 net/ipv6/reassembly.c                   |    4 +---
 net/sunrpc/auth.c                       |    9 +++------
 9 files changed, 16 insertions(+), 32 deletions(-)

Index: 2.6-git/fs/nfsd/nfscache.c
===================================================================
--- 2.6-git.orig/fs/nfsd/nfscache.c
+++ 2.6-git/fs/nfsd/nfscache.c
@@ -113,8 +113,7 @@ lru_put_end(struct svc_cacherep *rp)
 static void
 hash_refile(struct svc_cacherep *rp)
 {
-	hlist_del_init(&rp->c_hash);
-	hlist_add_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
+	hlist_move_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
 }
 
 /*
Index: 2.6-git/kernel/kprobes.c
===================================================================
--- 2.6-git.orig/kernel/kprobes.c
+++ 2.6-git/kernel/kprobes.c
@@ -307,11 +307,11 @@ void __kprobes recycle_rp_inst(struct kr
 	/* remove rp inst off the rprobe_inst_table */
 	hlist_del(&ri->hlist);
 	if (ri->rp) {
-		/* remove rp inst off the used list */
-		hlist_del(&ri->uflist);
-		/* put rp inst back onto the free list */
-		INIT_HLIST_NODE(&ri->uflist);
-		hlist_add_head(&ri->uflist, &ri->rp->free_instances);
+		/*
+		 * remove rp inst off the used list
+		 * and put rp inst back onto the free list
+		 */ 
+		hlist_move_head(&ri->uflist, &ri->rp->free_instances);
 	} else
 		/* Unregistering */
 		kfree(ri);
Index: 2.6-git/net/core/dev.c
===================================================================
--- 2.6-git.orig/net/core/dev.c
+++ 2.6-git/net/core/dev.c
@@ -734,8 +734,7 @@ int dev_change_name(struct net_device *d
 
 	err = class_device_rename(&dev->class_dev, dev->name);
 	if (!err) {
-		hlist_del(&dev->name_hlist);
-		hlist_add_head(&dev->name_hlist, dev_name_hash(dev->name));
+		hlist_move_head(&dev->name_hlist, dev_name_hash(dev->name));
 		blocking_notifier_call_chain(&netdev_chain,
 				NETDEV_CHANGENAME, dev);
 	}
Index: 2.6-git/net/ipv4/fib_hash.c
===================================================================
--- 2.6-git.orig/net/ipv4/fib_hash.c
+++ 2.6-git/net/ipv4/fib_hash.c
@@ -124,10 +124,8 @@ static inline void fn_rebuild_zone(struc
 		hlist_for_each_entry_safe(f, node, n, &old_ht[i], fn_hash) {
 			struct hlist_head *new_head;
 
-			hlist_del(&f->fn_hash);
-
 			new_head = &fz->fz_hash[fn_hash(f->fn_key, fz)];
-			hlist_add_head(&f->fn_hash, new_head);
+			hlist_move_head(&f->fn_hash, new_head);
 		}
 	}
 }
Index: 2.6-git/net/ipv4/fib_semantics.c
===================================================================
--- 2.6-git.orig/net/ipv4/fib_semantics.c
+++ 2.6-git/net/ipv4/fib_semantics.c
@@ -613,11 +613,9 @@ static void fib_hash_move(struct hlist_h
 			struct hlist_head *dest;
 			unsigned int new_hash;
 
-			hlist_del(&fi->fib_hash);
-
 			new_hash = fib_info_hashfn(fi);
 			dest = &new_info_hash[new_hash];
-			hlist_add_head(&fi->fib_hash, dest);
+			hlist_move_head(&fi->fib_hash, dest);
 		}
 	}
 	fib_info_hash = new_info_hash;
@@ -631,11 +629,9 @@ static void fib_hash_move(struct hlist_h
 			struct hlist_head *ldest;
 			unsigned int new_hash;
 
-			hlist_del(&fi->fib_lhash);
-
 			new_hash = fib_laddr_hashfn(fi->fib_prefsrc);
 			ldest = &new_laddrhash[new_hash];
-			hlist_add_head(&fi->fib_lhash, ldest);
+			hlist_move_head(&fi->fib_lhash, ldest);
 		}
 	}
 	fib_info_laddrhash = new_laddrhash;
Index: 2.6-git/net/ipv4/ip_fragment.c
===================================================================
--- 2.6-git.orig/net/ipv4/ip_fragment.c
+++ 2.6-git/net/ipv4/ip_fragment.c
@@ -149,10 +149,8 @@ static void ipfrag_secret_rebuild(unsign
 						      q->daddr, q->protocol);
 
 			if (hval != i) {
-				hlist_del(&q->list);
-
 				/* Relink to new hash chain. */
-				hlist_add_head(&q->list, &ipq_hash[hval]);
+				hlist_move_head(&q->list, &ipq_hash[hval]);
 			}
 		}
 	}
Index: 2.6-git/net/ipv6/netfilter/nf_conntrack_reasm.c
===================================================================
--- 2.6-git.orig/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ 2.6-git/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -162,9 +162,8 @@ static void nf_ct_frag6_secret_rebuild(u
 						       &q->saddr,
 						       &q->daddr);
 			if (hval != i) {
-				hlist_del(&q->list);
 				/* Relink to new hash chain. */
-				hlist_add_head(&q->list,
+				hlist_move_head(&q->list,
 					       &nf_ct_frag6_hash[hval]);
 			}
 		}
Index: 2.6-git/net/ipv6/reassembly.c
===================================================================
--- 2.6-git.orig/net/ipv6/reassembly.c
+++ 2.6-git/net/ipv6/reassembly.c
@@ -168,10 +168,8 @@ static void ip6_frag_secret_rebuild(unsi
 						       &q->daddr);
 
 			if (hval != i) {
-				hlist_del(&q->list);
-
 				/* Relink to new hash chain. */
-				hlist_add_head(&q->list,
+				hlist_move_head(&q->list,
 					       &ip6_frag_hash[hval]);
 
 			}
Index: 2.6-git/net/sunrpc/auth.c
===================================================================
--- 2.6-git.orig/net/sunrpc/auth.c
+++ 2.6-git/net/sunrpc/auth.c
@@ -149,8 +149,7 @@ rpcauth_free_credcache(struct rpc_auth *
 	for (i = 0; i < RPC_CREDCACHE_NR; i++) {
 		hlist_for_each_safe(pos, next, &cache->hashtable[i]) {
 			cred = hlist_entry(pos, struct rpc_cred, cr_hash);
-			__hlist_del(&cred->cr_hash);
-			hlist_add_head(&cred->cr_hash, &free);
+			hlist_move_head(&cred->cr_hash, &free);
 		}
 	}
 	spin_unlock(&rpc_credcache_lock);
@@ -164,10 +163,8 @@ rpcauth_prune_expired(struct rpc_auth *a
 	       return;
 	if (time_after(jiffies, cred->cr_expire + auth->au_credcache->expire))
 		cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
-	if (!(cred->cr_flags & RPCAUTH_CRED_UPTODATE)) {
-		__hlist_del(&cred->cr_hash);
-		hlist_add_head(&cred->cr_hash, free);
-	}
+	if (!(cred->cr_flags & RPCAUTH_CRED_UPTODATE))
+		hlist_move_head(&cred->cr_hash, free);
 }
 
 /*

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 3/8] use list_add_tail() instead of list_add()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
  2006-03-30  8:16 ` [patch 1/8] introduce hlist_move_head() Akinobu Mita
  2006-03-30  8:16 ` [patch 2/8] use hlist_move_head() Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30  8:26   ` Karsten Keil
                     ` (2 more replies)
  2006-03-30  8:16 ` [patch 4/8] arch: use list_move() Akinobu Mita
                   ` (4 subsequent siblings)
  7 siblings, 3 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: akpm, Karsten Keil, Jan Harkes, Jan Kara, David Woodhouse,
	Sridhar Samudrala, Akinobu Mita

[-- Attachment #1: list-add-tail.patch --]
[-- Type: text/plain, Size: 4726 bytes --]

This patch converts list_add(A, B.prev) to list_add_tail(A, &B)
for readability.

CC: Karsten Keil <kkeil@suse.de>
CC: Jan Harkes <jaharkes@cs.cmu.edu>
CC: Jan Kara <jack@suse.cz>
CC: David Woodhouse <dwmw2@infradead.org>
CC: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 drivers/isdn/capi/capi.c |    2 +-
 fs/coda/psdev.c          |    2 +-
 fs/coda/upcall.c         |    2 +-
 fs/dcache.c              |    2 +-
 fs/dquot.c               |    4 ++--
 fs/jffs2/compr.c         |    4 ++--
 net/sctp/outqueue.c      |    2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

Index: 2.6-git/drivers/isdn/capi/capi.c
===================================================================
--- 2.6-git.orig/drivers/isdn/capi/capi.c
+++ 2.6-git/drivers/isdn/capi/capi.c
@@ -238,7 +238,7 @@ static struct capiminor *capiminor_alloc
 		
 		if (minor < capi_ttyminors) {
 			mp->minor = minor;
-			list_add(&mp->list, p->list.prev);
+			list_add_tail(&mp->list, &p->list);
 		}
 	}
 		write_unlock_irqrestore(&capiminor_list_lock, flags);
Index: 2.6-git/fs/coda/psdev.c
===================================================================
--- 2.6-git.orig/fs/coda/psdev.c
+++ 2.6-git/fs/coda/psdev.c
@@ -259,7 +259,7 @@ static ssize_t coda_psdev_read(struct fi
 	/* If request was not a signal, enqueue and don't free */
 	if (!(req->uc_flags & REQ_ASYNC)) {
 		req->uc_flags |= REQ_READ;
-		list_add(&(req->uc_chain), vcp->vc_processing.prev);
+		list_add_tail(&(req->uc_chain), &vcp->vc_processing);
 		goto out;
 	}
 
Index: 2.6-git/fs/coda/upcall.c
===================================================================
--- 2.6-git.orig/fs/coda/upcall.c
+++ 2.6-git/fs/coda/upcall.c
@@ -725,7 +725,7 @@ static int coda_upcall(struct coda_sb_in
 	((union inputArgs *)buffer)->ih.unique = req->uc_unique;
 
 	/* Append msg to pending queue and poke Venus. */
-	list_add(&(req->uc_chain), vcommp->vc_pending.prev);
+	list_add_tail(&(req->uc_chain), &vcommp->vc_pending);
         
 	wake_up_interruptible(&vcommp->vc_waitq);
 	/* We can be interrupted while we wait for Venus to process
Index: 2.6-git/fs/dcache.c
===================================================================
--- 2.6-git.orig/fs/dcache.c
+++ 2.6-git/fs/dcache.c
@@ -584,7 +584,7 @@ resume:
 		 * of the unused list for prune_dcache
 		 */
 		if (!atomic_read(&dentry->d_count)) {
-			list_add(&dentry->d_lru, dentry_unused.prev);
+			list_add_tail(&dentry->d_lru, &dentry_unused);
 			dentry_stat.nr_unused++;
 			found++;
 		}
Index: 2.6-git/fs/dquot.c
===================================================================
--- 2.6-git.orig/fs/dquot.c
+++ 2.6-git/fs/dquot.c
@@ -250,7 +250,7 @@ static inline struct dquot *find_dquot(u
 /* Add a dquot to the tail of the free list */
 static inline void put_dquot_last(struct dquot *dquot)
 {
-	list_add(&dquot->dq_free, free_dquots.prev);
+	list_add_tail(&dquot->dq_free, &free_dquots);
 	dqstats.free_dquots++;
 }
 
@@ -266,7 +266,7 @@ static inline void put_inuse(struct dquo
 {
 	/* We add to the back of inuse list so we don't have to restart
 	 * when traversing this list and we block */
-	list_add(&dquot->dq_inuse, inuse_list.prev);
+	list_add_tail(&dquot->dq_inuse, &inuse_list);
 	dqstats.allocated_dquots++;
 }
 
Index: 2.6-git/fs/jffs2/compr.c
===================================================================
--- 2.6-git.orig/fs/jffs2/compr.c
+++ 2.6-git/fs/jffs2/compr.c
@@ -231,7 +231,7 @@ int jffs2_register_compressor(struct jff
 
         list_for_each_entry(this, &jffs2_compressor_list, list) {
                 if (this->priority < comp->priority) {
-                        list_add(&comp->list, this->list.prev);
+                        list_add_tail(&comp->list, &this->list);
                         goto out;
                 }
         }
@@ -394,7 +394,7 @@ reinsert:
         list_del(&comp->list);
         list_for_each_entry(this, &jffs2_compressor_list, list) {
                 if (this->priority < comp->priority) {
-                        list_add(&comp->list, this->list.prev);
+                        list_add_tail(&comp->list, &this->list);
                         spin_unlock(&jffs2_compressor_list_lock);
                         return 0;
                 }
Index: 2.6-git/net/sctp/outqueue.c
===================================================================
--- 2.6-git.orig/net/sctp/outqueue.c
+++ 2.6-git/net/sctp/outqueue.c
@@ -370,7 +370,7 @@ static void sctp_insert_list(struct list
 		lchunk = list_entry(pos, struct sctp_chunk, transmitted_list);
 		ltsn = ntohl(lchunk->subh.data_hdr->tsn);
 		if (TSN_lt(ntsn, ltsn)) {
-			list_add(new, pos->prev);
+			list_add_tail(new, pos);
 			done = 1;
 			break;
 		}

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 4/8] arch: use list_move()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
                   ` (2 preceding siblings ...)
  2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30  8:16 ` [patch 5/8] core: " Akinobu Mita
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, Geert Uytterhoeven, David S. Miller, Akinobu Mita

[-- Attachment #1: list-move-arch.patch --]
[-- Type: text/plain, Size: 3446 bytes --]

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B) under arch/.

CC: Geert Uytterhoeven <geert@linux-m68k.org>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 arch/i386/pci/pcbios.c    |    6 ++----
 arch/m68k/mm/memory.c     |    6 ++----
 arch/m68k/sun3/sun3dvma.c |    6 ++----
 arch/sparc64/kernel/pci.c |    6 ++----
 4 files changed, 8 insertions(+), 16 deletions(-)

Index: 2.6-git/arch/i386/pci/pcbios.c
===================================================================
--- 2.6-git.orig/arch/i386/pci/pcbios.c
+++ 2.6-git/arch/i386/pci/pcbios.c
@@ -371,8 +371,7 @@ void __devinit pcibios_sort(void)
 			list_for_each(ln, &pci_devices) {
 				d = pci_dev_g(ln);
 				if (d->bus->number == bus && d->devfn == devfn) {
-					list_del(&d->global_list);
-					list_add_tail(&d->global_list, &sorted_devices);
+					list_move_tail(&d->global_list, &sorted_devices);
 					if (d == dev)
 						found = 1;
 					break;
@@ -390,8 +389,7 @@ void __devinit pcibios_sort(void)
 		if (!found) {
 			printk(KERN_WARNING "PCI: Device %s not found by BIOS\n",
 				pci_name(dev));
-			list_del(&dev->global_list);
-			list_add_tail(&dev->global_list, &sorted_devices);
+			list_move_tail(&dev->global_list, &sorted_devices);
 		}
 	}
 	list_splice(&sorted_devices, &pci_devices);
Index: 2.6-git/arch/m68k/mm/memory.c
===================================================================
--- 2.6-git.orig/arch/m68k/mm/memory.c
+++ 2.6-git/arch/m68k/mm/memory.c
@@ -94,8 +94,7 @@ pmd_t *get_pointer_table (void)
 	PD_MARKBITS(dp) = mask & ~tmp;
 	if (!PD_MARKBITS(dp)) {
 		/* move to end of list */
-		list_del(dp);
-		list_add_tail(dp, &ptable_list);
+		list_move_tail(dp, &ptable_list);
 	}
 	return (pmd_t *) (page_address(PD_PAGE(dp)) + off);
 }
@@ -123,8 +122,7 @@ int free_pointer_table (pmd_t *ptable)
 		 * move this descriptor to the front of the list, since
 		 * it has one or more free tables.
 		 */
-		list_del(dp);
-		list_add(dp, &ptable_list);
+		list_move(dp, &ptable_list);
 	}
 	return 0;
 }
Index: 2.6-git/arch/m68k/sun3/sun3dvma.c
===================================================================
--- 2.6-git.orig/arch/m68k/sun3/sun3dvma.c
+++ 2.6-git/arch/m68k/sun3/sun3dvma.c
@@ -119,8 +119,7 @@ static inline int refill(void)
 		if(hole->end == prev->start) {
 			hole->size += prev->size;
 			hole->end = prev->end;
-			list_del(&(prev->list));
-			list_add(&(prev->list), &hole_cache);
+			list_move(&(prev->list), &hole_cache);
 			ret++;
 		}
 
@@ -182,8 +181,7 @@ static inline unsigned long get_baddr(in
 #endif
 			return hole->end;
 		} else if(hole->size == newlen) {
-			list_del(&(hole->list));
-			list_add(&(hole->list), &hole_cache);
+			list_move(&(hole->list), &hole_cache);
 			dvma_entry_use(hole->start) = newlen;
 #ifdef DVMA_DEBUG
 			dvma_allocs++;
Index: 2.6-git/arch/sparc64/kernel/pci.c
===================================================================
--- 2.6-git.orig/arch/sparc64/kernel/pci.c
+++ 2.6-git/arch/sparc64/kernel/pci.c
@@ -328,10 +328,8 @@ static void __init pci_reorder_devs(void
 		struct pci_dev *pdev = pci_dev_g(walk);
 		struct list_head *walk_next = walk->next;
 
-		if (pdev->irq && (__irq_ino(pdev->irq) & 0x20)) {
-			list_del(walk);
-			list_add(walk, pci_onboard);
-		}
+		if (pdev->irq && (__irq_ino(pdev->irq) & 0x20))
+			list_move(walk, pci_onboard);
 
 		walk = walk_next;
 	}

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 5/8] core: use list_move()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
                   ` (3 preceding siblings ...)
  2006-03-30  8:16 ` [patch 4/8] arch: use list_move() Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30  8:16 ` [patch 6/8] net/rxrpc: " Akinobu Mita
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, Greg Kroah-Hartman, Ram Pai, Akinobu Mita

[-- Attachment #1: list-move-core.patch --]
[-- Type: text/plain, Size: 6319 bytes --]

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B).

CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: Ram Pai <linuxram@us.ibm.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 drivers/base/power/resume.c  |    6 ++----
 drivers/base/power/suspend.c |   13 +++++--------
 fs/dcache.c                  |    3 +--
 fs/libfs.c                   |   10 ++++------
 fs/namespace.c               |    6 ++----
 fs/pnode.c                   |    9 +++------
 fs/sysfs/dir.c               |   10 ++++------
 mm/swap.c                    |    3 +--
 8 files changed, 22 insertions(+), 38 deletions(-)

Index: 2.6-git/fs/dcache.c
===================================================================
--- 2.6-git.orig/fs/dcache.c
+++ 2.6-git/fs/dcache.c
@@ -468,8 +468,7 @@ void shrink_dcache_sb(struct super_block
 		dentry = list_entry(tmp, struct dentry, d_lru);
 		if (dentry->d_sb != sb)
 			continue;
-		list_del(tmp);
-		list_add(tmp, &dentry_unused);
+		list_move(tmp, &dentry_unused);
 	}
 
 	/*
Index: 2.6-git/fs/libfs.c
===================================================================
--- 2.6-git.orig/fs/libfs.c
+++ 2.6-git/fs/libfs.c
@@ -149,10 +149,9 @@ int dcache_readdir(struct file * filp, v
 			/* fallthrough */
 		default:
 			spin_lock(&dcache_lock);
-			if (filp->f_pos == 2) {
-				list_del(q);
-				list_add(q, &dentry->d_subdirs);
-			}
+			if (filp->f_pos == 2)
+				list_move(q, &dentry->d_subdirs);
+
 			for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
 				struct dentry *next;
 				next = list_entry(p, struct dentry, d_u.d_child);
@@ -164,8 +163,7 @@ int dcache_readdir(struct file * filp, v
 					return 0;
 				spin_lock(&dcache_lock);
 				/* next is still alive */
-				list_del(q);
-				list_add(q, p);
+				list_move(q, p);
 				p = q;
 				filp->f_pos++;
 			}
Index: 2.6-git/fs/namespace.c
===================================================================
--- 2.6-git.orig/fs/namespace.c
+++ 2.6-git/fs/namespace.c
@@ -517,10 +517,8 @@ void umount_tree(struct vfsmount *mnt, i
 {
 	struct vfsmount *p;
 
-	for (p = mnt; p; p = next_mnt(p, mnt)) {
-		list_del(&p->mnt_hash);
-		list_add(&p->mnt_hash, kill);
-	}
+	for (p = mnt; p; p = next_mnt(p, mnt))
+		list_move(&p->mnt_hash, kill);
 
 	if (propagate)
 		propagate_umount(kill);
Index: 2.6-git/fs/pnode.c
===================================================================
--- 2.6-git.orig/fs/pnode.c
+++ 2.6-git/fs/pnode.c
@@ -53,8 +53,7 @@ static int do_make_slave(struct vfsmount
 	if (master) {
 		list_for_each_entry(slave_mnt, &mnt->mnt_slave_list, mnt_slave)
 			slave_mnt->mnt_master = master;
-		list_del(&mnt->mnt_slave);
-		list_add(&mnt->mnt_slave, &master->mnt_slave_list);
+		list_move(&mnt->mnt_slave, &master->mnt_slave_list);
 		list_splice(&mnt->mnt_slave_list, master->mnt_slave_list.prev);
 		INIT_LIST_HEAD(&mnt->mnt_slave_list);
 	} else {
@@ -283,10 +282,8 @@ static void __propagate_umount(struct vf
 		 * umount the child only if the child has no
 		 * other children
 		 */
-		if (child && list_empty(&child->mnt_mounts)) {
-			list_del(&child->mnt_hash);
-			list_add_tail(&child->mnt_hash, &mnt->mnt_hash);
-		}
+		if (child && list_empty(&child->mnt_mounts))
+			list_move_tail(&child->mnt_hash, &mnt->mnt_hash);
 	}
 }
 
Index: 2.6-git/fs/sysfs/dir.c
===================================================================
--- 2.6-git.orig/fs/sysfs/dir.c
+++ 2.6-git/fs/sysfs/dir.c
@@ -429,10 +429,9 @@ static int sysfs_readdir(struct file * f
 			i++;
 			/* fallthrough */
 		default:
-			if (filp->f_pos == 2) {
-				list_del(q);
-				list_add(q, &parent_sd->s_children);
-			}
+			if (filp->f_pos == 2)
+				list_move(q, &parent_sd->s_children);
+
 			for (p=q->next; p!= &parent_sd->s_children; p=p->next) {
 				struct sysfs_dirent *next;
 				const char * name;
@@ -454,8 +453,7 @@ static int sysfs_readdir(struct file * f
 						 dt_type(next)) < 0)
 					return 0;
 
-				list_del(q);
-				list_add(q, p);
+				list_move(q, p);
 				p = q;
 				filp->f_pos++;
 			}
Index: 2.6-git/mm/swap.c
===================================================================
--- 2.6-git.orig/mm/swap.c
+++ 2.6-git/mm/swap.c
@@ -86,8 +86,7 @@ int rotate_reclaimable_page(struct page 
 	zone = page_zone(page);
 	spin_lock_irqsave(&zone->lru_lock, flags);
 	if (PageLRU(page) && !PageActive(page)) {
-		list_del(&page->lru);
-		list_add_tail(&page->lru, &zone->inactive_list);
+		list_move_tail(&page->lru, &zone->inactive_list);
 		inc_page_state(pgrotated);
 	}
 	if (!test_clear_page_writeback(page))
Index: 2.6-git/drivers/base/power/resume.c
===================================================================
--- 2.6-git.orig/drivers/base/power/resume.c
+++ 2.6-git/drivers/base/power/resume.c
@@ -49,8 +49,7 @@ void dpm_resume(void)
 		struct device * dev = to_device(entry);
 
 		get_device(dev);
-		list_del_init(entry);
-		list_add_tail(entry, &dpm_active);
+		list_move_tail(entry, &dpm_active);
 
 		up(&dpm_list_sem);
 		if (!dev->power.prev_state.event)
@@ -97,8 +96,7 @@ void dpm_power_up(void)
 		struct device * dev = to_device(entry);
 
 		get_device(dev);
-		list_del_init(entry);
-		list_add_tail(entry, &dpm_active);
+		list_move_tail(entry, &dpm_active);
 		resume_device(dev);
 		put_device(dev);
 	}
Index: 2.6-git/drivers/base/power/suspend.c
===================================================================
--- 2.6-git.orig/drivers/base/power/suspend.c
+++ 2.6-git/drivers/base/power/suspend.c
@@ -101,12 +101,10 @@ int device_suspend(pm_message_t state)
 		/* Check if the device got removed */
 		if (!list_empty(&dev->power.entry)) {
 			/* Move it to the dpm_off or dpm_off_irq list */
-			if (!error) {
-				list_del(&dev->power.entry);
-				list_add(&dev->power.entry, &dpm_off);
-			} else if (error == -EAGAIN) {
-				list_del(&dev->power.entry);
-				list_add(&dev->power.entry, &dpm_off_irq);
+			if (!error)
+				list_move(&dev->power.entry, &dpm_off);
+			else if (error == -EAGAIN) {
+				list_move(&dev->power.entry, &dpm_off_irq);
 				error = 0;
 			}
 		}
@@ -124,8 +122,7 @@ int device_suspend(pm_message_t state)
 		 */
 		while (!list_empty(&dpm_off_irq)) {
 			struct list_head * entry = dpm_off_irq.next;
-			list_del(entry);
-			list_add(entry, &dpm_off);
+			list_move(entry, &dpm_off);
 		}
 		dpm_resume();
 	}

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 6/8] net/rxrpc: use list_move()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
                   ` (4 preceding siblings ...)
  2006-03-30  8:16 ` [patch 5/8] core: " Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30 10:17   ` David Howells
  2006-03-30  8:16 ` [patch 7/8] drivers: " Akinobu Mita
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
  7 siblings, 1 reply; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, David Howells, Akinobu Mita

[-- Attachment #1: list-move-net.patch --]
[-- Type: text/plain, Size: 1910 bytes --]

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B) under net/rxrpc.

CC: David Howells <dhowells@redhat.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 net/rxrpc/call.c       |    3 +--
 net/rxrpc/connection.c |    3 +--
 net/rxrpc/krxsecd.c    |    3 +--
 3 files changed, 3 insertions(+), 6 deletions(-)

Index: 2.6-git/net/rxrpc/call.c
===================================================================
--- 2.6-git.orig/net/rxrpc/call.c
+++ 2.6-git/net/rxrpc/call.c
@@ -1098,8 +1098,7 @@ static void rxrpc_call_receive_data_pack
 
 		call->app_ready_seq = pmsg->seq;
 		call->app_ready_qty += pmsg->dsize;
-		list_del_init(&pmsg->link);
-		list_add_tail(&pmsg->link, &call->app_readyq);
+		list_move_tail(&pmsg->link, &call->app_readyq);
 	}
 
 	/* see if we've got the last packet yet */
Index: 2.6-git/net/rxrpc/connection.c
===================================================================
--- 2.6-git.orig/net/rxrpc/connection.c
+++ 2.6-git/net/rxrpc/connection.c
@@ -402,8 +402,7 @@ void rxrpc_put_connection(struct rxrpc_c
 
 	/* move to graveyard queue */
 	_debug("burying connection: {%08x}", ntohl(conn->conn_id));
-	list_del(&conn->link);
-	list_add_tail(&conn->link, &peer->conn_graveyard);
+	list_move_tail(&conn->link, &peer->conn_graveyard);
 
 	rxrpc_krxtimod_add_timer(&conn->timeout, rxrpc_conn_timeout * HZ);
 
Index: 2.6-git/net/rxrpc/krxsecd.c
===================================================================
--- 2.6-git.orig/net/rxrpc/krxsecd.c
+++ 2.6-git/net/rxrpc/krxsecd.c
@@ -160,8 +160,7 @@ void rxrpc_krxsecd_clear_transport(struc
 	list_for_each_safe(_p, _n, &rxrpc_krxsecd_initmsgq) {
 		msg = list_entry(_p, struct rxrpc_message, link);
 		if (msg->trans == trans) {
-			list_del(&msg->link);
-			list_add_tail(&msg->link, &tmp);
+			list_move_tail(&msg->link, &tmp);
 			atomic_dec(&rxrpc_krxsecd_qcount);
 		}
 	}

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 7/8] drivers: use list_move()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
                   ` (5 preceding siblings ...)
  2006-03-30  8:16 ` [patch 6/8] net/rxrpc: " Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30 12:11   ` Matthew Wilcox
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
  7 siblings, 1 reply; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: akpm, Corey Minyard, Ben Collins, Roland Dreier, Alasdair Kergon,
	Gerd Knorr, Paul Mackerras, Frank Pavlic, Matthew Wilcox,
	Andrew Vasquez, Mikael Starvik, Greg Kroah-Hartman, Akinobu Mita

[-- Attachment #1: list-move-drivers.patch --]
[-- Type: text/plain, Size: 12215 bytes --]

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B) under drivers/.

CC: Corey Minyard <minyard@mvista.com>
CC: Ben Collins <bcollins@debian.org>
CC: Roland Dreier <rolandd@cisco.com>
CC: Alasdair Kergon <dm-devel@redhat.com>
CC: Gerd Knorr <kraxel@bytesex.org> 
CC: Paul Mackerras <paulus@samba.org>
CC: Frank Pavlic <fpavlic@de.ibm.com>
CC: Matthew Wilcox <matthew@wil.cx>
CC: Andrew Vasquez <linux-driver@qlogic.com>
CC: Mikael Starvik <starvik@axis.com>
CC: Greg Kroah-Hartman <greg@kroah.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 drivers/char/ipmi/ipmi_msghandler.c            |    7 +++----
 drivers/ieee1394/eth1394.c                     |    3 +--
 drivers/ieee1394/raw1394.c                     |    3 +--
 drivers/infiniband/core/mad.c                  |    9 +++------
 drivers/infiniband/core/mad_rmpp.c             |    3 +--
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |    7 +++----
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    6 ++----
 drivers/md/dm-raid1.c                          |    6 ++----
 drivers/media/video/cx88/cx88-video.c          |    6 ++----
 drivers/net/ppp_generic.c                      |    3 +--
 drivers/s390/net/lcs.c                         |    7 +++----
 drivers/scsi/ncr53c8xx.c                       |    3 +--
 drivers/scsi/qla2xxx/qla_init.c                |    3 +--
 drivers/usb/host/hc_crisv10.c                  |    3 +--
 drivers/usb/serial/whiteheat.c                 |   19 +++++++------------
 15 files changed, 32 insertions(+), 56 deletions(-)

Index: 2.6-git/drivers/char/ipmi/ipmi_msghandler.c
===================================================================
--- 2.6-git.orig/drivers/char/ipmi/ipmi_msghandler.c
+++ 2.6-git/drivers/char/ipmi/ipmi_msghandler.c
@@ -936,10 +936,9 @@ int ipmi_set_gets_events(ipmi_user_t use
 
 	if (val) {
 		/* Deliver any queued events. */
-		list_for_each_entry_safe(msg, msg2, &intf->waiting_events, link) {
-			list_del(&msg->link);
-			list_add_tail(&msg->link, &msgs);
-		}
+		list_for_each_entry_safe(msg, msg2, &intf->waiting_events, link)
+			list_move_tail(&msg->link, &msgs);
+
 	}
 
 	/* Hold the events lock while doing this to preserve order. */
Index: 2.6-git/drivers/ieee1394/eth1394.c
===================================================================
--- 2.6-git.orig/drivers/ieee1394/eth1394.c
+++ 2.6-git/drivers/ieee1394/eth1394.c
@@ -1079,8 +1079,7 @@ static inline int update_partial_datagra
 
 	/* Move list entry to beginnig of list so that oldest partial
 	 * datagrams percolate to the end of the list */
-	list_del(lh);
-	list_add(lh, pdgl);
+	list_move(lh, pdgl);
 
 	return 0;
 }
Index: 2.6-git/drivers/ieee1394/raw1394.c
===================================================================
--- 2.6-git.orig/drivers/ieee1394/raw1394.c
+++ 2.6-git/drivers/ieee1394/raw1394.c
@@ -132,8 +132,7 @@ static void free_pending_request(struct 
 static void __queue_complete_req(struct pending_request *req)
 {
 	struct file_info *fi = req->file_info;
-	list_del(&req->list);
-	list_add_tail(&req->list, &fi->req_complete);
+	list_move_tail(&req->list, &fi->req_complete);
 
 	up(&fi->complete_sem);
 	wake_up_interruptible(&fi->poll_wait_complete);
Index: 2.6-git/drivers/infiniband/core/mad.c
===================================================================
--- 2.6-git.orig/drivers/infiniband/core/mad.c
+++ 2.6-git/drivers/infiniband/core/mad.c
@@ -1648,11 +1648,9 @@ ib_find_send_mad(struct ib_mad_agent_pri
 void ib_mark_mad_done(struct ib_mad_send_wr_private *mad_send_wr)
 {
 	mad_send_wr->timeout = 0;
-	if (mad_send_wr->refcount == 1) {
-		list_del(&mad_send_wr->agent_list);
-		list_add_tail(&mad_send_wr->agent_list,
+	if (mad_send_wr->refcount == 1)
+		list_move_tail(&mad_send_wr->agent_list,
 			      &mad_send_wr->mad_agent_priv->done_list);
-	}
 }
 
 static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,
@@ -1977,8 +1975,7 @@ retry:
 		queued_send_wr = container_of(mad_list,
 					struct ib_mad_send_wr_private,
 					mad_list);
-		list_del(&mad_list->list);
-		list_add_tail(&mad_list->list, &send_queue->list);
+		list_move_tail(&mad_list->list, &send_queue->list);
 	}
 	spin_unlock_irqrestore(&send_queue->lock, flags);
 
Index: 2.6-git/drivers/infiniband/core/mad_rmpp.c
===================================================================
--- 2.6-git.orig/drivers/infiniband/core/mad_rmpp.c
+++ 2.6-git/drivers/infiniband/core/mad_rmpp.c
@@ -679,8 +679,7 @@ static void process_rmpp_ack(struct ib_m
 			goto out;
 
 		mad_send_wr->refcount++;
-		list_del(&mad_send_wr->agent_list);
-		list_add_tail(&mad_send_wr->agent_list,
+		list_move_tail(&mad_send_wr->agent_list,
 			      &mad_send_wr->mad_agent_priv->send_list);
 	}
 out:
Index: 2.6-git/drivers/infiniband/ulp/ipoib/ipoib_ib.c
===================================================================
--- 2.6-git.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ 2.6-git/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -378,10 +378,9 @@ static void __ipoib_reap_ah(struct net_d
 
 	spin_lock_irq(&priv->lock);
 	list_for_each_entry_safe(ah, tah, &priv->dead_ahs, list)
-		if ((int) priv->tx_tail - (int) ah->last_send >= 0) {
-			list_del(&ah->list);
-			list_add_tail(&ah->list, &remove_list);
-		}
+		if ((int) priv->tx_tail - (int) ah->last_send >= 0)
+			list_move_tail(&ah->list, &remove_list);
+
 	spin_unlock_irq(&priv->lock);
 
 	list_for_each_entry_safe(ah, tah, &remove_list, list) {
Index: 2.6-git/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===================================================================
--- 2.6-git.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ 2.6-git/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -877,8 +877,7 @@ void ipoib_mcast_restart_task(void *dev_
 
 			if (mcast) {
 				/* Destroy the send only entry */
-				list_del(&mcast->list);
-				list_add_tail(&mcast->list, &remove_list);
+				list_move_tail(&mcast->list, &remove_list);
 
 				rb_replace_node(&mcast->rb_node,
 						&nmcast->rb_node,
@@ -903,8 +902,7 @@ void ipoib_mcast_restart_task(void *dev_
 			rb_erase(&mcast->rb_node, &priv->multicast_tree);
 
 			/* Move to the remove list */
-			list_del(&mcast->list);
-			list_add_tail(&mcast->list, &remove_list);
+			list_move_tail(&mcast->list, &remove_list);
 		}
 	}
 
Index: 2.6-git/drivers/md/dm-raid1.c
===================================================================
--- 2.6-git.orig/drivers/md/dm-raid1.c
+++ 2.6-git/drivers/md/dm-raid1.c
@@ -458,11 +458,9 @@ static int __rh_recovery_prepare(struct 
 	/* Already quiesced ? */
 	if (atomic_read(&reg->pending))
 		list_del_init(&reg->list);
+	else
+		list_move(&reg->list, &rh->quiesced_regions);
 
-	else {
-		list_del_init(&reg->list);
-		list_add(&reg->list, &rh->quiesced_regions);
-	}
 	spin_unlock_irq(&rh->region_lock);
 
 	return 1;
Index: 2.6-git/drivers/media/video/cx88/cx88-video.c
===================================================================
--- 2.6-git.orig/drivers/media/video/cx88/cx88-video.c
+++ 2.6-git/drivers/media/video/cx88/cx88-video.c
@@ -492,8 +492,7 @@ static int restart_video_queue(struct cx
 			return 0;
 		buf = list_entry(q->queued.next, struct cx88_buffer, vb.queue);
 		if (NULL == prev) {
-			list_del(&buf->vb.queue);
-			list_add_tail(&buf->vb.queue,&q->active);
+			list_move_tail(&buf->vb.queue, &q->active);
 			start_video_dma(dev, q, buf);
 			buf->vb.state = STATE_ACTIVE;
 			buf->count    = q->count++;
@@ -504,8 +503,7 @@ static int restart_video_queue(struct cx
 		} else if (prev->vb.width  == buf->vb.width  &&
 			   prev->vb.height == buf->vb.height &&
 			   prev->fmt       == buf->fmt) {
-			list_del(&buf->vb.queue);
-			list_add_tail(&buf->vb.queue,&q->active);
+			list_move_tail(&buf->vb.queue, &q->active);
 			buf->vb.state = STATE_ACTIVE;
 			buf->count    = q->count++;
 			prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
Index: 2.6-git/drivers/net/ppp_generic.c
===================================================================
--- 2.6-git.orig/drivers/net/ppp_generic.c
+++ 2.6-git/drivers/net/ppp_generic.c
@@ -2580,8 +2580,7 @@ ppp_find_channel(int unit)
 
 	list_for_each_entry(pch, &new_channels, list) {
 		if (pch->file.index == unit) {
-			list_del(&pch->list);
-			list_add(&pch->list, &all_channels);
+			list_move(&pch->list, &all_channels);
 			return pch;
 		}
 	}
Index: 2.6-git/drivers/s390/net/lcs.c
===================================================================
--- 2.6-git.orig/drivers/s390/net/lcs.c
+++ 2.6-git/drivers/s390/net/lcs.c
@@ -1145,10 +1145,9 @@ list_modified:
 		}
 	}
 	/* re-insert all entries from the failed_list into ipm_list */
-	list_for_each_entry_safe(ipm, tmp, &failed_list, list) {
-		list_del_init(&ipm->list);
-		list_add_tail(&ipm->list, &card->ipm_list);
-	}
+	list_for_each_entry_safe(ipm, tmp, &failed_list, list)
+		list_move_tail(&ipm->list, &card->ipm_list);
+
 	spin_unlock_irqrestore(&card->ipm_lock, flags);
 	if (card->state == DEV_STATE_UP)
 		netif_wake_queue(card->dev);
Index: 2.6-git/drivers/scsi/ncr53c8xx.c
===================================================================
--- 2.6-git.orig/drivers/scsi/ncr53c8xx.c
+++ 2.6-git/drivers/scsi/ncr53c8xx.c
@@ -5118,8 +5118,7 @@ static void ncr_ccb_skipped(struct ncb *
 		cp->host_status &= ~HS_SKIPMASK;
 		cp->start.schedule.l_paddr = 
 			cpu_to_scr(NCB_SCRIPT_PHYS (np, select));
-		list_del(&cp->link_ccbq);
-		list_add_tail(&cp->link_ccbq, &lp->skip_ccbq);
+		list_move_tail(&cp->link_ccbq, &lp->skip_ccbq);
 		if (cp->queued) {
 			--lp->queuedccbs;
 		}
Index: 2.6-git/drivers/scsi/qla2xxx/qla_init.c
===================================================================
--- 2.6-git.orig/drivers/scsi/qla2xxx/qla_init.c
+++ 2.6-git/drivers/scsi/qla2xxx/qla_init.c
@@ -2273,8 +2273,7 @@ qla2x00_configure_fabric(scsi_qla_host_t
 			}
 
 			/* Remove device from the new list and add it to DB */
-			list_del(&fcport->list);
-			list_add_tail(&fcport->list, &ha->fcports);
+			list_move_tail(&fcport->list, &ha->fcports);
 
 			/* Login and update database */
 			qla2x00_fabric_dev_login(ha, fcport, &next_loopid);
Index: 2.6-git/drivers/usb/host/hc_crisv10.c
===================================================================
--- 2.6-git.orig/drivers/usb/host/hc_crisv10.c
+++ 2.6-git/drivers/usb/host/hc_crisv10.c
@@ -411,8 +411,7 @@ static inline void urb_list_move_last(st
 	urb_entry_t *urb_entry = __urb_list_entry(urb, epid);
 	assert(urb_entry);
 
-	list_del(&urb_entry->list);
-	list_add_tail(&urb_entry->list, &urb_list[epid]);
+	list_move_tail(&urb_entry->list, &urb_list[epid]);
 }
 
 /* Get the next urb in the list. */
Index: 2.6-git/drivers/usb/serial/whiteheat.c
===================================================================
--- 2.6-git.orig/drivers/usb/serial/whiteheat.c
+++ 2.6-git/drivers/usb/serial/whiteheat.c
@@ -685,19 +685,16 @@ static void whiteheat_close(struct usb_s
 		wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
 		urb = wrap->urb;
 		usb_kill_urb(urb);
-		list_del(tmp);
-		list_add(tmp, &info->rx_urbs_free);
-	}
-	list_for_each_safe(tmp, tmp2, &info->rx_urb_q) {
-		list_del(tmp);
-		list_add(tmp, &info->rx_urbs_free);
+		list_move(tmp, &info->rx_urbs_free);
 	}
+	list_for_each_safe(tmp, tmp2, &info->rx_urb_q)
+		list_move(tmp, &info->rx_urbs_free);
+
 	list_for_each_safe(tmp, tmp2, &info->tx_urbs_submitted) {
 		wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
 		urb = wrap->urb;
 		usb_kill_urb(urb);
-		list_del(tmp);
-		list_add(tmp, &info->tx_urbs_free);
+		list_move(tmp, &info->tx_urbs_free);
 	}
 	spin_unlock_irqrestore(&info->lock, flags);
 
@@ -1079,8 +1076,7 @@ static void whiteheat_write_callback(str
 		err("%s - Not my urb!", __FUNCTION__);
 		return;
 	}
-	list_del(&wrap->list);
-	list_add(&wrap->list, &info->tx_urbs_free);
+	list_move(&wrap->list, &info->tx_urbs_free);
 	spin_unlock(&info->lock);
 
 	if (urb->status) {
@@ -1372,8 +1368,7 @@ static int start_port_read(struct usb_se
 				wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
 				urb = wrap->urb;
 				usb_kill_urb(urb);
-				list_del(tmp);
-				list_add(tmp, &info->rx_urbs_free);
+				list_move(tmp, &info->rx_urbs_free);
 			}
 			break;
 		}

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [patch 8/8] fs: use list_move()
  2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
                   ` (6 preceding siblings ...)
  2006-03-30  8:16 ` [patch 7/8] drivers: " Akinobu Mita
@ 2006-03-30  8:16 ` Akinobu Mita
  2006-03-30  8:22   ` [-mm patch] reiser4fs: " Akinobu Mita
                     ` (3 more replies)
  7 siblings, 4 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: akpm, Ian Kent, Joel Becker, Neil Brown, Hans Reiser,
	Urban Widmark, David Howells, Mark Fasheh, Akinobu Mita

[-- Attachment #1: list-move-fs.patch --]
[-- Type: text/plain, Size: 18674 bytes --]

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B) under fs/.

CC: Ian Kent <raven@themaw.net>
CC: Joel Becker <joel.becker@oracle.com>
CC: Neil Brown <neilb@cse.unsw.edu.au>
CC: Hans Reiser <reiserfs-dev@namesys.com>
CC: Urban Widmark <urban@teststation.com>
CC: David Howells <dhowells@redhat.com>
CC: Mark Fasheh <mark.fasheh@oracle.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 fs/afs/cell.c              |    3 +--
 fs/afs/kafsasyncd.c        |    9 +++------
 fs/afs/server.c            |    6 ++----
 fs/afs/vlocation.c         |    6 ++----
 fs/afs/vnode.c             |    3 +--
 fs/autofs4/expire.c        |    3 +--
 fs/configfs/dir.c          |    6 ++----
 fs/jffs2/erase.c           |   15 +++++----------
 fs/jffs2/nodemgmt.c        |    3 +--
 fs/jffs2/wbuf.c            |    3 +--
 fs/nfsd/nfs4state.c        |    3 +--
 fs/nfsd/nfscache.c         |    3 +--
 fs/ocfs2/dlm/dlmast.c      |    3 +--
 fs/ocfs2/dlm/dlmconvert.c  |    9 +++------
 fs/ocfs2/dlm/dlmlock.c     |    3 +--
 fs/ocfs2/dlm/dlmrecovery.c |    9 +++------
 fs/ocfs2/dlm/dlmthread.c   |    6 ++----
 fs/ocfs2/dlm/dlmunlock.c   |    3 +--
 fs/ocfs2/journal.c         |    3 +--
 fs/reiserfs/journal.c      |    6 ++----
 fs/smbfs/request.c         |    6 ++----
 fs/smbfs/smbiod.c          |    3 +--
 22 files changed, 38 insertions(+), 76 deletions(-)

Index: 2.6-git/fs/autofs4/expire.c
===================================================================
--- 2.6-git.orig/fs/autofs4/expire.c
+++ 2.6-git/fs/autofs4/expire.c
@@ -370,8 +370,7 @@ next:
 		DPRINTK("returning %p %.*s",
 			expired, (int)expired->d_name.len, expired->d_name.name);
 		spin_lock(&dcache_lock);
-		list_del(&expired->d_parent->d_subdirs);
-		list_add(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
+		list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
 		spin_unlock(&dcache_lock);
 		return expired;
 	}
Index: 2.6-git/fs/configfs/dir.c
===================================================================
--- 2.6-git.orig/fs/configfs/dir.c
+++ 2.6-git/fs/configfs/dir.c
@@ -954,8 +954,7 @@ static int configfs_readdir(struct file 
 			/* fallthrough */
 		default:
 			if (filp->f_pos == 2) {
-				list_del(q);
-				list_add(q, &parent_sd->s_children);
+				list_move(q, &parent_sd->s_children);
 			}
 			for (p=q->next; p!= &parent_sd->s_children; p=p->next) {
 				struct configfs_dirent *next;
@@ -978,8 +977,7 @@ static int configfs_readdir(struct file 
 						 dt_type(next)) < 0)
 					return 0;
 
-				list_del(q);
-				list_add(q, p);
+				list_move(q, p);
 				p = q;
 				filp->f_pos++;
 			}
Index: 2.6-git/fs/nfsd/nfs4state.c
===================================================================
--- 2.6-git.orig/fs/nfsd/nfs4state.c
+++ 2.6-git/fs/nfsd/nfs4state.c
@@ -482,8 +482,7 @@ move_to_confirmed(struct nfs4_client *cl
 
 	dprintk("NFSD: move_to_confirm nfs4_client %p\n", clp);
 	list_del_init(&clp->cl_strhash);
-	list_del_init(&clp->cl_idhash);
-	list_add(&clp->cl_idhash, &conf_id_hashtbl[idhashval]);
+	list_move(&clp->cl_idhash, &conf_id_hashtbl[idhashval]);
 	strhashval = clientstr_hashval(clp->cl_recdir);
 	list_add(&clp->cl_strhash, &conf_str_hashtbl[strhashval]);
 	renew_client(clp);
Index: 2.6-git/fs/nfsd/nfscache.c
===================================================================
--- 2.6-git.orig/fs/nfsd/nfscache.c
+++ 2.6-git/fs/nfsd/nfscache.c
@@ -103,8 +103,7 @@ nfsd_cache_shutdown(void)
 static void
 lru_put_end(struct svc_cacherep *rp)
 {
-	list_del(&rp->c_lru);
-	list_add_tail(&rp->c_lru, &lru_head);
+	list_move_tail(&rp->c_lru, &lru_head);
 }
 
 /*
Index: 2.6-git/fs/reiserfs/journal.c
===================================================================
--- 2.6-git.orig/fs/reiserfs/journal.c
+++ 2.6-git/fs/reiserfs/journal.c
@@ -834,8 +834,7 @@ static int write_ordered_buffers(spinloc
 		get_bh(bh);
 		if (test_set_buffer_locked(bh)) {
 			if (!buffer_dirty(bh)) {
-				list_del_init(&jh->list);
-				list_add(&jh->list, &tmp);
+				list_move(&jh->list, &tmp);
 				goto loop_next;
 			}
 			spin_unlock(lock);
@@ -855,8 +854,7 @@ static int write_ordered_buffers(spinloc
 			ret = -EIO;
 		}
 		if (buffer_dirty(bh)) {
-			list_del_init(&jh->list);
-			list_add(&jh->list, &tmp);
+			list_move(&jh->list, &tmp);
 			add_to_chunk(&chunk, bh, lock, write_ordered_chunk);
 		} else {
 			reiserfs_free_jh(bh);
Index: 2.6-git/fs/smbfs/request.c
===================================================================
--- 2.6-git.orig/fs/smbfs/request.c
+++ 2.6-git/fs/smbfs/request.c
@@ -398,8 +398,7 @@ static int smb_request_send_req(struct s
 	if (!(req->rq_flags & SMB_REQ_TRANSMITTED))
 		goto out;
 
-	list_del_init(&req->rq_queue);
-	list_add_tail(&req->rq_queue, &server->recvq);
+	list_move_tail(&req->rq_queue, &server->recvq);
 	result = 1;
 out:
 	return result;
@@ -433,8 +432,7 @@ int smb_request_send_server(struct smb_s
 	result = smb_request_send_req(req);
 	if (result < 0) {
 		server->conn_error = result;
-		list_del_init(&req->rq_queue);
-		list_add(&req->rq_queue, &server->xmitq);
+		list_move(&req->rq_queue, &server->xmitq);
 		result = -EIO;
 		goto out;
 	}
Index: 2.6-git/fs/smbfs/smbiod.c
===================================================================
--- 2.6-git.orig/fs/smbfs/smbiod.c
+++ 2.6-git/fs/smbfs/smbiod.c
@@ -183,8 +183,7 @@ int smbiod_retry(struct smb_sb_info *ser
 		if (req->rq_flags & SMB_REQ_RETRY) {
 			/* must move the request to the xmitq */
 			VERBOSE("retrying request %p on recvq\n", req);
-			list_del(&req->rq_queue);
-			list_add(&req->rq_queue, &server->xmitq);
+			list_move(&req->rq_queue, &server->xmitq);
 			continue;
 		}
 #endif
Index: 2.6-git/fs/afs/cell.c
===================================================================
--- 2.6-git.orig/fs/afs/cell.c
+++ 2.6-git/fs/afs/cell.c
@@ -413,8 +413,7 @@ int afs_server_find_by_peer(const struct
 
 	/* we found it in the graveyard - resurrect it */
  found_dead_server:
-	list_del(&server->link);
-	list_add_tail(&server->link, &cell->sv_list);
+	list_move_tail(&server->link, &cell->sv_list);
 	afs_get_server(server);
 	afs_kafstimod_del_timer(&server->timeout);
 	spin_unlock(&cell->sv_gylock);
Index: 2.6-git/fs/afs/kafsasyncd.c
===================================================================
--- 2.6-git.orig/fs/afs/kafsasyncd.c
+++ 2.6-git/fs/afs/kafsasyncd.c
@@ -136,8 +136,7 @@ static int kafsasyncd(void *arg)
 			if (!list_empty(&kafsasyncd_async_attnq)) {
 				op = list_entry(kafsasyncd_async_attnq.next,
 						struct afs_async_op, link);
-				list_del(&op->link);
-				list_add_tail(&op->link,
+				list_move_tail(&op->link,
 					      &kafsasyncd_async_busyq);
 			}
 
@@ -204,8 +203,7 @@ void afs_kafsasyncd_begin_op(struct afs_
 	init_waitqueue_entry(&op->waiter, kafsasyncd_task);
 	add_wait_queue(&op->call->waitq, &op->waiter);
 
-	list_del(&op->link);
-	list_add_tail(&op->link, &kafsasyncd_async_busyq);
+	list_move_tail(&op->link, &kafsasyncd_async_busyq);
 
 	spin_unlock(&kafsasyncd_async_lock);
 
@@ -223,8 +221,7 @@ void afs_kafsasyncd_attend_op(struct afs
 
 	spin_lock(&kafsasyncd_async_lock);
 
-	list_del(&op->link);
-	list_add_tail(&op->link, &kafsasyncd_async_attnq);
+	list_move_tail(&op->link, &kafsasyncd_async_attnq);
 
 	spin_unlock(&kafsasyncd_async_lock);
 
Index: 2.6-git/fs/afs/server.c
===================================================================
--- 2.6-git.orig/fs/afs/server.c
+++ 2.6-git/fs/afs/server.c
@@ -123,8 +123,7 @@ int afs_server_lookup(struct afs_cell *c
  resurrect_server:
 	_debug("resurrecting server");
 
-	list_del(&zombie->link);
-	list_add_tail(&zombie->link, &cell->sv_list);
+	list_move_tail(&zombie->link, &cell->sv_list);
 	afs_get_server(zombie);
 	afs_kafstimod_del_timer(&zombie->timeout);
 	spin_unlock(&cell->sv_gylock);
@@ -168,8 +167,7 @@ void afs_put_server(struct afs_server *s
 	}
 
 	spin_lock(&cell->sv_gylock);
-	list_del(&server->link);
-	list_add_tail(&server->link, &cell->sv_graveyard);
+	list_move_tail(&server->link, &cell->sv_graveyard);
 
 	/* time out in 10 secs */
 	afs_kafstimod_add_timer(&server->timeout, 10 * HZ);
Index: 2.6-git/fs/afs/vlocation.c
===================================================================
--- 2.6-git.orig/fs/afs/vlocation.c
+++ 2.6-git/fs/afs/vlocation.c
@@ -326,8 +326,7 @@ int afs_vlocation_lookup(struct afs_cell
 	/* found in the graveyard - resurrect */
 	_debug("found in graveyard");
 	atomic_inc(&vlocation->usage);
-	list_del(&vlocation->link);
-	list_add_tail(&vlocation->link, &cell->vl_list);
+	list_move_tail(&vlocation->link, &cell->vl_list);
 	spin_unlock(&cell->vl_gylock);
 
 	afs_kafstimod_del_timer(&vlocation->timeout);
@@ -478,8 +477,7 @@ static void __afs_put_vlocation(struct a
 	}
 
 	/* move to graveyard queue */
-	list_del(&vlocation->link);
-	list_add_tail(&vlocation->link,&cell->vl_graveyard);
+	list_move_tail(&vlocation->link,&cell->vl_graveyard);
 
 	/* remove from pending timeout queue (refcounted if actually being
 	 * updated) */
Index: 2.6-git/fs/afs/vnode.c
===================================================================
--- 2.6-git.orig/fs/afs/vnode.c
+++ 2.6-git/fs/afs/vnode.c
@@ -104,8 +104,7 @@ static void afs_vnode_finalise_status_up
 					vnode->cb_expiry * HZ);
 
 		spin_lock(&afs_cb_hash_lock);
-		list_del(&vnode->cb_hash_link);
-		list_add_tail(&vnode->cb_hash_link,
+		list_move_tail(&vnode->cb_hash_link,
 			      &afs_cb_hash(server, &vnode->fid));
 		spin_unlock(&afs_cb_hash_lock);
 
Index: 2.6-git/fs/jffs2/erase.c
===================================================================
--- 2.6-git.orig/fs/jffs2/erase.c
+++ 2.6-git/fs/jffs2/erase.c
@@ -54,8 +54,7 @@ static void jffs2_erase_block(struct jff
 	if (!instr) {
 		printk(KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n");
 		spin_lock(&c->erase_completion_lock);
-		list_del(&jeb->list);
-		list_add(&jeb->list, &c->erase_pending_list);
+		list_move(&jeb->list, &c->erase_pending_list);
 		c->erasing_size -= c->sector_size;
 		c->dirty_size += c->sector_size;
 		jeb->dirty_size = c->sector_size;
@@ -87,8 +86,7 @@ static void jffs2_erase_block(struct jff
 		/* Erase failed immediately. Refile it on the list */
 		D1(printk(KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n", jeb->offset, ret));
 		spin_lock(&c->erase_completion_lock);
-		list_del(&jeb->list);
-		list_add(&jeb->list, &c->erase_pending_list);
+		list_move(&jeb->list, &c->erase_pending_list);
 		c->erasing_size -= c->sector_size;
 		c->dirty_size += c->sector_size;
 		jeb->dirty_size = c->sector_size;
@@ -162,8 +160,7 @@ static void jffs2_erase_succeeded(struct
 {
 	D1(printk(KERN_DEBUG "Erase completed successfully at 0x%08x\n", jeb->offset));
 	spin_lock(&c->erase_completion_lock);
-	list_del(&jeb->list);
-	list_add_tail(&jeb->list, &c->erase_complete_list);
+	list_move_tail(&jeb->list, &c->erase_complete_list);
 	spin_unlock(&c->erase_completion_lock);
 	/* Ensure that kupdated calls us again to mark them clean */
 	jffs2_erase_pending_trigger(c);
@@ -179,8 +176,7 @@ static void jffs2_erase_failed(struct jf
 		if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) {
 			/* We'd like to give this block another try. */
 			spin_lock(&c->erase_completion_lock);
-			list_del(&jeb->list);
-			list_add(&jeb->list, &c->erase_pending_list);
+			list_move(&jeb->list, &c->erase_pending_list);
 			c->erasing_size -= c->sector_size;
 			c->dirty_size += c->sector_size;
 			jeb->dirty_size = c->sector_size;
@@ -192,8 +188,7 @@ static void jffs2_erase_failed(struct jf
 	spin_lock(&c->erase_completion_lock);
 	c->erasing_size -= c->sector_size;
 	c->bad_size += c->sector_size;
-	list_del(&jeb->list);
-	list_add(&jeb->list, &c->bad_list);
+	list_move(&jeb->list, &c->bad_list);
 	c->nr_erasing_blocks--;
 	spin_unlock(&c->erase_completion_lock);
 	wake_up(&c->erase_wait);
Index: 2.6-git/fs/jffs2/nodemgmt.c
===================================================================
--- 2.6-git.orig/fs/jffs2/nodemgmt.c
+++ 2.6-git/fs/jffs2/nodemgmt.c
@@ -207,8 +207,7 @@ static int jffs2_find_nextblock(struct j
 			struct jffs2_eraseblock *ejeb;
 
 			ejeb = list_entry(c->erasable_list.next, struct jffs2_eraseblock, list);
-			list_del(&ejeb->list);
-			list_add_tail(&ejeb->list, &c->erase_pending_list);
+			list_move_tail(&ejeb->list, &c->erase_pending_list);
 			c->nr_erasing_blocks++;
 			jffs2_erase_pending_trigger(c);
 			D1(printk(KERN_DEBUG "jffs2_find_nextblock: Triggering erase of erasable block at 0x%08x\n",
Index: 2.6-git/fs/jffs2/wbuf.c
===================================================================
--- 2.6-git.orig/fs/jffs2/wbuf.c
+++ 2.6-git/fs/jffs2/wbuf.c
@@ -382,8 +382,7 @@ static void jffs2_wbuf_recover(struct jf
 	if (first_raw == &jeb->first_node) {
 		jeb->last_node = NULL;
 		D1(printk(KERN_DEBUG "Failing block at %08x is now empty. Moving to erase_pending_list\n", jeb->offset));
-		list_del(&jeb->list);
-		list_add(&jeb->list, &c->erase_pending_list);
+		list_move(&jeb->list, &c->erase_pending_list);
 		c->nr_erasing_blocks++;
 		jffs2_erase_pending_trigger(c);
 	}
Index: 2.6-git/fs/ocfs2/dlm/dlmast.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmast.c
+++ 2.6-git/fs/ocfs2/dlm/dlmast.c
@@ -381,8 +381,7 @@ do_ast:
 	ret = DLM_NORMAL;
 	if (past->type == DLM_AST) {
 		/* do not alter lock refcount.  switching lists. */
-		list_del_init(&lock->list);
-		list_add_tail(&lock->list, &res->granted);
+		list_move_tail(&lock->list, &res->granted);
 		mlog(0, "ast: adding to granted list... type=%d, "
 			  "convert_type=%d\n", lock->ml.type, lock->ml.convert_type);
 		if (lock->ml.convert_type != LKM_IVMODE) {
Index: 2.6-git/fs/ocfs2/dlm/dlmconvert.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmconvert.c
+++ 2.6-git/fs/ocfs2/dlm/dlmconvert.c
@@ -231,8 +231,7 @@ switch_queues:
 
 	lock->ml.convert_type = type;
 	/* do not alter lock refcount.  switching lists. */
-	list_del_init(&lock->list);
-	list_add_tail(&lock->list, &res->converting);
+	list_move_tail(&lock->list, &res->converting);
 
 unlock_exit:
 	spin_unlock(&lock->spinlock);
@@ -248,8 +247,7 @@ void dlm_revert_pending_convert(struct d
 				struct dlm_lock *lock)
 {
 	/* do not alter lock refcount.  switching lists. */
-	list_del_init(&lock->list);
-	list_add_tail(&lock->list, &res->granted);
+	list_move_tail(&lock->list, &res->granted);
 	lock->ml.convert_type = LKM_IVMODE;
 	lock->lksb->flags &= ~(DLM_LKSB_GET_LVB|DLM_LKSB_PUT_LVB);
 }
@@ -294,8 +292,7 @@ enum dlm_status dlmconvert_remote(struct
 	res->state |= DLM_LOCK_RES_IN_PROGRESS;
 	/* move lock to local convert queue */
 	/* do not alter lock refcount.  switching lists. */
-	list_del_init(&lock->list);
-	list_add_tail(&lock->list, &res->converting);
+	list_move_tail(&lock->list, &res->converting);
 	lock->convert_pending = 1;
 	lock->ml.convert_type = type;
 
Index: 2.6-git/fs/ocfs2/dlm/dlmlock.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmlock.c
+++ 2.6-git/fs/ocfs2/dlm/dlmlock.c
@@ -239,8 +239,7 @@ static enum dlm_status dlmlock_remote(st
 		mlog(0, "%s: $RECOVERY lock for this node (%u) is "
 		     "mastered by %u; got lock, manually granting (no ast)\n",
 		     dlm->name, dlm->node_num, res->owner);
-		list_del_init(&lock->list);
-		list_add_tail(&lock->list, &res->granted);
+		list_move_tail(&lock->list, &res->granted);
 	}
 	spin_unlock(&res->spinlock);
 
Index: 2.6-git/fs/ocfs2/dlm/dlmrecovery.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmrecovery.c
+++ 2.6-git/fs/ocfs2/dlm/dlmrecovery.c
@@ -905,13 +905,11 @@ static void dlm_move_reco_locks_to_list(
 			mlog(0, "found lockres owned by dead node while "
 				  "doing recovery for node %u. sending it.\n",
 				  dead_node);
-			list_del_init(&res->recovering);
-			list_add_tail(&res->recovering, list);
+			list_move_tail(&res->recovering, list);
 		} else if (res->owner == DLM_LOCK_RES_OWNER_UNKNOWN) {
 			mlog(0, "found UNKNOWN owner while doing recovery "
 				  "for node %u. sending it.\n", dead_node);
-			list_del_init(&res->recovering);
-			list_add_tail(&res->recovering, list);
+			list_move_tail(&res->recovering, list);
 		}
 	}
 	spin_unlock(&dlm->spinlock);
@@ -1529,8 +1527,7 @@ static int dlm_process_recovery_data(str
 
 			/* move the lock to its proper place */
 			/* do not alter lock refcount.  switching lists. */
-			list_del_init(&lock->list);
-			list_add_tail(&lock->list, queue);
+			list_move_tail(&lock->list, queue);
 			spin_unlock(&res->spinlock);
 
 			mlog(0, "just reordered a local lock!\n");
Index: 2.6-git/fs/ocfs2/dlm/dlmthread.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmthread.c
+++ 2.6-git/fs/ocfs2/dlm/dlmthread.c
@@ -318,8 +318,7 @@ converting:
 
 		target->ml.type = target->ml.convert_type;
 		target->ml.convert_type = LKM_IVMODE;
-		list_del_init(&target->list);
-		list_add_tail(&target->list, &res->granted);
+		list_move_tail(&target->list, &res->granted);
 
 		BUG_ON(!target->lksb);
 		target->lksb->status = DLM_NORMAL;
@@ -380,8 +379,7 @@ blocked:
 		     target->ml.type, target->ml.node);
 
 		// target->ml.type is already correct
-		list_del_init(&target->list);
-		list_add_tail(&target->list, &res->granted);
+		list_move_tail(&target->list, &res->granted);
 
 		BUG_ON(!target->lksb);
 		target->lksb->status = DLM_NORMAL;
Index: 2.6-git/fs/ocfs2/dlm/dlmunlock.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/dlm/dlmunlock.c
+++ 2.6-git/fs/ocfs2/dlm/dlmunlock.c
@@ -271,8 +271,7 @@ void dlm_commit_pending_unlock(struct dl
 void dlm_commit_pending_cancel(struct dlm_lock_resource *res,
 			       struct dlm_lock *lock)
 {
-	list_del_init(&lock->list);
-	list_add_tail(&lock->list, &res->granted);
+	list_move_tail(&lock->list, &res->granted);
 	lock->ml.convert_type = LKM_IVMODE;
 }
 
Index: 2.6-git/fs/ocfs2/journal.c
===================================================================
--- 2.6-git.orig/fs/ocfs2/journal.c
+++ 2.6-git/fs/ocfs2/journal.c
@@ -222,8 +222,7 @@ void ocfs2_handle_add_inode(struct ocfs2
 	BUG_ON(!list_empty(&OCFS2_I(inode)->ip_handle_list));
 
 	OCFS2_I(inode)->ip_handle = handle;
-	list_del(&(OCFS2_I(inode)->ip_handle_list));
-	list_add_tail(&(OCFS2_I(inode)->ip_handle_list), &(handle->inode_list));
+	list_move_tail(&(OCFS2_I(inode)->ip_handle_list), &(handle->inode_list));
 }
 
 static void ocfs2_handle_unlock_inodes(struct ocfs2_journal_handle *handle)

--

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [-mm patch] reiser4fs: use list_move()
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
@ 2006-03-30  8:22   ` Akinobu Mita
  2006-03-30 10:18   ` [patch 8/8] fs: " David Howells
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-30  8:22 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, Hans Reiser

This patch converts the combination of list_del(A) and list_add(A, B)
to list_move(A, B) under fs/reiser4.

CC: Hans Reiser <reiserfs-dev@namesys.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 fs/reiser4/flush.c                        |    3 +--
 fs/reiser4/flush_queue.c                  |    3 +--
 fs/reiser4/plugin/item/extent_flush_ops.c |    6 ++----
 fs/reiser4/search.c                       |    9 +++------
 fs/reiser4/txnmgr.c                       |    9 +++------
 5 files changed, 10 insertions(+), 20 deletions(-)

Index: work/fs/reiser4/flush.c
===================================================================
--- work.orig/fs/reiser4/flush.c
+++ work/fs/reiser4/flush.c
@@ -940,8 +940,7 @@ static jnode * find_flush_start_jnode(
 
 		if (JF_ISSET(node, JNODE_WRITEBACK)) {
 			/* move node to the end of atom's writeback list */
-			list_del_init(&node->capture_link);
-			list_add_tail(&node->capture_link, ATOM_WB_LIST(atom));
+			list_move_tail(&node->capture_link, ATOM_WB_LIST(atom));
 
 			/*
 			 * jnode is not necessarily on dirty list: if it was dirtied when
Index: work/fs/reiser4/flush_queue.c
===================================================================
--- work.orig/fs/reiser4/flush_queue.c
+++ work/fs/reiser4/flush_queue.c
@@ -214,8 +214,7 @@ void queue_jnode(flush_queue_t * fq, jno
 	assert("vs-1481", NODE_LIST(node) != FQ_LIST);
 
 	mark_jnode_queued(fq, node);
-	list_del(&node->capture_link);
-	list_add_tail(&node->capture_link, ATOM_FQ_LIST(fq));
+	list_move_tail(&node->capture_link, ATOM_FQ_LIST(fq));
 
 	ON_DEBUG(count_jnode(node->atom, node, NODE_LIST(node),
 			     FQ_LIST, 1));
Index: work/fs/reiser4/plugin/item/extent_flush_ops.c
===================================================================
--- work.orig/fs/reiser4/plugin/item/extent_flush_ops.c
+++ work/fs/reiser4/plugin/item/extent_flush_ops.c
@@ -470,8 +470,7 @@ static void protect_reloc_node(struct li
 	assert_spin_locked(&(node->guard));
 
 	JF_SET(node, JNODE_EPROTECTED);
-	list_del_init(&node->capture_link);
-	list_add_tail(&node->capture_link, jnodes);
+	list_move_tail(&node->capture_link, jnodes);
 	ON_DEBUG(count_jnode(node->atom, node, DIRTY_LIST, PROTECT_LIST, 0));
 }
 
@@ -751,8 +750,7 @@ static void make_node_ovrwr(struct list_
 	assert("zam-918", !JF_ISSET(node, JNODE_OVRWR));
 
 	JF_SET(node, JNODE_OVRWR);
-	list_del_init(&node->capture_link);
-	list_add_tail(&node->capture_link, jnodes);
+	list_move_tail(&node->capture_link, jnodes);
 	ON_DEBUG(count_jnode(node->atom, node, DIRTY_LIST, OVRWR_LIST, 0));
 
 	spin_unlock_jnode(node);
Index: work/fs/reiser4/search.c
===================================================================
--- work.orig/fs/reiser4/search.c
+++ work/fs/reiser4/search.c
@@ -153,8 +153,7 @@ void cbk_cache_invalidate(const znode * 
 	write_lock(&(cache->guard));
 	for (i = 0, slot = cache->slot; i < cache->nr_slots; ++i, ++slot) {
 		if (slot->node == node) {
-			list_del(&slot->lru);
-			list_add_tail(&slot->lru, &cache->lru);
+			list_move_tail(&slot->lru, &cache->lru);
 			slot->node = NULL;
 			break;
 		}
@@ -191,8 +190,7 @@ static void cbk_cache_add(const znode *n
 		slot = list_entry(cache->lru.prev, cbk_cache_slot, lru);
 		slot->node = (znode *) node;
 	}
-	list_del(&slot->lru);
-	list_add(&slot->lru, &cache->lru);
+	list_move(&slot->lru, &cache->lru);
 	write_unlock(&(cache->guard));
 	assert("nikita-2473", cbk_cache_invariant(cache));
 }
@@ -1257,8 +1255,7 @@ static int cbk_cache_scan_slots(cbk_hand
 			if (slot->node == h->active_lh->node /*node */ ) {
 				/* if this node is still in cbk cache---move
 				   its slot to the head of the LRU list. */
-				list_del(&slot->lru);
-				list_add(&slot->lru, &cache->lru);
+				list_move(&slot->lru, &cache->lru);
 			}
 			write_unlock(&(cache->guard));
 		}
Index: work/fs/reiser4/txnmgr.c
===================================================================
--- work.orig/fs/reiser4/txnmgr.c
+++ work/fs/reiser4/txnmgr.c
@@ -981,8 +981,7 @@ static void dispatch_wb_list(txn_atom * 
 				queue_jnode(fq, cur);
 			} else {
 				/* move jnode to atom's clean list */
-				list_del(&cur->capture_link);
-				list_add_tail(&cur->capture_link,
+				list_move_tail(&cur->capture_link,
 					      ATOM_CLEAN_LIST(atom));
 			}
 		}
@@ -2474,8 +2473,7 @@ static void do_jnode_make_dirty(jnode * 
 		assert("nikita-2606", level <= REAL_MAX_ZTREE_HEIGHT);
 
 		/* move node to atom's dirty list */
-		list_del(&node->capture_link);
-		list_add_tail(&node->capture_link, ATOM_DIRTY_LIST(atom, level));
+		list_move_tail(&node->capture_link, ATOM_DIRTY_LIST(atom, level));
 		ON_DEBUG(count_jnode
 			 (atom, node, NODE_LIST(node), DIRTY_LIST, 1));
 		/*
@@ -2748,8 +2746,7 @@ void jnode_make_wander_nolock(jnode * no
 
 	JF_SET(node, JNODE_OVRWR);
 	/* move node to atom's overwrite list */
-	list_del(&node->capture_link);
-	list_add_tail(&node->capture_link, ATOM_OVRWR_LIST(atom));
+	list_move_tail(&node->capture_link, ATOM_OVRWR_LIST(atom));
 	ON_DEBUG(count_jnode(atom, node, DIRTY_LIST, OVRWR_LIST, 1));
 }
 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 3/8] use list_add_tail() instead of list_add()
  2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
@ 2006-03-30  8:26   ` Karsten Keil
  2006-03-30  8:30   ` Jan Kara
  2006-03-31  3:54   ` Akinobu Mita
  2 siblings, 0 replies; 22+ messages in thread
From: Karsten Keil @ 2006-03-30  8:26 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Jan Harkes, Jan Kara, David Woodhouse,
	Sridhar Samudrala

On Thu, Mar 30, 2006 at 04:16:08PM +0800, Akinobu Mita wrote:

This patch converts list_add(A, B.prev) to list_add_tail(A, &B)
for readability.

Acked-by: Karsten Keil <kkeil@suse.de>
for the ISDN/CAPI part.


CC: Jan Harkes <jaharkes@cs.cmu.edu>
CC: Jan Kara <jack@suse.cz>
CC: David Woodhouse <dwmw2@infradead.org>
CC: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>

 drivers/isdn/capi/capi.c |    2 +-
 fs/coda/psdev.c          |    2 +-
 fs/coda/upcall.c         |    2 +-
 fs/dcache.c              |    2 +-
 fs/dquot.c               |    4 ++--
 fs/jffs2/compr.c         |    4 ++--
 net/sctp/outqueue.c      |    2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

Index: 2.6-git/drivers/isdn/capi/capi.c
===================================================================
--- 2.6-git.orig/drivers/isdn/capi/capi.c
+++ 2.6-git/drivers/isdn/capi/capi.c
@@ -238,7 +238,7 @@ static struct capiminor *capiminor_alloc
 		
 		if (minor < capi_ttyminors) {
 			mp->minor = minor;
-			list_add(&mp->list, p->list.prev);
+			list_add_tail(&mp->list, &p->list);
 		}
 	}
 		write_unlock_irqrestore(&capiminor_list_lock, flags);



-- 
Karsten Keil
SuSE Labs
ISDN development

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 3/8] use list_add_tail() instead of list_add()
  2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
  2006-03-30  8:26   ` Karsten Keil
@ 2006-03-30  8:30   ` Jan Kara
  2006-03-30 10:25     ` David Woodhouse
  2006-03-31  3:54   ` Akinobu Mita
  2 siblings, 1 reply; 22+ messages in thread
From: Jan Kara @ 2006-03-30  8:30 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Karsten Keil, Jan Harkes, Jan Kara,
	David Woodhouse, Sridhar Samudrala

> This patch converts list_add(A, B.prev) to list_add_tail(A, &B)
> for readability.
> 
> CC: Karsten Keil <kkeil@suse.de>
> CC: Jan Harkes <jaharkes@cs.cmu.edu>
> CC: Jan Kara <jack@suse.cz>
> CC: David Woodhouse <dwmw2@infradead.org>
> CC: Sridhar Samudrala <sri@us.ibm.com>
> Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
  Acked-by: Jan Kara <jack@suse.cz>

								Honza
-- 
Jan Kara <jack@suse.cz>
SuSE CR Labs

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 6/8] net/rxrpc: use list_move()
  2006-03-30  8:16 ` [patch 6/8] net/rxrpc: " Akinobu Mita
@ 2006-03-30 10:17   ` David Howells
  0 siblings, 0 replies; 22+ messages in thread
From: David Howells @ 2006-03-30 10:17 UTC (permalink / raw)
  To: Akinobu Mita; +Cc: linux-kernel, akpm, David Howells

Akinobu Mita <mita@miraclelinux.com> wrote:

> This patch converts the combination of list_del(A) and list_add(A, B)
> to list_move(A, B) under net/rxrpc.

Acked-By: David Howells <dhowells@redhat.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 8/8] fs: use list_move()
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
  2006-03-30  8:22   ` [-mm patch] reiser4fs: " Akinobu Mita
@ 2006-03-30 10:18   ` David Howells
  2006-03-30 19:07   ` Joel Becker
  2006-03-30 19:15   ` Mark Fasheh
  3 siblings, 0 replies; 22+ messages in thread
From: David Howells @ 2006-03-30 10:18 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Ian Kent, Joel Becker, Neil Brown,
	Hans Reiser, Urban Widmark, David Howells, Mark Fasheh

Akinobu Mita <mita@miraclelinux.com> wrote:

> This patch converts the combination of list_del(A) and list_add(A, B)
> to list_move(A, B) under fs/.

Acked-By: David Howells <dhowells@redhat.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 3/8] use list_add_tail() instead of list_add()
  2006-03-30  8:30   ` Jan Kara
@ 2006-03-30 10:25     ` David Woodhouse
  0 siblings, 0 replies; 22+ messages in thread
From: David Woodhouse @ 2006-03-30 10:25 UTC (permalink / raw)
  To: Jan Kara
  Cc: Akinobu Mita, linux-kernel, akpm, Karsten Keil, Jan Harkes,
	Sridhar Samudrala

On Thu, 2006-03-30 at 10:30 +0200, Jan Kara wrote:
> > CC: Karsten Keil <kkeil@suse.de>
> > CC: Jan Harkes <jaharkes@cs.cmu.edu>
> > CC: Jan Kara <jack@suse.cz>
> > CC: David Woodhouse <dwmw2@infradead.org>
> > CC: Sridhar Samudrala <sri@us.ibm.com>
> > Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
>   Acked-by: Jan Kara <jack@suse.cz>

<AOL/>

-- 
dwmw2


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 7/8] drivers: use list_move()
  2006-03-30  8:16 ` [patch 7/8] drivers: " Akinobu Mita
@ 2006-03-30 12:11   ` Matthew Wilcox
  0 siblings, 0 replies; 22+ messages in thread
From: Matthew Wilcox @ 2006-03-30 12:11 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Corey Minyard, Ben Collins, Roland Dreier,
	Alasdair Kergon, Gerd Knorr, Paul Mackerras, Frank Pavlic,
	Andrew Vasquez, Mikael Starvik, Greg Kroah-Hartman

On Thu, Mar 30, 2006 at 04:16:12PM +0800, Akinobu Mita wrote:
>  drivers/scsi/ncr53c8xx.c                       |    3 +--

> Index: 2.6-git/drivers/scsi/ncr53c8xx.c
> ===================================================================
> --- 2.6-git.orig/drivers/scsi/ncr53c8xx.c
> +++ 2.6-git/drivers/scsi/ncr53c8xx.c
> @@ -5118,8 +5118,7 @@ static void ncr_ccb_skipped(struct ncb *
>  		cp->host_status &= ~HS_SKIPMASK;
>  		cp->start.schedule.l_paddr = 
>  			cpu_to_scr(NCB_SCRIPT_PHYS (np, select));
> -		list_del(&cp->link_ccbq);
> -		list_add_tail(&cp->link_ccbq, &lp->skip_ccbq);
> +		list_move_tail(&cp->link_ccbq, &lp->skip_ccbq);
>  		if (cp->queued) {
>  			--lp->queuedccbs;
>  		}

ACK.  Thanks!

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 8/8] fs: use list_move()
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
  2006-03-30  8:22   ` [-mm patch] reiser4fs: " Akinobu Mita
  2006-03-30 10:18   ` [patch 8/8] fs: " David Howells
@ 2006-03-30 19:07   ` Joel Becker
  2006-04-03  1:04     ` Ian Kent
  2006-03-30 19:15   ` Mark Fasheh
  3 siblings, 1 reply; 22+ messages in thread
From: Joel Becker @ 2006-03-30 19:07 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Ian Kent, Neil Brown, Hans Reiser,
	Urban Widmark, David Howells, Mark Fasheh

On Thu, Mar 30, 2006 at 04:16:13PM +0800, Akinobu Mita wrote:
> This patch converts the combination of list_del(A) and list_add(A, B)
> to list_move(A, B) under fs/.
> 
> CC: Ian Kent <raven@themaw.net>
> CC: Joel Becker <joel.becker@oracle.com>
> CC: Neil Brown <neilb@cse.unsw.edu.au>
> CC: Hans Reiser <reiserfs-dev@namesys.com>
> CC: Urban Widmark <urban@teststation.com>
> CC: David Howells <dhowells@redhat.com>
> CC: Mark Fasheh <mark.fasheh@oracle.com>
> Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
Acked-by: Joel Becker <joel.becker@oracle.com>

-- 

"And yet I find,
 And yet I find repeating in my head.
 If I can't be my own, 
 I'd feel better dead."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 8/8] fs: use list_move()
  2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
                     ` (2 preceding siblings ...)
  2006-03-30 19:07   ` Joel Becker
@ 2006-03-30 19:15   ` Mark Fasheh
  3 siblings, 0 replies; 22+ messages in thread
From: Mark Fasheh @ 2006-03-30 19:15 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-kernel, akpm, Ian Kent, Joel Becker, Neil Brown,
	Hans Reiser, Urban Widmark, David Howells

On Thu, Mar 30, 2006 at 04:16:13PM +0800, Akinobu Mita wrote:
> This patch converts the combination of list_del(A) and list_add(A, B)
> to list_move(A, B) under fs/.
Acked-by: Mark Fasheh <mark.fasheh@oracle.com>

--
Mark Fasheh
Senior Software Developer, Oracle
mark.fasheh@oracle.com


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 3/8] use list_add_tail() instead of list_add()
  2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
  2006-03-30  8:26   ` Karsten Keil
  2006-03-30  8:30   ` Jan Kara
@ 2006-03-31  3:54   ` Akinobu Mita
  2 siblings, 0 replies; 22+ messages in thread
From: Akinobu Mita @ 2006-03-31  3:54 UTC (permalink / raw)
  To: linux-kernel
  Cc: akpm, Karsten Keil, Jan Harkes, Jan Kara, David Woodhouse,
	Sridhar Samudrala

On Thu, Mar 30, 2006 at 04:16:08PM +0800, Akinobu Mita wrote:
> This patch converts list_add(A, B.prev) to list_add_tail(A, &B)
> for readability.

>  drivers/isdn/capi/capi.c |    2 +-
>  fs/coda/psdev.c          |    2 +-
>  fs/coda/upcall.c         |    2 +-
>  fs/dcache.c              |    2 +-
>  fs/dquot.c               |    4 ++--
>  fs/jffs2/compr.c         |    4 ++--
>  net/sctp/outqueue.c      |    2 +-
>  7 files changed, 9 insertions(+), 9 deletions(-)

I realized that the replacements in isdn, jffs2, and sctp made them less
readable. Because these are trying to insert the list node into right
place, not trying to insert the tail of the list head.

This patch reverts them.

Index: 2.6-git/net/sctp/outqueue.c
===================================================================
--- 2.6-git.orig/net/sctp/outqueue.c
+++ 2.6-git/net/sctp/outqueue.c
@@ -370,7 +370,7 @@ static void sctp_insert_list(struct list
 		lchunk = list_entry(pos, struct sctp_chunk, transmitted_list);
 		ltsn = ntohl(lchunk->subh.data_hdr->tsn);
 		if (TSN_lt(ntsn, ltsn)) {
-			list_add_tail(new, pos);
+			list_add(new, pos->prev);
 			done = 1;
 			break;
 		}
Index: 2.6-git/drivers/isdn/capi/capi.c
===================================================================
--- 2.6-git.orig/drivers/isdn/capi/capi.c
+++ 2.6-git/drivers/isdn/capi/capi.c
@@ -238,7 +238,7 @@ static struct capiminor *capiminor_alloc
 		
 		if (minor < capi_ttyminors) {
 			mp->minor = minor;
-			list_add_tail(&mp->list, &p->list);
+			list_add(&mp->list, p->list.prev);
 		}
 	}
 		write_unlock_irqrestore(&capiminor_list_lock, flags);
Index: 2.6-git/fs/jffs2/compr.c
===================================================================
--- 2.6-git.orig/fs/jffs2/compr.c
+++ 2.6-git/fs/jffs2/compr.c
@@ -231,7 +231,7 @@ int jffs2_register_compressor(struct jff
 
         list_for_each_entry(this, &jffs2_compressor_list, list) {
                 if (this->priority < comp->priority) {
-                        list_add_tail(&comp->list, &this->list);
+                        list_add(&comp->list, this->list.prev);
                         goto out;
                 }
         }
@@ -394,7 +394,7 @@ reinsert:
         list_del(&comp->list);
         list_for_each_entry(this, &jffs2_compressor_list, list) {
                 if (this->priority < comp->priority) {
-                        list_add_tail(&comp->list, &this->list);
+                        list_add(&comp->list, this->list.prev);
                         spin_unlock(&jffs2_compressor_list_lock);
                         return 0;
                 }

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 8/8] fs: use list_move()
  2006-03-30 19:07   ` Joel Becker
@ 2006-04-03  1:04     ` Ian Kent
  0 siblings, 0 replies; 22+ messages in thread
From: Ian Kent @ 2006-04-03  1:04 UTC (permalink / raw)
  To: Joel Becker
  Cc: Akinobu Mita, linux-kernel, akpm, Neil Brown, Hans Reiser,
	Urban Widmark, David Howells, Mark Fasheh

On Thu, 30 Mar 2006, Joel Becker wrote:

> On Thu, Mar 30, 2006 at 04:16:13PM +0800, Akinobu Mita wrote:
> > This patch converts the combination of list_del(A) and list_add(A, B)
> > to list_move(A, B) under fs/.
> > 
> > CC: Ian Kent <raven@themaw.net>
> > CC: Joel Becker <joel.becker@oracle.com>
> > CC: Neil Brown <neilb@cse.unsw.edu.au>
> > CC: Hans Reiser <reiserfs-dev@namesys.com>
> > CC: Urban Widmark <urban@teststation.com>
> > CC: David Howells <dhowells@redhat.com>
> > CC: Mark Fasheh <mark.fasheh@oracle.com>
> > Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
> Acked-by: Joel Becker <joel.becker@oracle.com>
> 
> -- 
> 
> "And yet I find,
>  And yet I find repeating in my head.
>  If I can't be my own, 
>  I'd feel better dead."

ACK



^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 2/8] use hlist_move_head()
  2006-03-30  8:16 ` [patch 2/8] use hlist_move_head() Akinobu Mita
@ 2006-04-10  8:22   ` Andrew Morton
  2006-04-10  9:53     ` Neil Brown
  0 siblings, 1 reply; 22+ messages in thread
From: Andrew Morton @ 2006-04-10  8:22 UTC (permalink / raw)
  To: Akinobu Mita; +Cc: linux-kernel, neilb, prasanna, davem, mita

Akinobu Mita <mita@miraclelinux.com> wrote:
>
> This patch converts the combination of hlist_del(A) and hlist_add_head(A, B)
> to hlist_move_head(A, B).
> 
> ...
>
> --- 2.6-git.orig/fs/nfsd/nfscache.c
> +++ 2.6-git/fs/nfsd/nfscache.c
> @@ -113,8 +113,7 @@ lru_put_end(struct svc_cacherep *rp)
>  static void
>  hash_refile(struct svc_cacherep *rp)
>  {
> -	hlist_del_init(&rp->c_hash);
> -	hlist_add_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
> +	hlist_move_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
>  }

Just got an oops here.

BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
 printing eip:
f8a06fde
*pde = 00000000
Oops: 0002 [#1]
SMP
last sysfs file: /devices/pci0000:00/0000:00:1f.3/i2c-0/0-0050/name
Modules linked in: usblp pcspkr nfsd exportfs lockd sunrpc parport_pc lp parport autofs video button battery ac
CPU:    0
EIP:    0060:[<f8a06fde>]    Not tainted VLI
EFLAGS: 00010246   (2.6.17-rc1-mm2 #88)
EIP is at hash_refile+0x20/0x3a [nfsd]
eax: 00000000   ebx: f7c07e1c   ecx: f77b3180   edx: 00000000
esi: 00000006   edi: f8a26d38   ebp: f73eff08   esp: f73eff04
ds: 007b   es: 007b   ss: 0068
Process nfsd (pid: 2545, threadinfo=f73ef000 task=f7201000)
Stack: <0>f77b3180 f73eff3c f8a07146 f7c19a00 f7c19a40 00000002 00000008 00000003
       00000006 c6a1f621 00000000 f7c19a00 f7c19a00 f8a26d38 f73eff58 f89ff5b0
       f8a26b40 f05a7018 f7c19a64 f7c19a00 f8a26d38 f73effa8 f89a740f 00000075
Call Trace:
 <c0103379> show_stack_log_lvl+0x7d/0x99   <c01034fb> show_registers+0x127/0x182
 <c01036e6> die+0x11a/0x1ea   <c01121b6> do_page_fault+0x31c/0x607
 <c010304f> error_code+0x4f/0x54   <f8a07146> nfsd_cache_lookup+0x14e/0x2d2 [nfsd]
 <f89ff5b0> nfsd_dispatch+0x2a/0x1b2 [nfsd]   <f89a740f> svc_process+0x490/0x5f5 [sunrpc]
 <f89ff3e7> nfsd+0x174/0x313 [nfsd]   <c0100e8d> kernel_thread_helper+0x5/0xb
Code: ec a2 f8 89 0a 89 51 04 5b 5d c3 55 89 c1 8b 15 84 ec a2 f8 89 e5 53 0f b6 40 27 33 41 24 83 e0 3f 8d 1c 82 8b 51 04 8b 01 85 c0 <89> 02 74 03 89 50 04 8b 03 85 c0 89 01 74 03 89 48 04 89 0b 89
EIP: [<f8a06fde>] hash_refile+0x20/0x3a [nfsd] SS:ESP 0068:f73eff04


I don't think you've made an equivalent transformation here. 
hlist_del_init() won't call __hlist_del() if !n->pprev.

But if that was the problem, I'd have expected to see an access address of
0x00000004, not 0x00000000.  Perhaps n->next is NULL as well.


^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [patch 2/8] use hlist_move_head()
  2006-04-10  8:22   ` Andrew Morton
@ 2006-04-10  9:53     ` Neil Brown
  0 siblings, 0 replies; 22+ messages in thread
From: Neil Brown @ 2006-04-10  9:53 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Akinobu Mita, linux-kernel, prasanna, davem

On Monday April 10, akpm@osdl.org wrote:
> Akinobu Mita <mita@miraclelinux.com> wrote:
> >
> > This patch converts the combination of hlist_del(A) and hlist_add_head(A, B)
> > to hlist_move_head(A, B).
> > 
> > ...
> >
> > --- 2.6-git.orig/fs/nfsd/nfscache.c
> > +++ 2.6-git/fs/nfsd/nfscache.c
> > @@ -113,8 +113,7 @@ lru_put_end(struct svc_cacherep *rp)
> >  static void
> >  hash_refile(struct svc_cacherep *rp)
> >  {
> > -	hlist_del_init(&rp->c_hash);
> > -	hlist_add_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
> > +	hlist_move_head(&rp->c_hash, hash_list + REQHASH(rp->c_xid));
> >  }
> 
> Just got an oops here.

Hmmm:
static inline void hlist_del_init(struct hlist_node *n)
{
	if (n->pprev)  {
		__hlist_del(n);
		INIT_HLIST_NODE(n);
	}
}
.....

static inline void hlist_move_head(struct hlist_node *n, struct hlist_head *h)
{
	__hlist_del(n);
	hlist_add_head(n, h);
}

I guess n->pprev was NULL

NeilBrown

> 
> BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
                                                                           ^^^^^^^^
Yep!

NeilBrown

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2006-04-10  9:53 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-30  8:16 [patch 0/8] list.h related cleanups Akinobu Mita
2006-03-30  8:16 ` [patch 1/8] introduce hlist_move_head() Akinobu Mita
2006-03-30  8:16 ` [patch 2/8] use hlist_move_head() Akinobu Mita
2006-04-10  8:22   ` Andrew Morton
2006-04-10  9:53     ` Neil Brown
2006-03-30  8:16 ` [patch 3/8] use list_add_tail() instead of list_add() Akinobu Mita
2006-03-30  8:26   ` Karsten Keil
2006-03-30  8:30   ` Jan Kara
2006-03-30 10:25     ` David Woodhouse
2006-03-31  3:54   ` Akinobu Mita
2006-03-30  8:16 ` [patch 4/8] arch: use list_move() Akinobu Mita
2006-03-30  8:16 ` [patch 5/8] core: " Akinobu Mita
2006-03-30  8:16 ` [patch 6/8] net/rxrpc: " Akinobu Mita
2006-03-30 10:17   ` David Howells
2006-03-30  8:16 ` [patch 7/8] drivers: " Akinobu Mita
2006-03-30 12:11   ` Matthew Wilcox
2006-03-30  8:16 ` [patch 8/8] fs: " Akinobu Mita
2006-03-30  8:22   ` [-mm patch] reiser4fs: " Akinobu Mita
2006-03-30 10:18   ` [patch 8/8] fs: " David Howells
2006-03-30 19:07   ` Joel Becker
2006-04-03  1:04     ` Ian Kent
2006-03-30 19:15   ` Mark Fasheh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox