xfs
[Top] [All Lists]

Re: Could not allocate buf during xfs_fsr?

To: Nathan Scott <nathans@xxxxxxx>
Subject: Re: Could not allocate buf during xfs_fsr?
From: Justin Piszcz <jpiszcz@xxxxxxxxxxxxxxx>
Date: Fri, 31 Mar 2006 06:54:34 -0500 (EST)
Cc: Ralf Hildebrandt <Ralf.Hildebrandt@xxxxxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <20060328050956.GB2177@frodo>
References: <Pine.LNX.4.64.0603260919080.17017@p34> <20060326143103.GA11637@xxxxxxxxxx> <20060328050956.GB2177@frodo>
Sender: linux-xfs-bounce@xxxxxxxxxxx
What version is this patch against?

On Tue, 28 Mar 2006, Nathan Scott wrote:

On Sun, Mar 26, 2006 at 04:31:03PM +0200, Ralf Hildebrandt wrote:
* Justin Piszcz <jpiszcz@xxxxxxxxxxxxxxx>:
What does this mean?

Mar 26 08:32:30 p34 fsr[14207]: could not allocate buf: /d3/.fsr/ag14/tmp14207
Mar 26 08:32:30 p34 fsr[14207]: could not allocate buf: /d3/.fsr/ag15/tmp14207
Mar 26 08:32:30 p34 fsr[14207]: could not allocate buf: /d3/.fsr/ag0/tmp14207
Mar 26 08:32:30 p34 fsr[14207]: could not allocate buf: /d3/.fsr/ag1/tmp14207

The FS is 373GB, with 221GB used and 153GB available.

Same thing happened to me just today when I ran xfs_fsr on /home!

Could you guys try this xfs_fsr patch for me and see if it helps
plug your leaks?

thanks.

--
Nathan


Index: xfsdump/fsr/xfs_fsr.c
===================================================================
--- xfsdump.orig/fsr/xfs_fsr.c
+++ xfsdump/fsr/xfs_fsr.c
@@ -1062,6 +1062,8 @@ packfile(char *fname, char *tname, int f
                if ((ffd = open(ffname, openopts, 0666)) < 0) {
                        fsrprintf(_("could not open fragfile: %s : %s\n"),
                                   ffname, strerror(errno));
+                       close(tfd);
+                       free(fbuf);
                        return -1;
                }
                unlink(ffname);
@@ -1114,6 +1116,7 @@ packfile(char *fname, char *tname, int f
        if (cur_nextents <= new_nextents) {
                if (vflag)
                        fsrprintf(_("No improvement will be made (skipping): 
%s\n"), fname);
+               free(fbuf);
                close(tfd);
                return 1; /* no change/no error */
        }
@@ -1187,6 +1190,7 @@ packfile(char *fname, char *tname, int f
                                        }
                                }
                                free(fbuf);
+                               close(tfd);
                                return -1;
                        }
                        if (nfrags) {



<Prev in Thread] Current Thread [Next in Thread>