Bug 472003 - GFS2: gfs2_convert stuck in busy loop
Summary: GFS2: gfs2_convert stuck in busy loop
Keywords:
Status: CLOSED DUPLICATE of bug 471618
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: gfs2-utils
Version: 5.3
Hardware: All
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Robert Peterson
QA Contact: Cluster QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2008-11-18 04:30 UTC by Nate Straz
Modified: 2010-01-12 03:41 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-11-18 17:05:21 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Nate Straz 2008-11-18 04:30:46 UTC
Description of problem:

While trying to convert a fresh GFS file system to GFS2, gfs2_convert got stuck in a busy loop.  Attaching to it with gdb shows the following loop.

(gdb) print sdp->num_bufs
$4 = 32769
(gdb) print sdp->bsize
$5 = 4096
(gdb) watch sdp->num_bufs
Hardware watchpoint 1: sdp->num_bufs
(gdb) watch sdp->bsize
Hardware watchpoint 2: sdp->bsize
(gdb) n
62                              osi_list_add(&bh->b_list, &sdp->buf_list);
(gdb) 
63                              continue;
(gdb) 
57              while (sdp->num_bufs * sdp->bsize > 128 << 20) {
(gdb) 
58                      bh = osi_list_entry(sdp->buf_list.prev, struct gfs2_buffer_head,
(gdb) 
60                      if (bh->b_count) {
(gdb) 
61                              osi_list_del(&bh->b_list);
(gdb) 
62                              osi_list_add(&bh->b_list, &sdp->buf_list);
(gdb) 
63                              continue;
(gdb) 
57              while (sdp->num_bufs * sdp->bsize > 128 << 20) {
(gdb) 
58                      bh = osi_list_entry(sdp->buf_list.prev, struct gfs2_buffer_head,
(gdb) 
60                      if (bh->b_count) {
(gdb) 
61                              osi_list_del(&bh->b_list);
(gdb) 
62                              osi_list_add(&bh->b_list, &sdp->buf_list);
(gdb) 
63                              continue;
(gdb) 
57              while (sdp->num_bufs * sdp->bsize > 128 << 20) {
(gdb) 
58                      bh = osi_list_entry(sdp->buf_list.prev, struct gfs2_buffer_head,
(gdb) 
60                      if (bh->b_count) {
(gdb) 
61                              osi_list_del(&bh->b_list);
(gdb) 
62                              osi_list_add(&bh->b_list, &sdp->buf_list);
(gdb) 
63                              continue;
(gdb) 
57              while (sdp->num_bufs * sdp->bsize > 128 << 20) {
(gdb) print sdp->num_bufs
$6 = 32769



Version-Release number of selected component (if applicable):
gfs2-utils-0.1.49-1.el5

How reproducible:
unknown, probably easily.

Steps to Reproduce:
1. mkfs -t gfs
2. mount; umount
3. gfs2_convert
  
Actual results:
See above

Expected results:
gfs2_convert shouldn't eat up 100% of a CPU.

Additional info:

Comment 1 Robert Peterson 2008-11-18 14:43:07 UTC
I already found and this bug while working on bug #471618.  A patch to
fix the problem is already attached to that bugzilla.  The question is
only whether to use this bugzilla to implement the patch or to wait
until I'm finished with that one.  I was going to add it to the other
bugzilla record, but now that this record is open, I think I'm inclined
to use this one instead.  That way the separate problems will treated
separately.  At this point it's a matter of paperwork and ack flags.
Opinions encouraged.

Comment 2 Nate Straz 2008-11-18 17:05:21 UTC
Folding this into 471618.

*** This bug has been marked as a duplicate of bug 471618 ***


Note You need to log in before you can comment on or make changes to this bug.