On Fri, 2 September 2005 17:44:03 +0800, David Teigland wrote: > On Thu, Sep 01, 2005 at 01:35:23PM +0200, Arjan van de Ven wrote: > > > + gfs2_assert(gl->gl_sbd, atomic_read(&gl->gl_count) > 0,); > > > what is gfs2_assert() about anyway? please just use BUG_ON directly > > everywhere > > When a machine has many gfs file systems mounted at once it can be useful > to know which one failed. Does the following look ok? > > #define gfs2_assert(sdp, assertion) \ > do { \ > if (unlikely(!(assertion))) { \ > printk(KERN_ERR \ > "GFS2: fsid=%s: fatal: assertion \"%s\" failed\n" \ > "GFS2: fsid=%s: function = %s\n" \ > "GFS2: fsid=%s: file = %s, line = %u\n" \ > "GFS2: fsid=%s: time = %lu\n", \ > sdp->sd_fsname, # assertion, \ > sdp->sd_fsname, __FUNCTION__, \ > sdp->sd_fsname, __FILE__, __LINE__, \ > sdp->sd_fsname, get_seconds()); \ > BUG(); \ > } \ > } while (0) That's a lot of string constants. I'm not sure how smart current versions of gcc are, but older ones created a new constant for each invocation of such a macro, iirc. So you might want to move the code out of line. Jörn -- There's nothing better for promoting creativity in a medium than making an audience feel "Hmm I could do better than that!" -- Douglas Adams in a slashdot interview -- Linux-cluster@xxxxxxxxxx http://www.redhat.com/mailman/listinfo/linux-cluster