public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* Review: Factor some common freelist checks
@ 2007-08-08 23:40 David Chinner
  2007-08-09  0:53 ` Christoph Hellwig
  0 siblings, 1 reply; 2+ messages in thread
From: David Chinner @ 2007-08-08 23:40 UTC (permalink / raw)
  To: xfs-dev; +Cc: xfs-oss

Suggested by Tim - don't duplicate the code used to check
the longest available extent on the freelist.

[we've got to clean up this header include mess.]

Signed-off-by: Dave Chinner <dgc@sgi.com>

---
 fs/xfs/dmapi/xfs_dm.c          |    2 +-
 fs/xfs/dmapi/xfs_dm_bhv.c      |    2 +-
 fs/xfs/dmapi/xfs_dm_fsops.c    |    2 +-
 fs/xfs/linux-2.6/xfs_ioctl.c   |    2 +-
 fs/xfs/linux-2.6/xfs_iops.c    |    2 +-
 fs/xfs/linux-2.6/xfs_ksyms.c   |    2 +-
 fs/xfs/linux-2.6/xfs_lrw.c     |    2 +-
 fs/xfs/linux-2.6/xfs_super.c   |    2 +-
 fs/xfs/linux-2.6/xfs_vfs.c     |    2 +-
 fs/xfs/quota/xfs_dquot.c       |    2 +-
 fs/xfs/quota/xfs_dquot_item.c  |    2 +-
 fs/xfs/quota/xfs_qm.c          |    2 +-
 fs/xfs/quota/xfs_qm_bhv.c      |    2 +-
 fs/xfs/quota/xfs_qm_ksyms.c    |    2 +-
 fs/xfs/quota/xfs_qm_stats.c    |    2 +-
 fs/xfs/quota/xfs_qm_syscalls.c |    2 +-
 fs/xfs/quota/xfs_trans_dquot.c |    2 +-
 fs/xfs/xfs_alloc.c             |    7 ++-----
 fs/xfs/xfs_alloc.h             |   19 +++++++++++++++++--
 fs/xfs/xfs_bmap.c              |   12 ++----------
 fs/xfs/xfs_filestream.c        |    9 ++-------
 fs/xfs/xfs_iomap.c             |    2 +-
 22 files changed, 41 insertions(+), 42 deletions(-)

Index: 2.6.x-xfs-new/fs/xfs/xfs_alloc.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_alloc.c	2007-06-25 13:56:20.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_alloc.c	2007-06-25 14:06:05.123181552 +1000
@@ -1858,15 +1858,12 @@ xfs_alloc_fix_freelist(
 	}
 
 	if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
-		need = XFS_MIN_FREELIST_PAG(pag, mp);
-		delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
 		/*
 		 * If it looks like there isn't a long enough extent, or enough
 		 * total blocks, reject it.
 		 */
-		longest = (pag->pagf_longest > delta) ?
-			(pag->pagf_longest - delta) :
-			(pag->pagf_flcount > 0 || pag->pagf_longest > 0);
+		need = XFS_MIN_FREELIST_PAG(pag, mp);
+		xfs_alloc_min_freelist(mp, pag, &longest);
 		if ((args->minlen + args->alignment + args->minalignslop - 1) >
 				longest ||
 		    ((int)(pag->pagf_freeblks + pag->pagf_flcount -
Index: 2.6.x-xfs-new/fs/xfs/xfs_alloc.h
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_alloc.h	2007-05-22 19:04:51.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_alloc.h	2007-06-25 14:14:13.627226544 +1000
@@ -19,8 +19,6 @@
 #define	__XFS_ALLOC_H__
 
 struct xfs_buf;
-struct xfs_mount;
-struct xfs_perag;
 struct xfs_trans;
 
 /*
@@ -207,6 +205,23 @@ xfs_alloc_clear_busy(xfs_trans_t *tp,
 		xfs_agnumber_t ag,
 		int idx);
 
+/*
+ * Determine the longest free extent available in the AG supplied
+ */
+STATIC_INLINE void
+xfs_alloc_min_freelist(
+	xfs_mount_t	*mp,
+	xfs_perag_t	*pag,
+	xfs_extlen_t	*longest)
+{
+	xfs_extlen_t	need, delta;
+
+	need = XFS_MIN_FREELIST_PAG(pag, mp);
+	delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
+	*longest = (pag->pagf_longest > delta) ?
+		  (pag->pagf_longest - delta) :
+		  (pag->pagf_flcount > 0 || pag->pagf_longest > 0);
+}
 
 #endif	/* __KERNEL__ */
 
Index: 2.6.x-xfs-new/fs/xfs/xfs_bmap.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_bmap.c	2007-06-25 13:56:11.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_bmap.c	2007-06-25 14:11:19.905965882 +1000
@@ -2703,9 +2703,6 @@ xfs_bmap_btalloc(
 	xfs_agnumber_t	startag;
 	xfs_alloc_arg_t	args;
 	xfs_extlen_t	blen;
-	xfs_extlen_t	delta;
-	xfs_extlen_t	longest;
-	xfs_extlen_t	need;
 	xfs_extlen_t	nextminlen = 0;
 	xfs_perag_t	*pag;
 	int		nullfb;		/* true if ap->firstblock isn't set */
@@ -2787,13 +2784,8 @@ xfs_bmap_btalloc(
 			 * See xfs_alloc_fix_freelist...
 			 */
 			if (pag->pagf_init) {
-				need = XFS_MIN_FREELIST_PAG(pag, mp);
-				delta = need > pag->pagf_flcount ?
-					need - pag->pagf_flcount : 0;
-				longest = (pag->pagf_longest > delta) ?
-					(pag->pagf_longest - delta) :
-					(pag->pagf_flcount > 0 ||
-					 pag->pagf_longest > 0);
+				xfs_extlen_t	longest;
+				xfs_alloc_min_freelist(mp, pag, &longest);
 				if (blen < longest)
 					blen = longest;
 			} else
Index: 2.6.x-xfs-new/fs/xfs/xfs_filestream.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_filestream.c	2007-06-22 18:07:15.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_filestream.c	2007-06-25 14:11:11.355085273 +1000
@@ -140,7 +140,7 @@ _xfs_filestream_pick_ag(
 	xfs_extlen_t	minlen)
 {
 	int		err, trylock, nscan;
-	xfs_extlen_t	delta, longest, need, free, minfree, maxfree = 0;
+	xfs_extlen_t	longest, free, minfree, maxfree = 0;
 	xfs_agnumber_t	ag, max_ag = NULLAGNUMBER;
 	struct xfs_perag *pag;
 
@@ -186,12 +186,7 @@ _xfs_filestream_pick_ag(
 			goto next_ag;
 		}
 
-		need = XFS_MIN_FREELIST_PAG(pag, mp);
-		delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
-		longest = (pag->pagf_longest > delta) ?
-		          (pag->pagf_longest - delta) :
-		          (pag->pagf_flcount > 0 || pag->pagf_longest > 0);
-
+		xfs_alloc_min_freelist(mp, pag, &longest);
 		if (((minlen && longest >= minlen) ||
 		     (!minlen && pag->pagf_freeblks >= minfree)) &&
 		    (!pag->pagf_metadata || !(flags & XFS_PICK_USERDATA) ||
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ioctl.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_ioctl.c	2007-06-20 17:59:36.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ioctl.c	2007-06-25 14:13:21.298075718 +1000
@@ -24,9 +24,9 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_iops.c	2007-05-29 16:18:03.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c	2007-06-25 14:13:02.976473863 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_lrw.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_lrw.c	2007-06-20 17:53:36.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_lrw.c	2007-06-25 14:14:30.457023840 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c	2007-06-20 17:53:35.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c	2007-06-25 14:14:43.087370791 +1000
@@ -25,10 +25,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_vfs.c	2007-01-16 10:54:16.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c	2007-06-25 14:14:56.941557595 +1000
@@ -25,9 +25,9 @@
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
 #include "xfs_imap.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_quota.h"
 
 int
Index: 2.6.x-xfs-new/fs/xfs/xfs_iomap.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_iomap.c	2007-06-08 21:36:26.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_iomap.c	2007-06-25 14:12:09.347493741 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm.c	2007-06-08 21:36:26.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c	2007-06-25 14:19:43.936003898 +1000
@@ -26,9 +26,9 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_da_btree.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_bhv.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm_bhv.c	2007-01-16 10:54:14.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_bhv.c	2007-06-25 14:16:45.923295350 +1000
@@ -26,9 +26,9 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_fsops.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm_fsops.c	2007-01-16 10:54:14.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_fsops.c	2007-06-25 14:18:12.523963285 +1000
@@ -26,9 +26,9 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_ksyms.c	2007-06-25 13:56:20.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c	2007-06-25 14:15:49.646659958 +1000
@@ -27,10 +27,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_da_btree.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_dquot.c	2007-06-25 13:56:20.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot.c	2007-06-25 14:19:04.513160782 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_dquot_item.c	2007-06-25 13:56:20.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c	2007-06-25 14:19:21.906884992 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm.c	2007-06-25 13:56:20.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c	2007-06-25 14:21:29.450325544 +1000
@@ -25,10 +25,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_bhv.c	2007-02-07 13:24:32.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c	2007-06-25 14:20:21.775098823 +1000
@@ -25,10 +25,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_ksyms.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_ksyms.c	2007-01-16 10:54:16.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_ksyms.c	2007-06-25 14:21:01.018011537 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_stats.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_stats.c	2007-02-07 13:24:32.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_stats.c	2007-06-25 14:21:14.844219110 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_syscalls.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_syscalls.c	2007-03-29 19:03:30.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_syscalls.c	2007-06-25 14:18:28.637854830 +1000
@@ -27,10 +27,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"
Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_trans_dquot.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_trans_dquot.c	2007-03-29 19:03:30.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/quota/xfs_trans_dquot.c	2007-06-25 14:18:48.239290090 +1000
@@ -24,10 +24,10 @@
 #include "xfs_sb.h"
 #include "xfs_ag.h"
 #include "xfs_dir2.h"
-#include "xfs_alloc.h"
 #include "xfs_dmapi.h"
 #include "xfs_quota.h"
 #include "xfs_mount.h"
+#include "xfs_alloc.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_alloc_btree.h"
 #include "xfs_ialloc_btree.h"

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

* Re: Review: Factor some common freelist checks
  2007-08-08 23:40 Review: Factor some common freelist checks David Chinner
@ 2007-08-09  0:53 ` Christoph Hellwig
  0 siblings, 0 replies; 2+ messages in thread
From: Christoph Hellwig @ 2007-08-09  0:53 UTC (permalink / raw)
  To: David Chinner; +Cc: xfs-dev, xfs-oss

On Thu, Aug 09, 2007 at 09:40:44AM +1000, David Chinner wrote:
> Suggested by Tim - don't duplicate the code used to check
> the longest available extent on the freelist.
> 
> [we've got to clean up this header include mess.]

Just move it out of line, it'squite large anyway if you look at
all the branches (and there's two more hidden behing XFS_MIN_FREELIST_PAG).

Also I'd suggest returning longest from the function instead of using a
pointer to return the value.

in the end we'd have something like:

xfs_extlen_t
xfs_alloc_min_freelist(
	xfs_mount_t	*mp,
	xfs_perag_t	*pag)
{
	xfs_extlen_t	need, delta;

	need = XFS_MIN_FREELIST_PAG(pag, mp);
	if (need > pag->pagf_flcount)
		delta = need - pag->pagf_flcount;
	else
		delta = 0;

	if (pag->pagf_longest > delta)
		return pag->pagf_longest - delta;
	return pag->pagf_flcount > 0 || pag->pagf_longest > 0;
}

> 
> Signed-off-by: Dave Chinner <dgc@sgi.com>
> 
> ---
>  fs/xfs/dmapi/xfs_dm.c          |    2 +-
>  fs/xfs/dmapi/xfs_dm_bhv.c      |    2 +-
>  fs/xfs/dmapi/xfs_dm_fsops.c    |    2 +-
>  fs/xfs/linux-2.6/xfs_ioctl.c   |    2 +-
>  fs/xfs/linux-2.6/xfs_iops.c    |    2 +-
>  fs/xfs/linux-2.6/xfs_ksyms.c   |    2 +-
>  fs/xfs/linux-2.6/xfs_lrw.c     |    2 +-
>  fs/xfs/linux-2.6/xfs_super.c   |    2 +-
>  fs/xfs/linux-2.6/xfs_vfs.c     |    2 +-
>  fs/xfs/quota/xfs_dquot.c       |    2 +-
>  fs/xfs/quota/xfs_dquot_item.c  |    2 +-
>  fs/xfs/quota/xfs_qm.c          |    2 +-
>  fs/xfs/quota/xfs_qm_bhv.c      |    2 +-
>  fs/xfs/quota/xfs_qm_ksyms.c    |    2 +-
>  fs/xfs/quota/xfs_qm_stats.c    |    2 +-
>  fs/xfs/quota/xfs_qm_syscalls.c |    2 +-
>  fs/xfs/quota/xfs_trans_dquot.c |    2 +-
>  fs/xfs/xfs_alloc.c             |    7 ++-----
>  fs/xfs/xfs_alloc.h             |   19 +++++++++++++++++--
>  fs/xfs/xfs_bmap.c              |   12 ++----------
>  fs/xfs/xfs_filestream.c        |    9 ++-------
>  fs/xfs/xfs_iomap.c             |    2 +-
>  22 files changed, 41 insertions(+), 42 deletions(-)
> 
> Index: 2.6.x-xfs-new/fs/xfs/xfs_alloc.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_alloc.c	2007-06-25 13:56:20.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/xfs_alloc.c	2007-06-25 14:06:05.123181552 +1000
> @@ -1858,15 +1858,12 @@ xfs_alloc_fix_freelist(
>  	}
>  
>  	if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
> -		need = XFS_MIN_FREELIST_PAG(pag, mp);
> -		delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
>  		/*
>  		 * If it looks like there isn't a long enough extent, or enough
>  		 * total blocks, reject it.
>  		 */
> -		longest = (pag->pagf_longest > delta) ?
> -			(pag->pagf_longest - delta) :
> -			(pag->pagf_flcount > 0 || pag->pagf_longest > 0);
> +		need = XFS_MIN_FREELIST_PAG(pag, mp);
> +		xfs_alloc_min_freelist(mp, pag, &longest);
>  		if ((args->minlen + args->alignment + args->minalignslop - 1) >
>  				longest ||
>  		    ((int)(pag->pagf_freeblks + pag->pagf_flcount -
> Index: 2.6.x-xfs-new/fs/xfs/xfs_alloc.h
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_alloc.h	2007-05-22 19:04:51.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/xfs_alloc.h	2007-06-25 14:14:13.627226544 +1000
> @@ -19,8 +19,6 @@
>  #define	__XFS_ALLOC_H__
>  
>  struct xfs_buf;
> -struct xfs_mount;
> -struct xfs_perag;
>  struct xfs_trans;
>  
>  /*
> @@ -207,6 +205,23 @@ xfs_alloc_clear_busy(xfs_trans_t *tp,
>  		xfs_agnumber_t ag,
>  		int idx);
>  
> +/*
> + * Determine the longest free extent available in the AG supplied
> + */
> +STATIC_INLINE void
> +xfs_alloc_min_freelist(
> +	xfs_mount_t	*mp,
> +	xfs_perag_t	*pag,
> +	xfs_extlen_t	*longest)
> +{
> +	xfs_extlen_t	need, delta;
> +
> +	need = XFS_MIN_FREELIST_PAG(pag, mp);
> +	delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
> +	*longest = (pag->pagf_longest > delta) ?
> +		  (pag->pagf_longest - delta) :
> +		  (pag->pagf_flcount > 0 || pag->pagf_longest > 0);
> +}
>  
>  #endif	/* __KERNEL__ */
>  
> Index: 2.6.x-xfs-new/fs/xfs/xfs_bmap.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_bmap.c	2007-06-25 13:56:11.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/xfs_bmap.c	2007-06-25 14:11:19.905965882 +1000
> @@ -2703,9 +2703,6 @@ xfs_bmap_btalloc(
>  	xfs_agnumber_t	startag;
>  	xfs_alloc_arg_t	args;
>  	xfs_extlen_t	blen;
> -	xfs_extlen_t	delta;
> -	xfs_extlen_t	longest;
> -	xfs_extlen_t	need;
>  	xfs_extlen_t	nextminlen = 0;
>  	xfs_perag_t	*pag;
>  	int		nullfb;		/* true if ap->firstblock isn't set */
> @@ -2787,13 +2784,8 @@ xfs_bmap_btalloc(
>  			 * See xfs_alloc_fix_freelist...
>  			 */
>  			if (pag->pagf_init) {
> -				need = XFS_MIN_FREELIST_PAG(pag, mp);
> -				delta = need > pag->pagf_flcount ?
> -					need - pag->pagf_flcount : 0;
> -				longest = (pag->pagf_longest > delta) ?
> -					(pag->pagf_longest - delta) :
> -					(pag->pagf_flcount > 0 ||
> -					 pag->pagf_longest > 0);
> +				xfs_extlen_t	longest;
> +				xfs_alloc_min_freelist(mp, pag, &longest);
>  				if (blen < longest)
>  					blen = longest;
>  			} else
> Index: 2.6.x-xfs-new/fs/xfs/xfs_filestream.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_filestream.c	2007-06-22 18:07:15.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/xfs_filestream.c	2007-06-25 14:11:11.355085273 +1000
> @@ -140,7 +140,7 @@ _xfs_filestream_pick_ag(
>  	xfs_extlen_t	minlen)
>  {
>  	int		err, trylock, nscan;
> -	xfs_extlen_t	delta, longest, need, free, minfree, maxfree = 0;
> +	xfs_extlen_t	longest, free, minfree, maxfree = 0;
>  	xfs_agnumber_t	ag, max_ag = NULLAGNUMBER;
>  	struct xfs_perag *pag;
>  
> @@ -186,12 +186,7 @@ _xfs_filestream_pick_ag(
>  			goto next_ag;
>  		}
>  
> -		need = XFS_MIN_FREELIST_PAG(pag, mp);
> -		delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
> -		longest = (pag->pagf_longest > delta) ?
> -		          (pag->pagf_longest - delta) :
> -		          (pag->pagf_flcount > 0 || pag->pagf_longest > 0);
> -
> +		xfs_alloc_min_freelist(mp, pag, &longest);
>  		if (((minlen && longest >= minlen) ||
>  		     (!minlen && pag->pagf_freeblks >= minfree)) &&
>  		    (!pag->pagf_metadata || !(flags & XFS_PICK_USERDATA) ||
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ioctl.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_ioctl.c	2007-06-20 17:59:36.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ioctl.c	2007-06-25 14:13:21.298075718 +1000
> @@ -24,9 +24,9 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_iops.c	2007-05-29 16:18:03.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c	2007-06-25 14:13:02.976473863 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_lrw.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_lrw.c	2007-06-20 17:53:36.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_lrw.c	2007-06-25 14:14:30.457023840 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c	2007-06-20 17:53:35.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c	2007-06-25 14:14:43.087370791 +1000
> @@ -25,10 +25,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_vfs.c	2007-01-16 10:54:16.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c	2007-06-25 14:14:56.941557595 +1000
> @@ -25,9 +25,9 @@
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
>  #include "xfs_imap.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_quota.h"
>  
>  int
> Index: 2.6.x-xfs-new/fs/xfs/xfs_iomap.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iomap.c	2007-06-08 21:36:26.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/xfs_iomap.c	2007-06-25 14:12:09.347493741 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm.c	2007-06-08 21:36:26.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c	2007-06-25 14:19:43.936003898 +1000
> @@ -26,9 +26,9 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_da_btree.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_bhv.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm_bhv.c	2007-01-16 10:54:14.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_bhv.c	2007-06-25 14:16:45.923295350 +1000
> @@ -26,9 +26,9 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_fsops.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm_fsops.c	2007-01-16 10:54:14.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm_fsops.c	2007-06-25 14:18:12.523963285 +1000
> @@ -26,9 +26,9 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_ksyms.c	2007-06-25 13:56:20.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c	2007-06-25 14:15:49.646659958 +1000
> @@ -27,10 +27,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_da_btree.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_dquot.c	2007-06-25 13:56:20.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot.c	2007-06-25 14:19:04.513160782 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_dquot_item.c	2007-06-25 13:56:20.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c	2007-06-25 14:19:21.906884992 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm.c	2007-06-25 13:56:20.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c	2007-06-25 14:21:29.450325544 +1000
> @@ -25,10 +25,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_bhv.c	2007-02-07 13:24:32.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c	2007-06-25 14:20:21.775098823 +1000
> @@ -25,10 +25,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_ksyms.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_ksyms.c	2007-01-16 10:54:16.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_ksyms.c	2007-06-25 14:21:01.018011537 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_stats.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_stats.c	2007-02-07 13:24:32.000000000 +1100
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_stats.c	2007-06-25 14:21:14.844219110 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_syscalls.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_syscalls.c	2007-03-29 19:03:30.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_syscalls.c	2007-06-25 14:18:28.637854830 +1000
> @@ -27,10 +27,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_trans_dquot.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_trans_dquot.c	2007-03-29 19:03:30.000000000 +1000
> +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_trans_dquot.c	2007-06-25 14:18:48.239290090 +1000
> @@ -24,10 +24,10 @@
>  #include "xfs_sb.h"
>  #include "xfs_ag.h"
>  #include "xfs_dir2.h"
> -#include "xfs_alloc.h"
>  #include "xfs_dmapi.h"
>  #include "xfs_quota.h"
>  #include "xfs_mount.h"
> +#include "xfs_alloc.h"
>  #include "xfs_bmap_btree.h"
>  #include "xfs_alloc_btree.h"
>  #include "xfs_ialloc_btree.h"
> 
> 
---end quoted text---

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

end of thread, other threads:[~2007-08-09  1:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-08 23:40 Review: Factor some common freelist checks David Chinner
2007-08-09  0:53 ` Christoph Hellwig

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