What's the taperalgo? Is it firstfit, largestfit or smallest
Have you enabled splitting?

Try the attached patch

Jean-Louis

Gene Heskett wrote:
On Wednesday, September 22, 2010 06:01:08 am Jean-Louis Martineau did opine:

Attachment included.

Jean-Louis

Jean-Louis Martineau wrote:
I can't find why it flush nothing.

Can you upgrade to latest SVN and try the attached patch, it add mode
degugging.
Add 'debug-driver 1' in amanda.conf

Retry amflush and send me the resulting amflush.1 file.

3.2.0.svn.3434 with patch. taper didn't write, 28Gb in holding disk.

Ran amflush -f Daily by hand.  Returned in about 2 seconds.

diff --git a/server-src/driver.c b/server-src/driver.c
index 6182ee0..148449f 100644
--- a/server-src/driver.c
+++ b/server-src/driver.c
@@ -780,6 +780,7 @@ startaflush_tape(
     disk_t *fit = NULL;
     char *datestamp;
     off_t extra_tapes_size = 0;
+    off_t taper_left;
     char *qname;
     TapeAction result_tape_action;
     char *why_no_new_tape = NULL;
@@ -847,6 +848,11 @@ startaflush_tape(
 	    }
 	}
 
+	if (taper->state & TAPER_STATE_TAPE_STARTED) {
+	    taper_left = taper->left;
+	} else {
+	    taper_left = tape_length;
+	}
 	dp = NULL;
 	datestamp = sched(tapeq.head)->datestamp;
 	switch(taperalgo) {
@@ -857,7 +863,7 @@ startaflush_tape(
 		fit = tapeq.head;
 		while (fit != NULL) {
 		    if (sched(fit)->act_size <=
-		             (fit->splitsize ? extra_tapes_size : taper->left) &&
+		             (fit->splitsize ? extra_tapes_size : taper_left) &&
 			     strcmp(sched(fit)->datestamp, datestamp) <= 0) {
 			dp = fit;
 			fit = NULL;
@@ -883,9 +889,10 @@ startaflush_tape(
 		fit = tapeq.head;
 		while (fit != NULL) {
 		    if(sched(fit)->act_size <=
-		       (fit->splitsize ? extra_tapes_size : taper->left) &&
+		       (fit->splitsize ? extra_tapes_size : taper_left) &&
 		       (!dp || sched(fit)->act_size > sched(dp)->act_size) &&
 		       strcmp(sched(fit)->datestamp, datestamp) <= 0) {
+g_debug("%ld %ld %ld", fit->splitsize, extra_tapes_size, taper->left);
 			dp = fit;
 		    }
 		    fit = fit->next;
@@ -907,7 +914,7 @@ startaflush_tape(
 		fit = dp = tapeq.head;
 		while (fit != NULL) {
 		    if (sched(fit)->act_size <=
-			(fit->splitsize ? extra_tapes_size : taper->left) &&
+			(fit->splitsize ? extra_tapes_size : taper_left) &&
 			(!dp || sched(fit)->act_size < sched(dp)->act_size) &&
 			strcmp(sched(fit)->datestamp, datestamp) <= 0) {
 			dp = fit;
@@ -924,7 +931,7 @@ startaflush_tape(
 		fit = tapeq.tail;
 		while (fit != NULL) {
 		    if (sched(fit)->act_size <=
-			(fit->splitsize ? extra_tapes_size : taper->left) &&
+			(fit->splitsize ? extra_tapes_size : taper_left) &&
 			(!dp || sched(fit)->act_size < sched(dp)->act_size) &&
 			strcmp(sched(fit)->datestamp, datestamp) <= 0) {
 			dp = fit;

Reply via email to