The unified diff between revisions [bb59f6ce..] and [07a39d13..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "src/fs/coss/store_coss.h"
# from [f54c5c80a387b623ee3abf42ac565585a41df44f]
# to [f844eb6984673084b6f79b7dcb39b7203c7eb7b4]
#
# patch "src/fs/coss/store_dir_coss.c"
# from [bd31c1d0a49adf2f5f2d07cee7ff86633f9cac86]
# to [42be6a729e2f18a6e8f8318a5349826148afbd30]
#
============================================================
--- src/fs/coss/store_coss.h f54c5c80a387b623ee3abf42ac565585a41df44f
+++ src/fs/coss/store_coss.h f844eb6984673084b6f79b7dcb39b7203c7eb7b4
@@ -5,6 +5,8 @@
#define COSS_MEMBUF_SZ 1048576
#endif
+#define COSS_REPORT_INTERVAL 10
+
/* Note that swap_filen in sio/e are actually disk block offsets too! */
typedef struct _cossmembuf CossMemBuf;
============================================================
--- src/fs/coss/store_dir_coss.c bd31c1d0a49adf2f5f2d07cee7ff86633f9cac86
+++ src/fs/coss/store_dir_coss.c 42be6a729e2f18a6e8f8318a5349826148afbd30
@@ -54,7 +54,8 @@ struct _RebuildState {
SwapDir *sd;
int n_read;
FILE *log;
- int speed;
+ int report_interval;
+ int report_current;
struct {
unsigned int clean:1;
} flags;
@@ -244,7 +245,6 @@ storeCossDirRebuild(SwapDir * sd)
CBDATA_INIT_TYPE(RebuildState);
rb = cbdataAlloc(RebuildState);
rb->sd = sd;
- rb->speed = opt_foreground_rebuild ? 1 << 30 : 50;
rb->flags.clean = (unsigned int) clean;
fp = storeCossDirOpenTmpSwapLog(sd, &clean, &zero);
fclose(fp);
@@ -559,9 +559,10 @@ storeCossDirCheckLoadAv(SwapDir *SD, sto
{
#if !USE_AUFSOPS
CossInfo *cs = (CossInfo *) SD->fsdata;
+#else
+ int ql = 0;
#endif
int loadav;
- int ql = 0;
/* Return load, cs->aq.aq_numpending out of MAX_ASYNCOP */
#if USE_AUFSOPS
@@ -935,6 +936,11 @@ storeDirCoss_ReadStripe(RebuildState *rb
cs->rebuild.reading = 1;
/* Use POSIX AIO for now */
debug(47, 2) ("COSS: %s: reading stripe %d\n", SD->path, cs->rebuild.curstripe);
+ if (cs->rebuild.curstripe > rb->report_current) {
+ debug(47, 1) ("COSS: %s: Rebuilding (%d %% completed - %d/%d stripes)\n", SD->path,
+ cs->rebuild.curstripe * 100 / cs->numstripes, cs->rebuild.curstripe, cs->numstripes);
+ rb->report_current += rb->report_interval;
+ }
a_file_read(&cs->aq, cs->fd, cs->rebuild.buf, COSS_MEMBUF_SZ, cs->rebuild.curstripe * COSS_MEMBUF_SZ, storeDirCoss_ReadStripeComplete, rb);
}
@@ -950,7 +956,8 @@ storeDirCoss_StartDiskRebuild(RebuildSta
cs->rebuild.rebuilding = 1;
cs->rebuild.curstripe = 0;
cs->rebuild.buf = xmalloc(COSS_MEMBUF_SZ);
-
+ rb->report_interval = cs->numstripes / COSS_REPORT_INTERVAL;
+ rb->report_current = 0;
debug(47, 2) ("COSS: %s: Beginning disk rebuild.\n", SD->path);
storeDirCoss_ReadStripe(rb);
}