2008-06-21 03:32:52

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH blkid] use list_for_each_safe in garbage collection

We need to use list_for_each_safe in case a device gets removed
from the list during garbage collection.

Also make the manpage slightly more informative about
what the -g garbage collection option does.

Signed-off-by: Eric Sandeen <[email protected]>

Index: e2fsprogs-1.41/lib/blkid/cache.c
--- e2fsprogs-1.41.orig/lib/blkid/cache.c
+++ e2fsprogs-1.41/lib/blkid/cache.c
@@ -154,13 +154,13 @@ void blkid_put_cache(blkid_cache cache)

void blkid_gc_cache(blkid_cache cache)
- struct list_head *p;
+ struct list_head *p, *pnext;
struct stat st;

if (!cache)

- list_for_each(p, &cache->bic_devs) {
+ list_for_each_safe(p, pnext, &cache->bic_devs) {
blkid_dev dev = list_entry(p, struct blkid_struct_dev, bid_devs);
if (!p)
Index: e2fsprogs-1.41/misc/blkid.8.in
--- e2fsprogs-1.41.orig/misc/blkid.8.in
+++ e2fsprogs-1.41/misc/blkid.8.in
@@ -61,7 +61,8 @@ scanned but not necessarily available at
.IR /dev/null.
.B \-g
-Perform a garbage collection pass on the blkid cache.
+Perform a garbage collection pass on the blkid cache to remove
+devices which no longer exist.
.B \-h
Display a usage message and exit.