[OpenAFS-devel] Re: [OpenAFS] Re: linux sparc64 volserver crashes (w/ gcc 4.1.2)

Derrick Brashear shadow@gmail.com
Sun, 4 Nov 2007 00:58:31 -0400


------=_Part_19683_20820672.1194152311115
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Moving to -devel.

On 11/4/07, Adam Megacz <megacz@cs.berkeley.edu> wrote:
>
>
> "Derrick Brashear" <shadow@gmail.com> writes:
> > in my source that's
> >     vnode->dataVersion = 1;
> > (on line 257)
> >
> > What's it in yours?
>
> Same.


Able to try this (with gcc 4.12 or whatever)?

--- volprocs.c  30 Oct 2007 15:24:12 -0000      1.34.2.10
+++ src/vol/volprocs.c  4 Nov 2007 04:57:08 -0000
@@ -203,14 +203,14 @@
     struct acl_accessList *ACL;
     ViceFid did;
     Inode inodeNumber, nearInode;
-    char buf[SIZEOF_LARGEDISKVNODE];
-    struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf;
+    /*char buf[SIZEOF_LARGEDISKVNODE];*/
+    struct VnodeDiskObject *vnode/* = (struct VnodeDiskObject *)buf*/;
     struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
     IHandle_t *h;
     FdHandle_t *fdP;
     int code;
     afs_fsize_t length;
-
+    vnode = (struct VnodeDiskObject *)malloc(SIZEOF_LARGEDISKVNODE);
     memset(vnode, 0, SIZEOF_LARGEDISKVNODE);

     V_pref(vp, nearInode);
@@ -274,7 +274,7 @@
     IH_RELEASE(h);
     VNDISK_GET_LEN(length, vnode);
     V_diskused(vp) = nBlocks(length);
-
+    free(vnode);
     return 1;
 }

------=_Part_19683_20820672.1194152311115
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Moving to -devel.<br><br><div><span class="gmail_quote">On 11/4/07, <b class="gmail_sendername">Adam Megacz</b> &lt;<a href="mailto:megacz@cs.berkeley.edu">megacz@cs.berkeley.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>&quot;Derrick Brashear&quot; &lt;<a href="mailto:shadow@gmail.com">shadow@gmail.com</a>&gt; writes:<br>&gt; in my source that&#39;s<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; vnode-&gt;dataVersion = 1;<br>&gt; (on line 257)<br>&gt;<br>&gt; What&#39;s it in yours?
<br><br>Same.</blockquote><div><br>Able to try this (with gcc 4.12 or whatever)?<br><br>--- volprocs.c&nbsp; 30 Oct 2007 15:24:12 -0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://1.34.2.10">1.34.2.10</a><br>+++ src/vol/volprocs.c&nbsp; 4 Nov 2007 04:57:08 -0000
<br>@@ -203,14 +203,14 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; struct acl_accessList *ACL;<br>&nbsp;&nbsp;&nbsp;&nbsp; ViceFid did;<br>&nbsp;&nbsp;&nbsp;&nbsp; Inode inodeNumber, nearInode;<br>-&nbsp;&nbsp;&nbsp; char buf[SIZEOF_LARGEDISKVNODE];<br>-&nbsp;&nbsp;&nbsp; struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf;
<br>+&nbsp;&nbsp;&nbsp; /*char buf[SIZEOF_LARGEDISKVNODE];*/<br>+&nbsp;&nbsp;&nbsp; struct VnodeDiskObject *vnode/* = (struct VnodeDiskObject *)buf*/;<br>&nbsp;&nbsp;&nbsp;&nbsp; struct VnodeClassInfo *vcp = &amp;VnodeClassInfo[vLarge];<br>&nbsp;&nbsp;&nbsp;&nbsp; IHandle_t *h;<br>&nbsp;&nbsp;&nbsp;&nbsp; FdHandle_t *fdP;
<br>&nbsp;&nbsp;&nbsp;&nbsp; int code;<br>&nbsp;&nbsp;&nbsp;&nbsp; afs_fsize_t length;<br>-<br>+&nbsp;&nbsp;&nbsp; vnode = (struct VnodeDiskObject *)malloc(SIZEOF_LARGEDISKVNODE);<br>&nbsp;&nbsp;&nbsp;&nbsp; memset(vnode, 0, SIZEOF_LARGEDISKVNODE);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; V_pref(vp, nearInode);<br>@@ -274,7 +274,7 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp; IH_RELEASE(h);<br>&nbsp;&nbsp;&nbsp;&nbsp; VNDISK_GET_LEN(length, vnode);<br>&nbsp;&nbsp;&nbsp;&nbsp; V_diskused(vp) = nBlocks(length);<br>-<br>+&nbsp;&nbsp;&nbsp; free(vnode);<br>&nbsp;&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;}<br>&nbsp;<br>&nbsp;</div><br></div><br>

------=_Part_19683_20820672.1194152311115--