Fwd: HTML message rejected: Re: [PATCH] loop: move vfs_fsync() out of loop_update_dio()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 下面是被转发的邮件:
> 
> 发件人: linux-block+owner@xxxxxxxxxxxxxxx
> 主题: HTML message rejected: Re: [PATCH] loop: move vfs_fsync() out of loop_update_dio()
> 日期: 2025年3月19日 GMT+8 09:29:24
> 收件人: huk23@xxxxxxxxxxxxxx
> 
> Greetings!
> 
> This is the mlmmj program managing the <linux-block@xxxxxxxxxxxxxxx>
> mailing list.
> 
> Your message to <linux-block@xxxxxxxxxxxxxxx> was not delivered to the list
> because it contained a HTML part. Only text/plain messages are allowed on
> this list.
> 
> Please configure your mail client to only send plain text mail.
> 
> For your reference, the rejected message follows below.
> 
> 发件人: Kun Hu <huk23@xxxxxxxxxxxxxx>
> 主题: 回复:[PATCH] loop: move vfs_fsync() out of loop_update_dio()
> 日期: 2025年3月19日 GMT+8 09:28:24
> 收件人: Ming Lei <ming.lei@xxxxxxxxxx>
> 抄送: linux-block <linux-block@xxxxxxxxxxxxxxx>, Christoph Hellwig <hch@xxxxxxxxxxxxx>, "jjtan24@xxxxxxxxxxxxxx" <jjtan24@xxxxxxxxxxxxxx>
> 
> 
> 
> 
>> 2025年3月18日 09:07,Ming Lei <ming.lei@xxxxxxxxxx> 写道:
>> 
>> On Mon, Mar 17, 2025 at 04:52:16PM +0800, 胡焜 wrote:
>>>> drivers/block/loop.c | 12 ++++++------
>>>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>> 
>>>> diff --git a/drivers/block/loop.c b/drivers/block/loop.c
>>>> index 1ec7417c7f00..be7e20064427 100644
>>>> --- a/drivers/block/loop.c
>>>> +++ b/drivers/block/loop.c
>>>> @@ -205,8 +205,6 @@ static bool lo_can_use_dio(struct loop_device *lo)
>>>> */
>>>> static inline void loop_update_dio(struct loop_device *lo)
>>>> {
>>>> - bool dio_in_use = lo->lo_flags & LO_FLAGS_DIRECT_IO;
>>>> -
>>>>  lockdep_assert_held(&lo->lo_mutex);
>>>>  WARN_ON_ONCE(lo->lo_state == Lo_bound &&
>>>>       lo->lo_queue->mq_freeze_depth == 0);
>>>> @@ -215,10 +213,6 @@ static inline void loop_update_dio(struct loop_device *lo)
>>>>  lo->lo_flags |= LO_FLAGS_DIRECT_IO;
>>>>  if ((lo->lo_flags & LO_FLAGS_DIRECT_IO) && !lo_can_use_dio(lo))
>>>>  lo->lo_flags &= ~LO_FLAGS_DIRECT_IO;
>>>> -
>>>> - /* flush dirty pages before starting to issue direct I/O */
>>>> - if ((lo->lo_flags & LO_FLAGS_DIRECT_IO) && !dio_in_use)
>>>> - vfs_fsync(lo->lo_backing_file, 0);
>>>> }
>>>> 
>>>> /**
>>>> @@ -621,6 +615,9 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
>>>>  if (get_loop_size(lo, file) != get_loop_size(lo, old_file))
>>>> goto out_err;
>>> 
>>>> + /* may work in dio, so flush page cache for avoiding race */
>>>> + vfs_fsync(file, 0);
>>>> +
>>>>  /* and ... switch */
>>>>  disk_force_media_change(lo->lo_disk);
>>>>  blk_mq_freeze_queue(lo->lo_queue);
>>>> @@ -1098,6 +1095,9 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,
>>>>  if (error)
>>>>  goto out_unlock;
>>> 
>>>> + /* may work in dio, so flush page cache for avoiding race */
>>>> + vfs_fsync(file, 0);
>>>> +
>>>>  loop_update_dio(lo);
>>>>  loop_sysfs_init(lo);
>>>> 
>>>> --
>>>> 2.44.0
>>> 
>>> 
>>> Hello Ming,
>>> 
>>> I would like to double check that this fix doesn't seem to have been merged into the main thread, will this version still be merged into mainline kernel tree?
>> 
>> The V2 has been sent out after updating comment, please verify if it fixes your issue:
>> 
>> https://lore.kernel.org/linux-block/20250318010318.3861682-1-ming.lei@xxxxxxxxxx/
>> 
>> If yes, feel free to provide one tested-by for moving on.
>> 
>> 
>> Thanks, 
>> Ming
> 
> 
> 
> Thank you very much, this crash has not triggered again after several rounds of testing!
> 
> Best,
> Kun
> 






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux