* [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
[not found] <1340788195-20623-1-git-send-email-junxiao.bi@oracle.com>
@ 2012-06-27 9:09 ` Junxiao Bi
2012-06-28 22:39 ` Andrew Morton
2012-06-27 9:09 ` [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails Junxiao Bi
1 sibling, 1 reply; 12+ messages in thread
From: Junxiao Bi @ 2012-06-27 9:09 UTC (permalink / raw)
To: ocfs2-devel, linux-aio
Cc: mfasheh, akpm, linux-kernel, joe.jin, Junxiao Bi, stable
Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
io flag is involved in it to serialize the unaligned aio. As
*private is not initialized in init_sync_kiocb() of do_sync_write(),
this unaligned io flag may be unexpectly set in an aligned dio.
And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Cc: stable@vger.kernel.org
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Acked-by: Joel Becker <jlbec@evilplan.org>
---
include/linux/aio.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/aio.h b/include/linux/aio.h
index 2314ad8..b1a520e 100644
--- a/include/linux/aio.h
+++ b/include/linux/aio.h
@@ -140,6 +140,7 @@ struct kiocb {
(x)->ki_dtor = NULL; \
(x)->ki_obj.tsk = tsk; \
(x)->ki_user_data = 0; \
+ (x)->private = NULL; \
} while (0)
#define AIO_RING_MAGIC 0xa10a10a1
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails
[not found] <1340788195-20623-1-git-send-email-junxiao.bi@oracle.com>
2012-06-27 9:09 ` [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb() Junxiao Bi
@ 2012-06-27 9:09 ` Junxiao Bi
2012-07-04 7:34 ` [Ocfs2-devel] " Joel Becker
1 sibling, 1 reply; 12+ messages in thread
From: Junxiao Bi @ 2012-06-27 9:09 UTC (permalink / raw)
To: ocfs2-devel, linux-aio
Cc: mfasheh, akpm, linux-kernel, joe.jin, Junxiao Bi, stable
The unaligned io flag is set in the kiocb when an unaligned
dio is issued, it should be cleared even when the dio fails,
or it may affect the following io which are using the same
kiocb.
Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Cc: stable@vger.kernel.org
---
fs/ocfs2/file.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 061591a..98513c8 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2422,8 +2422,10 @@ out_dio:
unaligned_dio = 0;
}
- if (unaligned_dio)
+ if (unaligned_dio) {
+ ocfs2_iocb_clear_unaligned_aio(iocb);
atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio);
+ }
out:
if (rw_level != -1)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-27 9:09 ` [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb() Junxiao Bi
@ 2012-06-28 22:39 ` Andrew Morton
2012-06-29 9:22 ` Joel Becker
0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2012-06-28 22:39 UTC (permalink / raw)
To: Junxiao Bi; +Cc: ocfs2-devel, linux-aio, mfasheh, linux-kernel, joe.jin, stable
On Wed, 27 Jun 2012 17:09:54 +0800
Junxiao Bi <junxiao.bi@oracle.com> wrote:
> Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
> commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
> io flag is involved in it to serialize the unaligned aio. As
> *private is not initialized in init_sync_kiocb() of do_sync_write(),
> this unaligned io flag may be unexpectly set in an aligned dio.
> And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
> to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
> will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
>
> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> Cc: stable@vger.kernel.org
> Acked-by: Jeff Moyer <jmoyer@redhat.com>
> Acked-by: Joel Becker <jlbec@evilplan.org>
> ---
> include/linux/aio.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/aio.h b/include/linux/aio.h
> index 2314ad8..b1a520e 100644
> --- a/include/linux/aio.h
> +++ b/include/linux/aio.h
> @@ -140,6 +140,7 @@ struct kiocb {
> (x)->ki_dtor = NULL; \
> (x)->ki_obj.tsk = tsk; \
> (x)->ki_user_data = 0; \
> + (x)->private = NULL; \
> } while (0)
>
> #define AIO_RING_MAGIC 0xa10a10a1
hm, that code is rather cruddy. Pointless macromania.
If we do this:
static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
{
struct task_struct *tsk = current;
kiocb->ki_flags = 0;
kiocb->ki_users = 1;
kiocb->ki_key = KIOCB_SYNC_KEY;
kiocb->ki_filp = filp;
kiocb->ki_ctx = NULL;
kiocb->ki_cancel = NULL;
kiocb->ki_retry = NULL;
kiocb->ki_dtor = NULL;
kiocb->ki_obj.tsk = tsk;
kiocb->ki_user_data = 0;
}
it is nicer and there is no impact on code size.
If we do this:
static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
{
*kiocb = (struct kiocb) {
.ki_users = 1,
.ki_key = KIOCB_SYNC_KEY,
.ki_filp = filp,
.ki_obj.tsk = current,
};
}
then fs/read_write.o's .text is shrunk from 9857 bytes to 9714, which
is rather a lot.
But that's all rather irrelevant to your bugfix.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-28 22:39 ` Andrew Morton
@ 2012-06-29 9:22 ` Joel Becker
2012-06-29 10:17 ` Junxiao Bi
2012-06-29 10:49 ` Junxiao Bi
0 siblings, 2 replies; 12+ messages in thread
From: Joel Becker @ 2012-06-29 9:22 UTC (permalink / raw)
To: Andrew Morton
Cc: Junxiao Bi, ocfs2-devel, linux-aio, mfasheh, linux-kernel,
joe.jin, stable
On Thu, Jun 28, 2012 at 03:39:56PM -0700, Andrew Morton wrote:
> On Wed, 27 Jun 2012 17:09:54 +0800
> Junxiao Bi <junxiao.bi@oracle.com> wrote:
>
> > Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
> > commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
> > io flag is involved in it to serialize the unaligned aio. As
> > *private is not initialized in init_sync_kiocb() of do_sync_write(),
> > this unaligned io flag may be unexpectly set in an aligned dio.
> > And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
> > to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
> > will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
> >
> > Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> > Cc: stable@vger.kernel.org
> > Acked-by: Jeff Moyer <jmoyer@redhat.com>
> > Acked-by: Joel Becker <jlbec@evilplan.org>
> > ---
> > include/linux/aio.h | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/include/linux/aio.h b/include/linux/aio.h
> > index 2314ad8..b1a520e 100644
> > --- a/include/linux/aio.h
> > +++ b/include/linux/aio.h
> > @@ -140,6 +140,7 @@ struct kiocb {
> > (x)->ki_dtor = NULL; \
> > (x)->ki_obj.tsk = tsk; \
> > (x)->ki_user_data = 0; \
> > + (x)->private = NULL; \
> > } while (0)
> >
> > #define AIO_RING_MAGIC 0xa10a10a1
>
> hm, that code is rather cruddy. Pointless macromania.
Agreed.
> If we do this:
>
> static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
> {
> *kiocb = (struct kiocb) {
> .ki_users = 1,
> .ki_key = KIOCB_SYNC_KEY,
> .ki_filp = filp,
> .ki_obj.tsk = current,
> };
> }
>
> then fs/read_write.o's .text is shrunk from 9857 bytes to 9714, which
> is rather a lot.
>
> But that's all rather irrelevant to your bugfix.
I like your solution. Junxiao, if you send me that version, I'd
be happy to take it.
Joel
--
"I'm drifting and drifting
Just like a ship out on the sea.
Cause I ain't got nobody, baby,
In this world to care for me."
http://www.jlbec.org/
jlbec@evilplan.org
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-29 9:22 ` Joel Becker
@ 2012-06-29 10:17 ` Junxiao Bi
2012-06-29 10:29 ` Andrew Morton
2012-06-29 10:49 ` Junxiao Bi
1 sibling, 1 reply; 12+ messages in thread
From: Junxiao Bi @ 2012-06-29 10:17 UTC (permalink / raw)
To: Andrew Morton, ocfs2-devel, linux-aio, mfasheh, linux-kernel,
joe.jin, stable
On 06/29/2012 05:22 PM, Joel Becker wrote:
> On Thu, Jun 28, 2012 at 03:39:56PM -0700, Andrew Morton wrote:
>> On Wed, 27 Jun 2012 17:09:54 +0800
>> Junxiao Bi <junxiao.bi@oracle.com> wrote:
>>
>>> Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
>>> commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
>>> io flag is involved in it to serialize the unaligned aio. As
>>> *private is not initialized in init_sync_kiocb() of do_sync_write(),
>>> this unaligned io flag may be unexpectly set in an aligned dio.
>>> And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
>>> to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
>>> will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
>>>
>>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
>>> Cc: stable@vger.kernel.org
>>> Acked-by: Jeff Moyer <jmoyer@redhat.com>
>>> Acked-by: Joel Becker <jlbec@evilplan.org>
>>> ---
>>> include/linux/aio.h | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/include/linux/aio.h b/include/linux/aio.h
>>> index 2314ad8..b1a520e 100644
>>> --- a/include/linux/aio.h
>>> +++ b/include/linux/aio.h
>>> @@ -140,6 +140,7 @@ struct kiocb {
>>> (x)->ki_dtor = NULL; \
>>> (x)->ki_obj.tsk = tsk; \
>>> (x)->ki_user_data = 0; \
>>> + (x)->private = NULL; \
>>> } while (0)
>>>
>>> #define AIO_RING_MAGIC 0xa10a10a1
>> hm, that code is rather cruddy. Pointless macromania.
> Agreed.
>
>> If we do this:
>>
>> static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
>> {
>> *kiocb = (struct kiocb) {
>> .ki_users = 1,
>> .ki_key = KIOCB_SYNC_KEY,
>> .ki_filp = filp,
>> .ki_obj.tsk = current,
>> };
>> }
>>
>> then fs/read_write.o's .text is shrunk from 9857 bytes to 9714, which
>> is rather a lot.
>>
>> But that's all rather irrelevant to your bugfix.
> I like your solution. Junxiao, if you send me that version, I'd
> be happy to take it.
Hi Joel,
Andrew had merged this patch to his tree. Do you like the second patch "
ocfs2: clear unaligned io flag when dio fails"?
> Joel
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-29 10:17 ` Junxiao Bi
@ 2012-06-29 10:29 ` Andrew Morton
2012-06-29 10:48 ` Junxiao Bi
0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2012-06-29 10:29 UTC (permalink / raw)
To: Junxiao Bi; +Cc: ocfs2-devel, linux-aio, mfasheh, linux-kernel, joe.jin, stable
On Fri, 29 Jun 2012 18:17:11 +0800 Junxiao Bi <junxiao.bi@oracle.com> wrote:
> Andrew had merged this patch to his tree. Do you like the second patch "
> ocfs2: clear unaligned io flag when dio fails"?
Please go ahead with your patchset for now. I'll feed the cleanup in
later on.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-29 10:29 ` Andrew Morton
@ 2012-06-29 10:48 ` Junxiao Bi
0 siblings, 0 replies; 12+ messages in thread
From: Junxiao Bi @ 2012-06-29 10:48 UTC (permalink / raw)
To: Andrew Morton
Cc: ocfs2-devel, linux-aio, mfasheh, linux-kernel, joe.jin, stable
On 06/29/2012 06:29 PM, Andrew Morton wrote:
> On Fri, 29 Jun 2012 18:17:11 +0800 Junxiao Bi <junxiao.bi@oracle.com> wrote:
>
>> Andrew had merged this patch to his tree. Do you like the second patch "
>> ocfs2: clear unaligned io flag when dio fails"?
> Please go ahead with your patchset for now. I'll feed the cleanup in
> later on.
Ok, thank you.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-29 9:22 ` Joel Becker
2012-06-29 10:17 ` Junxiao Bi
@ 2012-06-29 10:49 ` Junxiao Bi
2012-07-04 6:13 ` Joel Becker
1 sibling, 1 reply; 12+ messages in thread
From: Junxiao Bi @ 2012-06-29 10:49 UTC (permalink / raw)
To: Andrew Morton, ocfs2-devel, linux-aio, mfasheh, linux-kernel,
joe.jin, stable, jlbec
On 06/29/2012 05:22 PM, Joel Becker wrote:
> On Thu, Jun 28, 2012 at 03:39:56PM -0700, Andrew Morton wrote:
>> On Wed, 27 Jun 2012 17:09:54 +0800
>> Junxiao Bi <junxiao.bi@oracle.com> wrote:
>>
>>> Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
>>> commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
>>> io flag is involved in it to serialize the unaligned aio. As
>>> *private is not initialized in init_sync_kiocb() of do_sync_write(),
>>> this unaligned io flag may be unexpectly set in an aligned dio.
>>> And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
>>> to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
>>> will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
>>>
>>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
>>> Cc: stable@vger.kernel.org
>>> Acked-by: Jeff Moyer <jmoyer@redhat.com>
>>> Acked-by: Joel Becker <jlbec@evilplan.org>
>>> ---
>>> include/linux/aio.h | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/include/linux/aio.h b/include/linux/aio.h
>>> index 2314ad8..b1a520e 100644
>>> --- a/include/linux/aio.h
>>> +++ b/include/linux/aio.h
>>> @@ -140,6 +140,7 @@ struct kiocb {
>>> (x)->ki_dtor = NULL; \
>>> (x)->ki_obj.tsk = tsk; \
>>> (x)->ki_user_data = 0; \
>>> + (x)->private = NULL; \
>>> } while (0)
>>>
>>> #define AIO_RING_MAGIC 0xa10a10a1
>> hm, that code is rather cruddy. Pointless macromania.
> Agreed.
>
>> If we do this:
>>
>> static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
>> {
>> *kiocb = (struct kiocb) {
>> .ki_users = 1,
>> .ki_key = KIOCB_SYNC_KEY,
>> .ki_filp = filp,
>> .ki_obj.tsk = current,
>> };
>> }
>>
>> then fs/read_write.o's .text is shrunk from 9857 bytes to 9714, which
>> is rather a lot.
>>
>> But that's all rather irrelevant to your bugfix.
> I like your solution. Junxiao, if you send me that version, I'd
> be happy to take it.
Joel, since Andrew will feed his cleanup patch later on. Please help
merge my patches. Though it is covered by the cleanup patch, but I think
it's useful to merge it, at least we can see from the git log this is
for an ocfs2 hang bug.
>
> Joel
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
2012-06-29 10:49 ` Junxiao Bi
@ 2012-07-04 6:13 ` Joel Becker
0 siblings, 0 replies; 12+ messages in thread
From: Joel Becker @ 2012-07-04 6:13 UTC (permalink / raw)
To: Junxiao Bi
Cc: Andrew Morton, ocfs2-devel, linux-aio, mfasheh, linux-kernel,
joe.jin, stable
On Fri, Jun 29, 2012 at 06:49:43PM +0800, Junxiao Bi wrote:
> On 06/29/2012 05:22 PM, Joel Becker wrote:
> > On Thu, Jun 28, 2012 at 03:39:56PM -0700, Andrew Morton wrote:
> >> On Wed, 27 Jun 2012 17:09:54 +0800
> >> Junxiao Bi <junxiao.bi@oracle.com> wrote:
> >>
> >>> Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
> >>> commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
> >>> io flag is involved in it to serialize the unaligned aio. As
> >>> *private is not initialized in init_sync_kiocb() of do_sync_write(),
> >>> this unaligned io flag may be unexpectly set in an aligned dio.
> >>> And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
> >>> to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
> >>> will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().
> >>>
> >>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> >>> Cc: stable@vger.kernel.org
> >>> Acked-by: Jeff Moyer <jmoyer@redhat.com>
> >>> Acked-by: Joel Becker <jlbec@evilplan.org>
> >>> ---
> >>> include/linux/aio.h | 1 +
> >>> 1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/include/linux/aio.h b/include/linux/aio.h
> >>> index 2314ad8..b1a520e 100644
> >>> --- a/include/linux/aio.h
> >>> +++ b/include/linux/aio.h
> >>> @@ -140,6 +140,7 @@ struct kiocb {
> >>> (x)->ki_dtor = NULL; \
> >>> (x)->ki_obj.tsk = tsk; \
> >>> (x)->ki_user_data = 0; \
> >>> + (x)->private = NULL; \
> >>> } while (0)
> >>>
> >>> #define AIO_RING_MAGIC 0xa10a10a1
> >> hm, that code is rather cruddy. Pointless macromania.
> > Agreed.
> >
> >> If we do this:
> >>
> >> static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
> >> {
> >> *kiocb = (struct kiocb) {
> >> .ki_users = 1,
> >> .ki_key = KIOCB_SYNC_KEY,
> >> .ki_filp = filp,
> >> .ki_obj.tsk = current,
> >> };
> >> }
> >>
> >> then fs/read_write.o's .text is shrunk from 9857 bytes to 9714, which
> >> is rather a lot.
> >>
> >> But that's all rather irrelevant to your bugfix.
> > I like your solution. Junxiao, if you send me that version, I'd
> > be happy to take it.
> Joel, since Andrew will feed his cleanup patch later on. Please help
> merge my patches. Though it is covered by the cleanup patch, but I think
> it's useful to merge it, at least we can see from the git log this is
> for an ocfs2 hang bug.
Yes, I'll be pulling it.
Joel
> >
> > Joel
> >
>
--
"In the room the women come and go
Talking of Michaelangelo."
http://www.jlbec.org/
jlbec@evilplan.org
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Ocfs2-devel] [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails
2012-06-27 9:09 ` [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails Junxiao Bi
@ 2012-07-04 7:34 ` Joel Becker
2012-07-04 7:51 ` Junxiao Bi
0 siblings, 1 reply; 12+ messages in thread
From: Joel Becker @ 2012-07-04 7:34 UTC (permalink / raw)
To: Junxiao Bi
Cc: ocfs2-devel, linux-aio, mfasheh, joe.jin, linux-kernel, stable,
akpm
On Wed, Jun 27, 2012 at 05:09:55PM +0800, Junxiao Bi wrote:
> The unaligned io flag is set in the kiocb when an unaligned
> dio is issued, it should be cleared even when the dio fails,
> or it may affect the following io which are using the same
> kiocb.
>
> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> Cc: stable@vger.kernel.org
This patch is now part of the 'fixes' branch of ocfs2.git.
Joel
> ---
> fs/ocfs2/file.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
> index 061591a..98513c8 100644
> --- a/fs/ocfs2/file.c
> +++ b/fs/ocfs2/file.c
> @@ -2422,8 +2422,10 @@ out_dio:
> unaligned_dio = 0;
> }
>
> - if (unaligned_dio)
> + if (unaligned_dio) {
> + ocfs2_iocb_clear_unaligned_aio(iocb);
> atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio);
> + }
>
> out:
> if (rw_level != -1)
> --
> 1.7.9.5
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel@oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
"Up and down that road in our worn out shoes,
Talking bout good things and singing the blues."
http://www.jlbec.org/
jlbec@evilplan.org
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Ocfs2-devel] [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails
2012-07-04 7:34 ` [Ocfs2-devel] " Joel Becker
@ 2012-07-04 7:51 ` Junxiao Bi
2012-07-05 9:22 ` Joel Becker
0 siblings, 1 reply; 12+ messages in thread
From: Junxiao Bi @ 2012-07-04 7:51 UTC (permalink / raw)
To: jlbec; +Cc: ocfs2-devel, linux-aio, mfasheh, joe.jin, linux-kernel, stable,
akpm
On 07/04/2012 03:34 PM, Joel Becker wrote:
> On Wed, Jun 27, 2012 at 05:09:55PM +0800, Junxiao Bi wrote:
>> The unaligned io flag is set in the kiocb when an unaligned
>> dio is issued, it should be cleared even when the dio fails,
>> or it may affect the following io which are using the same
>> kiocb.
>>
>> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
>> Cc: stable@vger.kernel.org
> This patch is now part of the 'fixes' branch of ocfs2.git.
Thank you. Are you going to merge my first patch "[PATCH v4 1/2] aio:
make kiocb->private NUll in init_sync_kiocb()"? Though Andrew's cleanup
patch covered this fix, but it can't tell how this fix a ocfs2 hang bug.
Also merging it will make it into stable branch.
>
> Joel
>
>> ---
>> fs/ocfs2/file.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
>> index 061591a..98513c8 100644
>> --- a/fs/ocfs2/file.c
>> +++ b/fs/ocfs2/file.c
>> @@ -2422,8 +2422,10 @@ out_dio:
>> unaligned_dio = 0;
>> }
>>
>> - if (unaligned_dio)
>> + if (unaligned_dio) {
>> + ocfs2_iocb_clear_unaligned_aio(iocb);
>> atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio);
>> + }
>>
>> out:
>> if (rw_level != -1)
>> --
>> 1.7.9.5
>>
>>
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel@oss.oracle.com
>> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Ocfs2-devel] [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails
2012-07-04 7:51 ` Junxiao Bi
@ 2012-07-05 9:22 ` Joel Becker
0 siblings, 0 replies; 12+ messages in thread
From: Joel Becker @ 2012-07-05 9:22 UTC (permalink / raw)
To: Junxiao Bi
Cc: ocfs2-devel, linux-aio, mfasheh, joe.jin, linux-kernel, stable,
akpm
On Wed, Jul 04, 2012 at 03:51:57PM +0800, Junxiao Bi wrote:
> On 07/04/2012 03:34 PM, Joel Becker wrote:
> > On Wed, Jun 27, 2012 at 05:09:55PM +0800, Junxiao Bi wrote:
> >> The unaligned io flag is set in the kiocb when an unaligned
> >> dio is issued, it should be cleared even when the dio fails,
> >> or it may affect the following io which are using the same
> >> kiocb.
> >>
> >> Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
> >> Cc: stable@vger.kernel.org
> > This patch is now part of the 'fixes' branch of ocfs2.git.
> Thank you. Are you going to merge my first patch "[PATCH v4 1/2] aio:
> make kiocb->private NUll in init_sync_kiocb()"? Though Andrew's cleanup
> patch covered this fix, but it can't tell how this fix a ocfs2 hang bug.
> Also merging it will make it into stable branch.
Pushed that too.
Joel
> >
> > Joel
> >
> >> ---
> >> fs/ocfs2/file.c | 4 +++-
> >> 1 file changed, 3 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
> >> index 061591a..98513c8 100644
> >> --- a/fs/ocfs2/file.c
> >> +++ b/fs/ocfs2/file.c
> >> @@ -2422,8 +2422,10 @@ out_dio:
> >> unaligned_dio = 0;
> >> }
> >>
> >> - if (unaligned_dio)
> >> + if (unaligned_dio) {
> >> + ocfs2_iocb_clear_unaligned_aio(iocb);
> >> atomic_dec(&OCFS2_I(inode)->ip_unaligned_aio);
> >> + }
> >>
> >> out:
> >> if (rw_level != -1)
> >> --
> >> 1.7.9.5
> >>
> >>
> >> _______________________________________________
> >> Ocfs2-devel mailing list
> >> Ocfs2-devel@oss.oracle.com
> >> https://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
--
A good programming language should have features that make the
kind of people who use the phrase "software engineering" shake
their heads disapprovingly.
- Paul Graham
http://www.jlbec.org/
jlbec@evilplan.org
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-07-05 9:22 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1340788195-20623-1-git-send-email-junxiao.bi@oracle.com>
2012-06-27 9:09 ` [PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb() Junxiao Bi
2012-06-28 22:39 ` Andrew Morton
2012-06-29 9:22 ` Joel Becker
2012-06-29 10:17 ` Junxiao Bi
2012-06-29 10:29 ` Andrew Morton
2012-06-29 10:48 ` Junxiao Bi
2012-06-29 10:49 ` Junxiao Bi
2012-07-04 6:13 ` Joel Becker
2012-06-27 9:09 ` [PATCH v4 2/2] ocfs2: clear unaligned io flag when dio fails Junxiao Bi
2012-07-04 7:34 ` [Ocfs2-devel] " Joel Becker
2012-07-04 7:51 ` Junxiao Bi
2012-07-05 9:22 ` Joel Becker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).