diff --git a/e2fsprogs/Makefile.in b/e2fsprogs/Makefile.in
index 89470b7..1602716 100644
--- a/e2fsprogs/Makefile.in
+++ b/e2fsprogs/Makefile.in
@@ -12,7 +12,7 @@
 E2FSPROGS_CFLAGS := -include $(E2FSPROGS_SRC)/e2fsbb.h
 
 BLKID_SRC   := cache.c dev.c devname.c devno.c blkid_getsize.c \
-               probe.c read.c resolve.c save.c tag.c
+               probe.c read.c resolve.c save.c tag.c list.c
 BLKID_SRCS  := $(patsubst %,blkid/%, $(BLKID_SRC))
 BLKID_OBJS  := $(patsubst %.c,%.o, $(BLKID_SRCS))
 
diff --git a/e2fsprogs/blkid/list.h b/e2fsprogs/blkid/list.h
index cbf16a0..8b06d85 100644
--- a/e2fsprogs/blkid/list.h
+++ b/e2fsprogs/blkid/list.h
@@ -6,12 +6,6 @@
 extern "C" {
 #endif
 
-#ifdef __GNUC__
-#define _INLINE_ static __inline__
-#else                         /* For Watcom C */
-#define _INLINE_ static inline
-#endif
-
 /*
  * Simple doubly linked list implementation.
  *
@@ -35,113 +29,14 @@
 	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
 } while (0)
 
-/*
- * Insert a new entry between two known consecutive entries.
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-_INLINE_ void __list_add(struct list_head * add,
-	struct list_head * prev,
-	struct list_head * next)
-{
-	next->prev = add;
-	add->next = next;
-	add->prev = prev;
-	prev->next = add;
-}
-
-/**
- * list_add - add a new entry
- * @add:	new entry to be added
- * @head:	list head to add it after
- *
- * Insert a new entry after the specified head.
- * This is good for implementing stacks.
- */
-_INLINE_ void list_add(struct list_head *add, struct list_head *head)
-{
-	__list_add(add, head, head->next);
-}
-
-/**
- * list_add_tail - add a new entry
- * @add:	new entry to be added
- * @head:	list head to add it before
- *
- * Insert a new entry before the specified head.
- * This is useful for implementing queues.
- */
-_INLINE_ void list_add_tail(struct list_head *add, struct list_head *head)
-{
-	__list_add(add, head->prev, head);
-}
-
-/*
- * Delete a list entry by making the prev/next entries
- * point to each other.
- *
- * This is only for internal list manipulation where we know
- * the prev/next entries already!
- */
-_INLINE_ void __list_del(struct list_head * prev,
-				  struct list_head * next)
-{
-	next->prev = prev;
-	prev->next = next;
-}
-
-/**
- * list_del - deletes entry from list.
- * @entry:	the element to delete from the list.
- *
- * list_empty() on @entry does not return true after this, @entry is
- * in an undefined state.
- */
-_INLINE_ void list_del(struct list_head *entry)
-{
-	__list_del(entry->prev, entry->next);
-}
-
-/**
- * list_del_init - deletes entry from list and reinitialize it.
- * @entry:	the element to delete from the list.
- */
-_INLINE_ void list_del_init(struct list_head *entry)
-{
-	__list_del(entry->prev, entry->next);
-	INIT_LIST_HEAD(entry);
-}
-
-/**
- * list_empty - tests whether a list is empty
- * @head:	the list to test.
- */
-_INLINE_ int list_empty(struct list_head *head)
-{
-	return head->next == head;
-}
-
-/**
- * list_splice - join two lists
- * @list:	the new list to add.
- * @head:	the place to add it in the first list.
- */
-_INLINE_ void list_splice(struct list_head *list, struct list_head *head)
-{
-	struct list_head *first = list->next;
-
-	if (first != list) {
-		struct list_head *last = list->prev;
-		struct list_head *at = head->next;
-
-		first->prev = head;
-		head->next = first;
-
-		last->next = at;
-		at->prev = last;
-	}
-}
+void __list_add(struct list_head * add, struct list_head * prev,	struct list_head * next);
+void list_add(struct list_head *add, struct list_head *head);
+void list_add_tail(struct list_head *add, struct list_head *head);
+void __list_del(struct list_head * prev, struct list_head * next);
+void list_del(struct list_head *entry);
+void list_del_init(struct list_head *entry);
+int list_empty(struct list_head *head);
+void list_splice(struct list_head *list, struct list_head *head);
 
 /**
  * list_entry - get the struct for this entry
@@ -171,8 +66,6 @@
 	for (pos = (head)->next, pnext = pos->next; pos != (head); \
 	     pos = pnext, pnext = pos->next)
 
-#undef _INLINE_
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/e2fsprogs/e2fsck.c b/e2fsprogs/e2fsck.c
index 4c0614a..985f9fd 100644
--- a/e2fsprogs/e2fsck.c
+++ b/e2fsprogs/e2fsck.c
@@ -726,7 +726,7 @@
 /*
  * Return the count of number of directories in the dir_info structure
  */
-static inline int e2fsck_get_num_dirinfo(e2fsck_t ctx)
+static int e2fsck_get_num_dirinfo(e2fsck_t ctx)
 {
 	return ctx->dir_info_count;
 }
@@ -1363,7 +1363,7 @@
 	return error;
 }
 
-static inline const char *ehandler_operation(const char *op)
+static const char *ehandler_operation(const char *op)
 {
 	const char *ret = operation;
 
@@ -1491,7 +1491,7 @@
 	}
 }
 
-static inline void mark_buffer_dirty(struct buffer_head *bh)
+static void mark_buffer_dirty(struct buffer_head *bh)
 {
 	bh->b_dirty = 1;
 }
@@ -1508,7 +1508,7 @@
 	ext2fs_free_mem(&bh);
 }
 
-static inline int buffer_uptodate(struct buffer_head *bh)
+static int buffer_uptodate(struct buffer_head *bh)
 {
 	return bh->b_uptodate;
 }
@@ -11074,7 +11074,7 @@
 /* Utility functions to maintain the revoke table */
 
 /* Borrowed from buffer.c: this is a tried and tested block hash function */
-static inline int hash(journal_t *journal, unsigned long block)
+static int hash(journal_t *journal, unsigned long block)
 {
 	struct jbd_revoke_table_s *table = journal->j_revoke;
 	int hash_shift = table->hash_shift;
diff --git a/e2fsprogs/e2fsck.h b/e2fsprogs/e2fsck.h
index 52db828..e520632 100644
--- a/e2fsprogs/e2fsck.h
+++ b/e2fsprogs/e2fsck.h
@@ -629,12 +629,7 @@
 };
 
 
-
-static inline int tid_gt(tid_t x, tid_t y)
-{
-	int difference = (x - y);
-	return (difference > 0);
-}
+#define tid_gt(x, y)		((x - y) > 0)
 
 static inline int tid_geq(tid_t x, tid_t y)
 {
