diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog
index 74ed690..b8675fa 100644
--- a/lib/ext2fs/ChangeLog
+++ b/lib/ext2fs/ChangeLog
@@ -1,3 +1,13 @@
+1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+	* alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
+		the stride length hits a bad value, we retry the block
+		allocation starting at the beginning of the block group.
+
+	* ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
+		expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
+		e2_blkcnt_t to avoid collision with LFS API.
+
 1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
 
 	* initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
diff --git a/lib/ext2fs/alloc_tables.c b/lib/ext2fs/alloc_tables.c
index 3a05759..3660c5e 100644
--- a/lib/ext2fs/alloc_tables.c
+++ b/lib/ext2fs/alloc_tables.c
@@ -85,6 +85,9 @@
 	if (!fs->group_desc[group].bg_block_bitmap) {
 		retval = ext2fs_get_free_blocks(fs, start_blk, last_blk,
 						1, bmap, &new_blk);
+		if (retval == EXT2_ET_BLOCK_ALLOC_FAIL) 
+			retval = ext2fs_get_free_blocks(fs, group_blk,
+					last_blk, 1, bmap, &new_blk);
 		if (retval)
 			return retval;
 		ext2fs_mark_block_bitmap(bmap, new_blk);
@@ -94,6 +97,9 @@
 	if (!fs->group_desc[group].bg_inode_bitmap) {
 		retval = ext2fs_get_free_blocks(fs, start_blk, last_blk,
 						1, bmap, &new_blk);
+		if (retval == EXT2_ET_BLOCK_ALLOC_FAIL) 
+			retval = ext2fs_get_free_blocks(fs, group_blk,
+					last_blk, 1, bmap, &new_blk);
 		if (retval)
 			return retval;
 		ext2fs_mark_block_bitmap(bmap, new_blk);
diff --git a/lib/ext2fs/bb_inode.c b/lib/ext2fs/bb_inode.c
index 38d1052..e6ce776 100644
--- a/lib/ext2fs/bb_inode.c
+++ b/lib/ext2fs/bb_inode.c
@@ -47,11 +47,11 @@
 };
 
 static int set_bad_block_proc(ext2_filsys fs, blk_t *block_nr,
-			      blkcnt_t blockcnt,
+			      e2_blkcnt_t blockcnt,
 			      blk_t ref_block, int ref_offset,
 			      void *priv_data);
 static int clear_bad_block_proc(ext2_filsys fs, blk_t *block_nr,
-				blkcnt_t blockcnt,
+				e2_blkcnt_t blockcnt,
 				blk_t ref_block, int ref_offset,
 				void *priv_data);
 	
@@ -166,7 +166,7 @@
 #pragma argsused
 #endif
 static int clear_bad_block_proc(ext2_filsys fs, blk_t *block_nr,
-				blkcnt_t blockcnt,
+				e2_blkcnt_t blockcnt,
 				blk_t ref_block, int ref_offset,
 				void *priv_data)
 {
@@ -228,7 +228,7 @@
 #pragma argsused
 #endif
 static int set_bad_block_proc(ext2_filsys fs, blk_t *block_nr,
-			      blkcnt_t blockcnt, blk_t ref_block, 
+			      e2_blkcnt_t blockcnt, blk_t ref_block, 
 			      int ref_offset, void *priv_data)
 {
 	struct set_badblock_record *rec = (struct set_badblock_record *)
diff --git a/lib/ext2fs/block.c b/lib/ext2fs/block.c
index 16a97c8..72cbb4a 100644
--- a/lib/ext2fs/block.c
+++ b/lib/ext2fs/block.c
@@ -27,11 +27,11 @@
 	ext2_filsys	fs;
 	int (*func)(ext2_filsys	fs,
 		    blk_t	*blocknr,
-		    blkcnt_t	bcount,
+		    e2_blkcnt_t	bcount,
 		    blk_t	ref_blk,
 		    int		ref_offset,
 		    void	*priv_data);
-	blkcnt_t	bcount;
+	e2_blkcnt_t	bcount;
 	int		bsize;
 	int		flags;
 	errcode_t	errcode;
@@ -307,7 +307,7 @@
 				char *block_buf,
 				int (*func)(ext2_filsys fs,
 					    blk_t	*blocknr,
-					    blkcnt_t	blockcnt,
+					    e2_blkcnt_t	blockcnt,
 					    blk_t	ref_blk,
 					    int		ref_offset,
 					    void	*priv_data),
@@ -445,7 +445,7 @@
 #ifdef __TURBOC__
 #pragma argsused
 #endif
-static int xlate_func(ext2_filsys fs, blk_t *blocknr, blkcnt_t blockcnt,
+static int xlate_func(ext2_filsys fs, blk_t *blocknr, e2_blkcnt_t blockcnt,
 		      blk_t ref_block, int ref_offset, void *priv_data)
 {
 	struct xlate *xl = (struct xlate *) priv_data;
diff --git a/lib/ext2fs/bmove.c b/lib/ext2fs/bmove.c
index 2745307..fbb5f9b 100644
--- a/lib/ext2fs/bmove.c
+++ b/lib/ext2fs/bmove.c
@@ -38,7 +38,7 @@
 };
 
 static int process_block(ext2_filsys fs, blk_t	*block_nr,
-			 blkcnt_t blockcnt, blk_t ref_block,
+			 e2_blkcnt_t blockcnt, blk_t ref_block,
 			 int ref_offset, void *priv_data)
 {
 	struct process_block_struct *pb;
diff --git a/lib/ext2fs/dir_iterate.c b/lib/ext2fs/dir_iterate.c
index 869c13b..9aff315 100644
--- a/lib/ext2fs/dir_iterate.c
+++ b/lib/ext2fs/dir_iterate.c
@@ -74,7 +74,7 @@
  */
 extern int ext2fs_process_dir_block(ext2_filsys  	fs,
 				    blk_t		*blocknr,
-				    blkcnt_t		blockcnt,
+				    e2_blkcnt_t		blockcnt,
 				    blk_t		ref_block,
 				    int			ref_offset,
 				    void		*priv_data)
diff --git a/lib/ext2fs/expanddir.c b/lib/ext2fs/expanddir.c
index e2d8c35..bdfc257 100644
--- a/lib/ext2fs/expanddir.c
+++ b/lib/ext2fs/expanddir.c
@@ -30,7 +30,7 @@
 
 static int expand_dir_proc(ext2_filsys		fs,
 			   blk_t		*blocknr,
-			   blkcnt_t		blockcnt,
+			   e2_blkcnt_t		blockcnt,
 			   blk_t		ref_block,
 			   int			ref_offset,
 			   void			*priv_data)
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index 83ca4df..9a28af5 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -54,7 +54,7 @@
 typedef __u32		blk_t;
 typedef unsigned int	dgrp_t;
 typedef __u32		ext2_off_t;
-typedef __s64		blkcnt_t;
+typedef __s64		e2_blkcnt_t;
 
 #if EXT2_FLAT_INCLUDES
 #include "com_err.h"
@@ -554,7 +554,7 @@
 				char *block_buf,
 				int (*func)(ext2_filsys fs,
 					    blk_t	*blocknr,
-					    blkcnt_t	blockcnt,
+					    e2_blkcnt_t	blockcnt,
 					    blk_t	ref_blk,
 					    int		ref_offset,
 					    void	*priv_data),
diff --git a/lib/ext2fs/ext2fsP.h b/lib/ext2fs/ext2fsP.h
index 129cf90..b2b593d 100644
--- a/lib/ext2fs/ext2fsP.h
+++ b/lib/ext2fs/ext2fsP.h
@@ -85,7 +85,7 @@
 
 extern int ext2fs_process_dir_block(ext2_filsys  	fs,
 				    blk_t		*blocknr,
-				    blkcnt_t		blockcnt,
+				    e2_blkcnt_t		blockcnt,
 				    blk_t		ref_block,
 				    int			ref_offset,
 				    void		*priv_data);
diff --git a/lib/ext2fs/read_bb.c b/lib/ext2fs/read_bb.c
index c43f97c..c005d42 100644
--- a/lib/ext2fs/read_bb.c
+++ b/lib/ext2fs/read_bb.c
@@ -43,7 +43,7 @@
 #pragma argsused
 #endif
 static int mark_bad_block(ext2_filsys fs, blk_t *block_nr,
-			  blkcnt_t blockcnt, blk_t ref_block,
+			  e2_blkcnt_t blockcnt, blk_t ref_block,
 			  int ref_offset, void *priv_data)
 {
 	struct read_bb_record *rb = (struct read_bb_record *) priv_data;
