Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 314124 Details for
Bug 458289
GFS2: rm on multiple nodes causes panic
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Revised patch
bz458289.try3.patch (text/plain), 3.13 KB, created by
Robert Peterson
on 2008-08-12 18:22:46 UTC
(
hide
)
Description:
Revised patch
Filename:
MIME Type:
Creator:
Robert Peterson
Created:
2008-08-12 18:22:46 UTC
Size:
3.13 KB
patch
obsolete
>diff -pur a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c >--- a/fs/gfs2/ops_inode.c 2008-08-12 09:00:50.000000000 -0500 >+++ b/fs/gfs2/ops_inode.c 2008-08-12 10:50:56.000000000 -0500 >@@ -159,9 +159,13 @@ static int gfs2_link(struct dentry *old_ > gfs2_holder_init(dip->i_gl, LM_ST_EXCLUSIVE, 0, ghs); > gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, ghs + 1); > >- error = gfs2_glock_nq_m(2, ghs); >+ error = gfs2_glock_nq(ghs); /* parent */ > if (error) >- goto out; >+ goto out_parent; >+ >+ error = gfs2_glock_nq(ghs + 1); /* child */ >+ if (error) >+ goto out_child; > > error = permission(dir, MAY_WRITE | MAY_EXEC, NULL); > if (error) >@@ -245,8 +249,10 @@ out_alloc: > if (alloc_required) > gfs2_alloc_put(dip); > out_gunlock: >- gfs2_glock_dq_m(2, ghs); >-out: >+ gfs2_glock_dq(ghs + 1); >+out_child: >+ gfs2_glock_dq(ghs); >+out_parent: > gfs2_holder_uninit(ghs); > gfs2_holder_uninit(ghs + 1); > if (!error) { >@@ -302,7 +308,7 @@ static int gfs2_unlink(struct inode *dir > > error = gfs2_unlink_ok(dip, &dentry->d_name, ip); > if (error) >- goto out_rgrp; >+ goto out_gunlock; > > error = gfs2_trans_begin(sdp, 2*RES_DINODE + RES_LEAF + RES_RG_BIT, 0); > if (error) >@@ -316,6 +322,7 @@ static int gfs2_unlink(struct inode *dir > > out_end_trans: > gfs2_trans_end(sdp); >+out_gunlock: > gfs2_glock_dq(ghs + 2); > out_rgrp: > gfs2_holder_uninit(ghs + 2); >@@ -485,7 +492,6 @@ static int gfs2_rmdir(struct inode *dir, > struct gfs2_holder ri_gh; > int error; > >- > error = gfs2_rindex_hold(sdp, &ri_gh); > if (error) > return error; >@@ -495,9 +501,17 @@ static int gfs2_rmdir(struct inode *dir, > rgd = gfs2_blk2rgrpd(sdp, ip->i_no_addr); > gfs2_holder_init(rgd->rd_gl, LM_ST_EXCLUSIVE, 0, ghs + 2); > >- error = gfs2_glock_nq_m(3, ghs); >+ error = gfs2_glock_nq(ghs); /* parent */ > if (error) >- goto out; >+ goto out_parent; >+ >+ error = gfs2_glock_nq(ghs + 1); /* child */ >+ if (error) >+ goto out_child; >+ >+ error = gfs2_glock_nq(ghs + 2); /* rgrp */ >+ if (error) >+ goto out_rgrp; > > error = gfs2_unlink_ok(dip, &dentry->d_name, ip); > if (error) >@@ -521,13 +535,16 @@ static int gfs2_rmdir(struct inode *dir, > error = gfs2_rmdiri(dip, &dentry->d_name, ip); > > gfs2_trans_end(sdp); >- > out_gunlock: >- gfs2_glock_dq_m(3, ghs); >-out: >- gfs2_holder_uninit(ghs); >- gfs2_holder_uninit(ghs + 1); >+ gfs2_glock_dq(ghs + 2); >+out_rgrp: > gfs2_holder_uninit(ghs + 2); >+ gfs2_glock_dq(ghs + 1); >+out_child: >+ gfs2_holder_uninit(ghs + 1); >+ gfs2_glock_dq(ghs); >+out_parent: >+ gfs2_holder_uninit(ghs); > gfs2_glock_dq_uninit(&ri_gh); > return error; > } >@@ -639,9 +656,11 @@ static int gfs2_rename(struct inode *odi > gfs2_holder_init(nrgd->rd_gl, LM_ST_EXCLUSIVE, 0, ghs + num_gh++); > } > >- error = gfs2_glock_nq_m(num_gh, ghs); >- if (error) >- goto out_uninit; >+ for (x = 0; x < num_gh; x++) { >+ error = gfs2_glock_nq(ghs + x); >+ if (error) >+ goto out_gunlock; >+ } > > /* Check out the old directory */ > >@@ -804,10 +823,10 @@ out_alloc: > if (alloc_required) > gfs2_alloc_put(ndip); > out_gunlock: >- gfs2_glock_dq_m(num_gh, ghs); >-out_uninit: >- for (x = 0; x < num_gh; x++) >+ while (x--) { >+ gfs2_glock_dq(ghs + x); > gfs2_holder_uninit(ghs + x); >+ } > out_gunlock_r: > if (dir_rename) > gfs2_glock_dq_uninit(&r_gh);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 458289
:
314011
|
314040
| 314124 |
314125