Re: [PATCH 2/2] fat: mark fs as dirty on mount and clean on umount

From: Oleksij Rempel
Date: Thu Jan 03 2013 - 03:46:08 EST


Am 03.01.2013 00:44, schrieb Andrew Morton:
On Fri, 28 Dec 2012 02:20:20 +0900
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> wrote:

There is no documented methods to mark FAT as dirty. Unofficially MS
started to use reserved Byte in boot sector for this purpose,
at least since Win 2000. With Win 7 user is warned if fs is dirty
and asked to clean it.
Different versions of Win, handle it in different ways,
but always have same meaning:
- Win 2000 and XP, set it on write operations and
remove it after operation was finnished
- Win 7, set dirty flag on first write and remove it on umount.

We will do it as fallow:
- set dirty flag on mount. If fs was initially dirty, warn user,
remember it and do not do any changes to boot sector.
- clean it on umount. If fs was initially dirty, leave it dirty.
- do not do any thing if fs mounted read-only.
- TODO: leave fs dirty if we found some error after mount.

The changelog doesn't describe why we're making this change. Nor does
it describe the user-visible effects of this change.

AFAICT the effect is to issue a warning at mount-time to tell the
user that the fs wasn't cleanly unmounted and that the user should fsck
the volume, correct?

If so, why is this considered a desirable feature? (I can guess, but
would prefer to hear it spelled out by the experts, please).


FAT is old and still intensively used file system with high number of data lost. This patch set is a try to reduce this numbers.
To make this work complete, we need some changes in user space too. But even stand alone, this patchset can warn M$ Windows 7 about probably damaged FS. In this case Win 7 will inform user and give option to start checkdisk.
--
Regards,
Oleksij
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/