On Fri, Apr 22, 2011 at 01:09:20PM +0200, Anisse Astier wrote:
> Yep, I figured that much, it just took me a while to get up & running
> another system capable of building xfsprogs.
>
> Now that I have that, and that I commented the do_warn, xfs_repair is
> still running after the previous failing point:
> [???]
> - agno = 17
> bad key in bmbt root (is 73434, would reset to 74194) in inode 2283178100
> data fork
> bad fwd (right) sibling pointer (saw 145202888 should be NULLDFSBNO)
> bad data fork in inode 2283178100
> would have cleared inode 2283178100
> - agno = 18
> [???] (ongoing)
>
> Once this is done, I'll test with %llu instead of %u.
>
> But please be patient, it's a 900GB filesystem (half-full) with just an 800
> MHz ARM9 processor doing the work, so xfs_repair takes hours to complete.
> Plus I won't have time to do many tests before next week.
>
> To be continued.
Any updates?
In the meantime I cooked up a little patch (below) to add format string
checking to the repair-internal varargs printing helpers, which produces
a lot of warnings. A lot of that is different underlying types for
fixes-size 64-bit types, but there's quite a few legit errors there as
well.
Index: xfsprogs-dev/repair/err_protos.h
===================================================================
--- xfsprogs-dev.orig/repair/err_protos.h 2011-04-22 12:45:25.018475622
+0200
+++ xfsprogs-dev/repair/err_protos.h 2011-04-22 12:47:22.014508467 +0200
@@ -17,10 +17,14 @@
*/
/* abort, internal error */
-void __attribute__((noreturn)) do_abort(char const *, ...);
+void __attribute__((noreturn)) do_abort(char const *, ...)
+ __attribute__((format(printf,1,2)));
/* abort, system error */
-void __attribute__((noreturn)) do_error(char const *, ...);
+void __attribute__((noreturn)) do_error(char const *, ...)
+ __attribute__((format(printf,1,2)));
/* issue warning */
-void do_warn(char const *, ...);
+void do_warn(char const *, ...)
+ __attribute__((format(printf,1,2)));
/* issue log message */
-void do_log(char const *, ...);
+void do_log(char const *, ...)
+ __attribute__((format(printf,1,2)));
|