* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue @ 2010-07-21 14:48 Jiaju Zhang 2010-07-21 15:17 ` Wengang Wang 0 siblings, 1 reply; 11+ messages in thread From: Jiaju Zhang @ 2010-07-21 14:48 UTC (permalink / raw) To: ocfs2-devel Hi, This is an improved patch for the bug https://bugzilla.novell.com/show_bug.cgi?id=614332 (also http://oss.oracle.com/bugzilla/show_bug.cgi?id=1278) It is a nested PR lock calling issue, the referenced stack trace is as: smbd D ffff8800013d0600 0 9522 5608 0x00000000 ffff88002ca7fb18 0000000000000282 ffff88002f964500 ffff88002ca7fa98 ffff8800013d0600 ffff88002ca7fae0 ffff88002f964340 ffff88002f964340 ffff88002ca7ffd8 ffff88002ca7ffd8 ffff88002f964340 ffff88002f964340 Call Trace: [<ffffffff80350425>] schedule_timeout+0x175/0x210 [<ffffffff8034f580>] wait_for_common+0xf0/0x210 [<ffffffffa03e12b9>] __ocfs2_cluster_lock+0x3b9/0xa90 [ocfs2] [<ffffffffa03e7665>] ocfs2_inode_lock_full_nested+0x255/0xdb0 [ocfs2] [<ffffffffa0446019>] ocfs2_get_acl+0x69/0x120 [ocfs2] [<ffffffffa0446368>] ocfs2_check_acl+0x28/0x80 [ocfs2] [<ffffffff800e3507>] acl_permission_check+0x57/0xb0 [<ffffffff800e357d>] generic_permission+0x1d/0xc0 [<ffffffffa03eecea>] ocfs2_permission+0x10a/0x1d0 [ocfs2] [<ffffffff800e3f65>] inode_permission+0x45/0x100 [<ffffffff800d86b3>] sys_chdir+0x53/0x90 [<ffffffff80007458>] system_call_fastpath+0x16/0x1b [<00007f34a4ef6927>] 0x7f34a4ef6927 Many thanks for your review and comments;) Thanks, Jiaju Signed-off-by: <jjzhang@suse.de> Cc: Joel Becker <Joel.Becker@oracle.com> Cc: Mark Fasheh <mfasheh@suse.com> Cc: Sunil Mushran <sunil.mushran@oracle.com> Cc: Tao Ma <tao.ma@oracle.com> Cc: Tiger Yang <tiger.yang@oracle.com> Cc: Wengang Wang <wen.gang.wang@oracle.com> --- fs/ocfs2/acl.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c index da70229..ecf73f4 100644 --- a/fs/ocfs2/acl.c +++ b/fs/ocfs2/acl.c @@ -290,17 +290,30 @@ static int ocfs2_set_acl(handle_t *handle, int ocfs2_check_acl(struct inode *inode, int mask) { - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct posix_acl *acl; + struct buffer_head *di_bh = NULL; + int ret = -EAGAIN; + + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) + return ret; + + ret = ocfs2_read_inode_block(inode, &di_bh); + if (ret < 0) { + mlog_errno(ret); + return ret; + } + + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); if (IS_ERR(acl)) return PTR_ERR(acl); if (acl) { - int ret = posix_acl_permission(inode, acl, mask); + ret = posix_acl_permission(inode, acl, mask); posix_acl_release(acl); - return ret; } - return -EAGAIN; + return ret; } int ocfs2_acl_chmod(struct inode *inode) ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-21 14:48 [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue Jiaju Zhang @ 2010-07-21 15:17 ` Wengang Wang 2010-07-21 16:05 ` Jiaju Zhang 0 siblings, 1 reply; 11+ messages in thread From: Wengang Wang @ 2010-07-21 15:17 UTC (permalink / raw) To: ocfs2-devel On 10-07-21 22:48, Jiaju Zhang wrote: > Hi, > > This is an improved patch for the bug > https://bugzilla.novell.com/show_bug.cgi?id=614332 > (also http://oss.oracle.com/bugzilla/show_bug.cgi?id=1278) > > It is a nested PR lock calling issue, the referenced stack trace is > as: > smbd D ffff8800013d0600 0 9522 5608 0x00000000 > ffff88002ca7fb18 0000000000000282 ffff88002f964500 ffff88002ca7fa98 > ffff8800013d0600 ffff88002ca7fae0 ffff88002f964340 ffff88002f964340 > ffff88002ca7ffd8 ffff88002ca7ffd8 ffff88002f964340 ffff88002f964340 > Call Trace: > [<ffffffff80350425>] schedule_timeout+0x175/0x210 > [<ffffffff8034f580>] wait_for_common+0xf0/0x210 > [<ffffffffa03e12b9>] __ocfs2_cluster_lock+0x3b9/0xa90 [ocfs2] > [<ffffffffa03e7665>] ocfs2_inode_lock_full_nested+0x255/0xdb0 [ocfs2] > [<ffffffffa0446019>] ocfs2_get_acl+0x69/0x120 [ocfs2] > [<ffffffffa0446368>] ocfs2_check_acl+0x28/0x80 [ocfs2] > [<ffffffff800e3507>] acl_permission_check+0x57/0xb0 > [<ffffffff800e357d>] generic_permission+0x1d/0xc0 > [<ffffffffa03eecea>] ocfs2_permission+0x10a/0x1d0 [ocfs2] > [<ffffffff800e3f65>] inode_permission+0x45/0x100 > [<ffffffff800d86b3>] sys_chdir+0x53/0x90 > [<ffffffff80007458>] system_call_fastpath+0x16/0x1b > [<00007f34a4ef6927>] 0x7f34a4ef6927 > > Many thanks for your review and comments;) > > Thanks, > Jiaju > > Signed-off-by: <jjzhang@suse.de> > Cc: Joel Becker <Joel.Becker@oracle.com> > Cc: Mark Fasheh <mfasheh@suse.com> > Cc: Sunil Mushran <sunil.mushran@oracle.com> > Cc: Tao Ma <tao.ma@oracle.com> > Cc: Tiger Yang <tiger.yang@oracle.com> > Cc: Wengang Wang <wen.gang.wang@oracle.com> > --- > fs/ocfs2/acl.c | 21 +++++++++++++++++---- > 1 files changed, 17 insertions(+), 4 deletions(-) > > diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c > index da70229..ecf73f4 100644 > --- a/fs/ocfs2/acl.c > +++ b/fs/ocfs2/acl.c > @@ -290,17 +290,30 @@ static int ocfs2_set_acl(handle_t *handle, > > int ocfs2_check_acl(struct inode *inode, int mask) > { > - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); > + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); > + struct posix_acl *acl; > + struct buffer_head *di_bh = NULL; > + int ret = -EAGAIN; > + > + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) > + return ret; > + > + ret = ocfs2_read_inode_block(inode, &di_bh); > + if (ret < 0) { > + mlog_errno(ret); > + return ret; > + } > + > + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); From here on, you need to release di_bh. regards, wengang. > > if (IS_ERR(acl)) > return PTR_ERR(acl); > if (acl) { > - int ret = posix_acl_permission(inode, acl, mask); > + ret = posix_acl_permission(inode, acl, mask); > posix_acl_release(acl); > - return ret; > } > > - return -EAGAIN; > + return ret; > } > > int ocfs2_acl_chmod(struct inode *inode) ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-21 15:17 ` Wengang Wang @ 2010-07-21 16:05 ` Jiaju Zhang 2010-07-21 18:26 ` Sunil Mushran 0 siblings, 1 reply; 11+ messages in thread From: Jiaju Zhang @ 2010-07-21 16:05 UTC (permalink / raw) To: ocfs2-devel On Wed, Jul 21, 2010 at 11:17:01PM +0800, Wengang Wang wrote: > On 10-07-21 22:48, Jiaju Zhang wrote: > > Hi, > > > > This is an improved patch for the bug > > https://bugzilla.novell.com/show_bug.cgi?id=614332 > > (also http://oss.oracle.com/bugzilla/show_bug.cgi?id=1278) > > > > It is a nested PR lock calling issue, the referenced stack trace is > > as: > > smbd D ffff8800013d0600 0 9522 5608 0x00000000 > > ffff88002ca7fb18 0000000000000282 ffff88002f964500 ffff88002ca7fa98 > > ffff8800013d0600 ffff88002ca7fae0 ffff88002f964340 ffff88002f964340 > > ffff88002ca7ffd8 ffff88002ca7ffd8 ffff88002f964340 ffff88002f964340 > > Call Trace: > > [<ffffffff80350425>] schedule_timeout+0x175/0x210 > > [<ffffffff8034f580>] wait_for_common+0xf0/0x210 > > [<ffffffffa03e12b9>] __ocfs2_cluster_lock+0x3b9/0xa90 [ocfs2] > > [<ffffffffa03e7665>] ocfs2_inode_lock_full_nested+0x255/0xdb0 [ocfs2] > > [<ffffffffa0446019>] ocfs2_get_acl+0x69/0x120 [ocfs2] > > [<ffffffffa0446368>] ocfs2_check_acl+0x28/0x80 [ocfs2] > > [<ffffffff800e3507>] acl_permission_check+0x57/0xb0 > > [<ffffffff800e357d>] generic_permission+0x1d/0xc0 > > [<ffffffffa03eecea>] ocfs2_permission+0x10a/0x1d0 [ocfs2] > > [<ffffffff800e3f65>] inode_permission+0x45/0x100 > > [<ffffffff800d86b3>] sys_chdir+0x53/0x90 > > [<ffffffff80007458>] system_call_fastpath+0x16/0x1b > > [<00007f34a4ef6927>] 0x7f34a4ef6927 > > > > Many thanks for your review and comments;) > > > > Thanks, > > Jiaju > > > > Signed-off-by: <jjzhang@suse.de> > > Cc: Joel Becker <Joel.Becker@oracle.com> > > Cc: Mark Fasheh <mfasheh@suse.com> > > Cc: Sunil Mushran <sunil.mushran@oracle.com> > > Cc: Tao Ma <tao.ma@oracle.com> > > Cc: Tiger Yang <tiger.yang@oracle.com> > > Cc: Wengang Wang <wen.gang.wang@oracle.com> > > --- > > fs/ocfs2/acl.c | 21 +++++++++++++++++---- > > 1 files changed, 17 insertions(+), 4 deletions(-) > > > > diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c > > index da70229..ecf73f4 100644 > > --- a/fs/ocfs2/acl.c > > +++ b/fs/ocfs2/acl.c > > @@ -290,17 +290,30 @@ static int ocfs2_set_acl(handle_t *handle, > > > > int ocfs2_check_acl(struct inode *inode, int mask) > > { > > - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); > > + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); > > + struct posix_acl *acl; > > + struct buffer_head *di_bh = NULL; > > + int ret = -EAGAIN; > > + > > + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) > > + return ret; > > + > > + ret = ocfs2_read_inode_block(inode, &di_bh); > > + if (ret < 0) { > > + mlog_errno(ret); > > + return ret; > > + } > > + > > + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); > > >From here on, you need to release di_bh. Oh yes, sorry, I should check the code more closely before sending it out;) Here is the new patch: Signed-off-by: Jiaju Zhang <jjzhang@suse.de> --- fs/ocfs2/acl.c | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c index da70229..a1d25ca 100644 --- a/fs/ocfs2/acl.c +++ b/fs/ocfs2/acl.c @@ -290,17 +290,32 @@ static int ocfs2_set_acl(handle_t *handle, int ocfs2_check_acl(struct inode *inode, int mask) { - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct posix_acl *acl; + struct buffer_head *di_bh = NULL; + int ret = -EAGAIN; + + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) + return ret; + + ret = ocfs2_read_inode_block(inode, &di_bh); + if (ret < 0) { + mlog_errno(ret); + return ret; + } + + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); + + brelse(di_bh); if (IS_ERR(acl)) return PTR_ERR(acl); if (acl) { - int ret = posix_acl_permission(inode, acl, mask); + ret = posix_acl_permission(inode, acl, mask); posix_acl_release(acl); - return ret; } - return -EAGAIN; + return ret; } int ocfs2_acl_chmod(struct inode *inode) ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-21 16:05 ` Jiaju Zhang @ 2010-07-21 18:26 ` Sunil Mushran 2010-07-22 5:26 ` Jiaju Zhang 2010-07-23 22:42 ` Tiger Yang 0 siblings, 2 replies; 11+ messages in thread From: Sunil Mushran @ 2010-07-21 18:26 UTC (permalink / raw) To: ocfs2-devel Why not add _ocfs2_get_acl() that does the same without taking the cluster locks? On 07/21/2010 09:05 AM, Jiaju Zhang wrote: > On Wed, Jul 21, 2010 at 11:17:01PM +0800, Wengang Wang wrote: > >> On 10-07-21 22:48, Jiaju Zhang wrote: >> >>> Hi, >>> >>> This is an improved patch for the bug >>> https://bugzilla.novell.com/show_bug.cgi?id=614332 >>> (also http://oss.oracle.com/bugzilla/show_bug.cgi?id=1278) >>> >>> It is a nested PR lock calling issue, the referenced stack trace is >>> as: >>> smbd D ffff8800013d0600 0 9522 5608 0x00000000 >>> ffff88002ca7fb18 0000000000000282 ffff88002f964500 ffff88002ca7fa98 >>> ffff8800013d0600 ffff88002ca7fae0 ffff88002f964340 ffff88002f964340 >>> ffff88002ca7ffd8 ffff88002ca7ffd8 ffff88002f964340 ffff88002f964340 >>> Call Trace: >>> [<ffffffff80350425>] schedule_timeout+0x175/0x210 >>> [<ffffffff8034f580>] wait_for_common+0xf0/0x210 >>> [<ffffffffa03e12b9>] __ocfs2_cluster_lock+0x3b9/0xa90 [ocfs2] >>> [<ffffffffa03e7665>] ocfs2_inode_lock_full_nested+0x255/0xdb0 [ocfs2] >>> [<ffffffffa0446019>] ocfs2_get_acl+0x69/0x120 [ocfs2] >>> [<ffffffffa0446368>] ocfs2_check_acl+0x28/0x80 [ocfs2] >>> [<ffffffff800e3507>] acl_permission_check+0x57/0xb0 >>> [<ffffffff800e357d>] generic_permission+0x1d/0xc0 >>> [<ffffffffa03eecea>] ocfs2_permission+0x10a/0x1d0 [ocfs2] >>> [<ffffffff800e3f65>] inode_permission+0x45/0x100 >>> [<ffffffff800d86b3>] sys_chdir+0x53/0x90 >>> [<ffffffff80007458>] system_call_fastpath+0x16/0x1b >>> [<00007f34a4ef6927>] 0x7f34a4ef6927 >>> >>> Many thanks for your review and comments;) >>> >>> Thanks, >>> Jiaju >>> >>> Signed-off-by:<jjzhang@suse.de> >>> Cc: Joel Becker<Joel.Becker@oracle.com> >>> Cc: Mark Fasheh<mfasheh@suse.com> >>> Cc: Sunil Mushran<sunil.mushran@oracle.com> >>> Cc: Tao Ma<tao.ma@oracle.com> >>> Cc: Tiger Yang<tiger.yang@oracle.com> >>> Cc: Wengang Wang<wen.gang.wang@oracle.com> >>> --- >>> fs/ocfs2/acl.c | 21 +++++++++++++++++---- >>> 1 files changed, 17 insertions(+), 4 deletions(-) >>> >>> diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c >>> index da70229..ecf73f4 100644 >>> --- a/fs/ocfs2/acl.c >>> +++ b/fs/ocfs2/acl.c >>> @@ -290,17 +290,30 @@ static int ocfs2_set_acl(handle_t *handle, >>> >>> int ocfs2_check_acl(struct inode *inode, int mask) >>> { >>> - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); >>> + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); >>> + struct posix_acl *acl; >>> + struct buffer_head *di_bh = NULL; >>> + int ret = -EAGAIN; >>> + >>> + if (!(osb->s_mount_opt& OCFS2_MOUNT_POSIX_ACL)) >>> + return ret; >>> + >>> + ret = ocfs2_read_inode_block(inode,&di_bh); >>> + if (ret< 0) { >>> + mlog_errno(ret); >>> + return ret; >>> + } >>> + >>> + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); >>> >> > From here on, you need to release di_bh. >> > Oh yes, sorry, I should check the code more closely before sending it > out;) > > Here is the new patch: > > Signed-off-by: Jiaju Zhang<jjzhang@suse.de> > --- > fs/ocfs2/acl.c | 23 +++++++++++++++++++---- > 1 files changed, 19 insertions(+), 4 deletions(-) > > diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c > index da70229..a1d25ca 100644 > --- a/fs/ocfs2/acl.c > +++ b/fs/ocfs2/acl.c > @@ -290,17 +290,32 @@ static int ocfs2_set_acl(handle_t *handle, > > int ocfs2_check_acl(struct inode *inode, int mask) > { > - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); > + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); > + struct posix_acl *acl; > + struct buffer_head *di_bh = NULL; > + int ret = -EAGAIN; > + > + if (!(osb->s_mount_opt& OCFS2_MOUNT_POSIX_ACL)) > + return ret; > + > + ret = ocfs2_read_inode_block(inode,&di_bh); > + if (ret< 0) { > + mlog_errno(ret); > + return ret; > + } > + > + acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); > + > + brelse(di_bh); > > if (IS_ERR(acl)) > return PTR_ERR(acl); > if (acl) { > - int ret = posix_acl_permission(inode, acl, mask); > + ret = posix_acl_permission(inode, acl, mask); > posix_acl_release(acl); > - return ret; > } > > - return -EAGAIN; > + return ret; > } > > int ocfs2_acl_chmod(struct inode *inode) > > _______________________________________________ > Ocfs2-devel mailing list > Ocfs2-devel at oss.oracle.com > http://oss.oracle.com/mailman/listinfo/ocfs2-devel > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-21 18:26 ` Sunil Mushran @ 2010-07-22 5:26 ` Jiaju Zhang 2010-07-22 10:11 ` Wengang Wang 2010-07-23 22:42 ` Tiger Yang 1 sibling, 1 reply; 11+ messages in thread From: Jiaju Zhang @ 2010-07-22 5:26 UTC (permalink / raw) To: ocfs2-devel On Wed, Jul 21, 2010 at 11:26:42AM -0700, Sunil Mushran wrote: > Why not add _ocfs2_get_acl() that does the same without > taking the cluster locks? Good suggestion! It will make the code much clearer. I attached the improved patch as below. One thing I'm not sure is do we need to exchange the function name '_ocfs2_get_acl' and 'ocfs2_get_acl_nolock' as well? I'm not sure which is better, so just add a function _ocfs2_get_acl() in this patch now. Many thanks for your review and comments;) Thanks, Jiaju Signed-off-by: Jiaju Zhang <jjzhang@suse.de> --- fs/ocfs2/acl.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c index da70229..b85e092 100644 --- a/fs/ocfs2/acl.c +++ b/fs/ocfs2/acl.c @@ -138,6 +138,29 @@ static struct posix_acl *ocfs2_get_acl_nolock(struct inode *inode, return acl; } +static struct posix_acl *_ocfs2_get_acl(struct inode *inode, int type) +{ + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct buffer_head *di_bh = NULL; + struct posix_acl *acl; + int ret; + + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) + return NULL; + + ret = ocfs2_read_inode_block(inode, &di_bh); + if (ret < 0) { + mlog_errno(ret); + acl = ERR_PTR(ret); + return acl; + } + + acl = ocfs2_get_acl_nolock(inode, type, di_bh); + + brelse(di_bh); + + return acl; +} /* * Get posix acl. @@ -290,7 +313,7 @@ static int ocfs2_set_acl(handle_t *handle, int ocfs2_check_acl(struct inode *inode, int mask) { - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); + struct posix_acl *acl = _ocfs2_get_acl(inode, ACL_TYPE_ACCESS); if (IS_ERR(acl)) return PTR_ERR(acl); ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-22 5:26 ` Jiaju Zhang @ 2010-07-22 10:11 ` Wengang Wang 2010-07-22 13:16 ` Jiaju Zhang 0 siblings, 1 reply; 11+ messages in thread From: Wengang Wang @ 2010-07-22 10:11 UTC (permalink / raw) To: ocfs2-devel ocfs2_get_acl_nolock() has the same functionality just with different arguments. And we can't replace it with the new _ocfs2_get_acl() for the call in ocfs2_init_acl(). So I am wondering if we really need the new _ocfs2_get_acl(). regards, wengang. On 10-07-22 13:26, Jiaju Zhang wrote: > On Wed, Jul 21, 2010 at 11:26:42AM -0700, Sunil Mushran wrote: > > Why not add _ocfs2_get_acl() that does the same without > > taking the cluster locks? > > Good suggestion! It will make the code much clearer. I attached the > improved patch as below. One thing I'm not sure is do we need to > exchange the function name '_ocfs2_get_acl' and 'ocfs2_get_acl_nolock' > as well? I'm not sure which is better, so just add a function > _ocfs2_get_acl() in this patch now. > > Many thanks for your review and comments;) > > Thanks, > Jiaju > > Signed-off-by: Jiaju Zhang <jjzhang@suse.de> > --- > fs/ocfs2/acl.c | 25 ++++++++++++++++++++++++- > 1 files changed, 24 insertions(+), 1 deletions(-) > > diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c > index da70229..b85e092 100644 > --- a/fs/ocfs2/acl.c > +++ b/fs/ocfs2/acl.c > @@ -138,6 +138,29 @@ static struct posix_acl *ocfs2_get_acl_nolock(struct inode *inode, > return acl; > } > > +static struct posix_acl *_ocfs2_get_acl(struct inode *inode, int type) > +{ > + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); > + struct buffer_head *di_bh = NULL; > + struct posix_acl *acl; > + int ret; > + > + if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) > + return NULL; > + > + ret = ocfs2_read_inode_block(inode, &di_bh); > + if (ret < 0) { > + mlog_errno(ret); > + acl = ERR_PTR(ret); > + return acl; > + } > + > + acl = ocfs2_get_acl_nolock(inode, type, di_bh); > + > + brelse(di_bh); > + > + return acl; > +} > > /* > * Get posix acl. > @@ -290,7 +313,7 @@ static int ocfs2_set_acl(handle_t *handle, > > int ocfs2_check_acl(struct inode *inode, int mask) > { > - struct posix_acl *acl = ocfs2_get_acl(inode, ACL_TYPE_ACCESS); > + struct posix_acl *acl = _ocfs2_get_acl(inode, ACL_TYPE_ACCESS); > > if (IS_ERR(acl)) > return PTR_ERR(acl); > > _______________________________________________ > Ocfs2-devel mailing list > Ocfs2-devel at oss.oracle.com > http://oss.oracle.com/mailman/listinfo/ocfs2-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-22 10:11 ` Wengang Wang @ 2010-07-22 13:16 ` Jiaju Zhang 2010-07-22 13:27 ` Wengang Wang 0 siblings, 1 reply; 11+ messages in thread From: Jiaju Zhang @ 2010-07-22 13:16 UTC (permalink / raw) To: ocfs2-devel On Thu, Jul 22, 2010 at 6:11 PM, Wengang Wang <wen.gang.wang@oracle.com> wrote: > ocfs2_get_acl_nolock() has the same functionality just with different > arguments. And we can't replace it with the new _ocfs2_get_acl() for the > call in ocfs2_init_acl(). I don't mean replace ocfs2_get_acl_nolock() with _ocfs2_get_acl(). What I'm just thinking is if we have the necessity of rename current ocfs2_get_acl_nolock() with _ocfs2_get_acl(), and also rename current _ocfs2_get_acl() in my patch with ocfs2_get_acl_nolock(). Anyway, it is just a very minor change, I'm not sure if we should do it or not. > So I am wondering if we really need the new _ocfs2_get_acl(). IMO, we may need _ocfs2_get_acl(). It will make the code looks clearer;) Thanks, Jiaju ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-22 13:16 ` Jiaju Zhang @ 2010-07-22 13:27 ` Wengang Wang 0 siblings, 0 replies; 11+ messages in thread From: Wengang Wang @ 2010-07-22 13:27 UTC (permalink / raw) To: ocfs2-devel My reply is mainly to Sunil. Sorry for the confusing! Your patch is good if we need the _ocfs2_get_acl and don't touch ocfs2_get_acl_nolock :) regards, wengang. On 10-07-22 21:16, Jiaju Zhang wrote: > On Thu, Jul 22, 2010 at 6:11 PM, Wengang Wang <wen.gang.wang@oracle.com> wrote: > > ocfs2_get_acl_nolock() has the same functionality just with different > > arguments. And we can't replace it with the new _ocfs2_get_acl() for the > > call in ocfs2_init_acl(). > > I don't mean replace ocfs2_get_acl_nolock() with _ocfs2_get_acl(). > What I'm just thinking is if we have the necessity of rename current > ocfs2_get_acl_nolock() with _ocfs2_get_acl(), and also rename current > _ocfs2_get_acl() in my patch with ocfs2_get_acl_nolock(). Anyway, it > is just a very minor change, I'm not sure if we should do it or not. > > > So I am wondering if we really need the new _ocfs2_get_acl(). > > IMO, we may need _ocfs2_get_acl(). It will make the code looks clearer;) > > Thanks, > Jiaju ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-21 18:26 ` Sunil Mushran 2010-07-22 5:26 ` Jiaju Zhang @ 2010-07-23 22:42 ` Tiger Yang 2010-07-23 23:08 ` Sunil Mushran 1 sibling, 1 reply; 11+ messages in thread From: Tiger Yang @ 2010-07-23 22:42 UTC (permalink / raw) To: ocfs2-devel Hi, Sunil, I think put them in ocfs2_check_acl() is better. First, check mount option in ocfs2_check_acl() is more clear than in _ocfs2_get_acl(). Second, we already have ocfs2_get_acl and ocfs2_get_acl_nolock, so it seems _ocfs2_get_acl is redundant and could cause confusing for reading the code. Regards, tiger On 07/21/2010 02:26 PM, Sunil Mushran wrote: > Why not add _ocfs2_get_acl() that does the same without > taking the cluster locks? > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-23 22:42 ` Tiger Yang @ 2010-07-23 23:08 ` Sunil Mushran 2010-07-26 3:26 ` Jiaju Zhang 0 siblings, 1 reply; 11+ messages in thread From: Sunil Mushran @ 2010-07-23 23:08 UTC (permalink / raw) To: ocfs2-devel ok. Then review Jiaju's earlier patch. On 07/23/2010 03:42 PM, Tiger Yang wrote: > Hi, Sunil, > > I think put them in ocfs2_check_acl() is better. > First, check mount option in ocfs2_check_acl() is more clear than in > _ocfs2_get_acl(). > Second, we already have ocfs2_get_acl and ocfs2_get_acl_nolock, so it > seems _ocfs2_get_acl is redundant and could cause confusing for > reading the code. > > Regards, > tiger > > On 07/21/2010 02:26 PM, Sunil Mushran wrote: >> Why not add _ocfs2_get_acl() that does the same without >> taking the cluster locks? > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue 2010-07-23 23:08 ` Sunil Mushran @ 2010-07-26 3:26 ` Jiaju Zhang 0 siblings, 0 replies; 11+ messages in thread From: Jiaju Zhang @ 2010-07-26 3:26 UTC (permalink / raw) To: ocfs2-devel On Sat, Jul 24, 2010 at 7:08 AM, Sunil Mushran <sunil.mushran@oracle.com> wrote: > ok. Then review Jiaju's earlier patch. Thanks a lot for all the review and comments. I'll start a new drop of that patch for easily reviewing:-) Thanks, Jiaju ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-07-26 3:26 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-07-21 14:48 [Ocfs2-devel] [PATCH V2] Fix the nested PR lock calling issue Jiaju Zhang 2010-07-21 15:17 ` Wengang Wang 2010-07-21 16:05 ` Jiaju Zhang 2010-07-21 18:26 ` Sunil Mushran 2010-07-22 5:26 ` Jiaju Zhang 2010-07-22 10:11 ` Wengang Wang 2010-07-22 13:16 ` Jiaju Zhang 2010-07-22 13:27 ` Wengang Wang 2010-07-23 22:42 ` Tiger Yang 2010-07-23 23:08 ` Sunil Mushran 2010-07-26 3:26 ` Jiaju Zhang
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.