Linux-Fsdevel Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Sungjong Seo" <sj1557.seo@samsung.com>
To: "'Tetsuhiro Kohada'" <kohada.t2@gmail.com>
Cc: <kohada.tetsuhiro@dc.mitsubishielectric.co.jp>,
	<mori.takahiro@ab.mitsubishielectric.co.jp>,
	<motai.hirotaka@aj.mitsubishielectric.co.jp>,
	"'Namjae Jeon'" <namjae.jeon@samsung.com>,
	<linux-fsdevel@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH v3] exfat: remove EXFAT_SB_DIRTY flag
Date: Sun, 9 Aug 2020 02:47:48 +0900	[thread overview]
Message-ID: <000301d66dac$07b9fc00$172df400$@samsung.com> (raw)
In-Reply-To: <c635e965-6b78-436a-3959-e4777e1732c1@gmail.com>

> On 2020/06/18 22:11, Sungjong Seo wrote:
> >> BTW
> >> Even with this patch applied,  VOL_DIRTY remains until synced in the
> >> above case.
> >> It's not  easy to reproduce as rmdir, but I'll try to fix it in the
> future.
> >
> > I think it's not a problem not to clear VOL_DIRTY under real errors,
> > because VOL_DIRTY is just like a hint to note that write was not
> finished clearly.
> >
> > If you mean there are more situation like ENOTEMPTY you mentioned,
> > please make new patch to fix them.
> 
> 
> When should VOL_DIRTY be cleared?
> 
> The current behavior is ...
> 
> Case of  mkdir, rmdir, rename:
>    - set VOL_DIRTY before operation
>    - set VOL_CLEAN after operating.
> In async mode, it is actually written to the media after 30 seconds.
> 
> Case of  cp, touch:
>    - set VOL_DIRTY before operation
>    - however, VOL_CLEAN is not called in this context.
> VOL_CLEAN will call by sync_fs or unmount.
> 
> I added VOL_CLEAN in last of __exfat_write_inode() and exfat_map_cluster().
> As a result, VOL_DIRTY is cleared with cp and touch.
> However, when copying a many files ...
>   - Async mode: VOL_DIRTY is written to the media twice every 30 seconds.
>   - Sync mode: Of course,  VOL_DIRTY and VOL_CLEAN to the media for each
> file.
> 
> Frequent writing VOL_DIRTY and VOL_CLEAN  increases the risk of boot-
> sector curruption.
> If the boot-sector corrupted, it causes the following serious problems  on
> some OSs.
>   - misjudge as unformatted
>   - can't judge as exfat
>   - can't repair
> 
> I want to minimize boot sector writes, to reduce these risk.
> 
> I looked vfat/udf implementation, which manages similar dirty information
> on linux, and found that they ware mark-dirty at mount and cleared at
> unmount.
> 
> Here are some ways to clear VOL_DIRTY.
> 
> (A) VOL_CLEAN after every write operation.
>    :-) Ejectable at any time after a write operation.
>    :-( Many times write to Boot-sector.
> 
> (B) dirty at mount, clear at unmount (same as vfat/udf)
>    :-) Write to boot-sector twice.
>    :-( It remains dirty unless unmounted.
>    :-( Write to boot-sector even if there is no write operation.
> 
> (C) dirty on first write operation, clear on unmount
>    :-) Writing to boot-sector is minimal.
>    :-) Will not write to the boot-sector if there is no write operation.
>    :-( It remains dirty unless unmounted.
> 
> (D) dirty on first write operation,  clear on sync-fs/unmount
>   :-) Writing to boot-sector can be reduced.
>   :-) Will not write to the boot-sector if there is no write operation.
>   :-) sync-fs makes it clean and ejectable immidiately.
>   :-( It remains dirty unless sync-fs or unmount.
>   :-( Frequent sync-fs will  increases writes to boot-sector.
> 
> I think it should be (C) or(D).
> What do you think?
> 

First of all, I'm sorry for the late reply.
And thank you for the suggestion.

Most of the NAND flash devices and HDDs have wear leveling and bad sector replacement algorithms applied.
So I think that the life of the boot sector will not be exhausted first.

Currently the volume dirty/clean policy of exfat-fs is not perfect,
but I think it behaves similarly to the policy of MS Windows.

Therefore,
I think code improvements should be made to reduce volume flag records while maintaining the current policy.

BR
Sungjong Seo
> 
> 
> BR
> ---
> Tetsuhiro Kohada <kohada.t2@gmail.com>


  reply	other threads:[~2020-08-08 17:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200616021816epcas1p44b0833f14bbad0e25cc0efb27fb2ebd3@epcas1p4.samsung.com>
2020-06-16  2:18 ` Tetsuhiro Kohada
2020-06-16 23:55   ` Namjae Jeon
2020-06-17  7:20   ` Sungjong Seo
2020-06-17  8:41     ` Namjae Jeon
2020-06-18  8:36     ` Tetsuhiro Kohada
2020-06-18 13:11       ` Sungjong Seo
2020-06-19  4:22         ` Tetsuhiro Kohada
2020-07-10  7:36         ` Tetsuhiro Kohada
2020-08-08 17:47           ` Sungjong Seo [this message]
2020-08-12  9:19             ` Tetsuhiro Kohada
2020-08-13  4:03               ` Namjae Jeon
2020-08-18  1:20                 ` Tetsuhiro Kohada
2020-06-16  6:16 Markus Elfring
2020-06-16 14:45 ` Matthew Wilcox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000301d66dac$07b9fc00$172df400$@samsung.com' \
    --to=sj1557.seo@samsung.com \
    --cc=kohada.t2@gmail.com \
    --cc=kohada.tetsuhiro@dc.mitsubishielectric.co.jp \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mori.takahiro@ab.mitsubishielectric.co.jp \
    --cc=motai.hirotaka@aj.mitsubishielectric.co.jp \
    --cc=namjae.jeon@samsung.com \
    --subject='RE: [PATCH v3] exfat: remove EXFAT_SB_DIRTY flag' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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).