* [PATCH 1/2] f2fs: trigger correct checkpoint during umount
@ 2015-01-23 0:08 Jaegeuk Kim
2015-01-23 0:08 ` [PATCH 2/2] f2fs: do checkpoint when umount flag is not set Jaegeuk Kim
2015-01-23 10:37 ` [f2fs-dev] [PATCH 1/2] f2fs: trigger correct checkpoint during umount Chao Yu
0 siblings, 2 replies; 5+ messages in thread
From: Jaegeuk Kim @ 2015-01-23 0:08 UTC (permalink / raw)
To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim
This patch fixes to trigger checkpoint with umount flag when kill_sb was called.
In kill_sb, f2fs_sync_fs was finally called, but at this time, f2fs can't do
checkpoint with CP_UMOUNT.
After then, f2fs_put_super is not doing checkpoint, since it is not dirty.
So, this patch adds a flag to indicate f2fs_sync_fs is called during umount.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/f2fs.h | 1 +
fs/f2fs/super.c | 12 ++++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index c2cf040..1795ce2 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -525,6 +525,7 @@ struct f2fs_sb_info {
struct f2fs_super_block *raw_super; /* raw super block pointer */
int s_dirty; /* dirty flag for checkpoint */
bool need_fsck; /* need fsck.f2fs to fix */
+ bool s_closing; /* specify unmounting */
/* for node-related operations */
struct f2fs_nm_info *nm_info; /* node manager */
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 0e97974..84f95cd 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -487,7 +487,8 @@ int f2fs_sync_fs(struct super_block *sb, int sync)
if (sync) {
struct cp_control cpc;
- cpc.reason = test_opt(sbi, FASTBOOT) ? CP_UMOUNT : CP_SYNC;
+ cpc.reason = (test_opt(sbi, FASTBOOT) || sbi->s_closing) ?
+ CP_UMOUNT : CP_SYNC;
mutex_lock(&sbi->gc_mutex);
write_checkpoint(sbi, &cpc);
mutex_unlock(&sbi->gc_mutex);
@@ -1190,11 +1191,18 @@ static struct dentry *f2fs_mount(struct file_system_type *fs_type, int flags,
return mount_bdev(fs_type, flags, dev_name, data, f2fs_fill_super);
}
+static void kill_f2fs_super(struct super_block *sb)
+{
+ if (sb->s_root)
+ F2FS_SB(sb)->s_closing = true;
+ kill_block_super(sb);
+}
+
static struct file_system_type f2fs_fs_type = {
.owner = THIS_MODULE,
.name = "f2fs",
.mount = f2fs_mount,
- .kill_sb = kill_block_super,
+ .kill_sb = kill_f2fs_super,
.fs_flags = FS_REQUIRES_DEV,
};
MODULE_ALIAS_FS("f2fs");
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] f2fs: do checkpoint when umount flag is not set
2015-01-23 0:08 [PATCH 1/2] f2fs: trigger correct checkpoint during umount Jaegeuk Kim
@ 2015-01-23 0:08 ` Jaegeuk Kim
2015-01-23 10:39 ` [f2fs-dev] " Chao Yu
2015-01-23 10:37 ` [f2fs-dev] [PATCH 1/2] f2fs: trigger correct checkpoint during umount Chao Yu
1 sibling, 1 reply; 5+ messages in thread
From: Jaegeuk Kim @ 2015-01-23 0:08 UTC (permalink / raw)
To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim
If the previous checkpoint was done without CP_UMOUNT flag, it needs to do
checkpoint with CP_UMOUNT for the next fast boot.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/checkpoint.c | 3 ++-
fs/f2fs/super.c | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 9f5317c..231d8c9 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -1043,7 +1043,8 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
mutex_lock(&sbi->cp_mutex);
- if (!sbi->s_dirty && cpc->reason != CP_DISCARD)
+ if (!sbi->s_dirty &&
+ cpc->reason != CP_DISCARD && cpc->reason != CP_UMOUNT)
goto out;
if (unlikely(f2fs_cp_error(sbi)))
goto out;
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 84f95cd..6ef1458 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -448,7 +448,8 @@ static void f2fs_put_super(struct super_block *sb)
stop_gc_thread(sbi);
/* We don't need to do checkpoint when it's clean */
- if (sbi->s_dirty) {
+ if (sbi->s_dirty ||
+ !is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG)) {
struct cp_control cpc = {
.reason = CP_UMOUNT,
};
--
2.1.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [f2fs-dev] [PATCH 1/2] f2fs: trigger correct checkpoint during umount
2015-01-23 0:08 [PATCH 1/2] f2fs: trigger correct checkpoint during umount Jaegeuk Kim
2015-01-23 0:08 ` [PATCH 2/2] f2fs: do checkpoint when umount flag is not set Jaegeuk Kim
@ 2015-01-23 10:37 ` Chao Yu
1 sibling, 0 replies; 5+ messages in thread
From: Chao Yu @ 2015-01-23 10:37 UTC (permalink / raw)
To: 'Jaegeuk Kim', linux-kernel, linux-fsdevel,
linux-f2fs-devel
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> Sent: Friday, January 23, 2015 8:09 AM
> To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Cc: Jaegeuk Kim
> Subject: [f2fs-dev] [PATCH 1/2] f2fs: trigger correct checkpoint during umount
>
> This patch fixes to trigger checkpoint with umount flag when kill_sb was called.
> In kill_sb, f2fs_sync_fs was finally called, but at this time, f2fs can't do
> checkpoint with CP_UMOUNT.
> After then, f2fs_put_super is not doing checkpoint, since it is not dirty.
>
> So, this patch adds a flag to indicate f2fs_sync_fs is called during umount.
Nice catch!
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [f2fs-dev] [PATCH 2/2] f2fs: do checkpoint when umount flag is not set
2015-01-23 0:08 ` [PATCH 2/2] f2fs: do checkpoint when umount flag is not set Jaegeuk Kim
@ 2015-01-23 10:39 ` Chao Yu
2015-01-23 19:03 ` Jaegeuk Kim
0 siblings, 1 reply; 5+ messages in thread
From: Chao Yu @ 2015-01-23 10:39 UTC (permalink / raw)
To: 'Jaegeuk Kim', linux-kernel, linux-fsdevel,
linux-f2fs-devel
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> Sent: Friday, January 23, 2015 8:09 AM
> To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Cc: Jaegeuk Kim
> Subject: [f2fs-dev] [PATCH 2/2] f2fs: do checkpoint when umount flag is not set
>
> If the previous checkpoint was done without CP_UMOUNT flag, it needs to do
> checkpoint with CP_UMOUNT for the next fast boot.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
> ---
> fs/f2fs/checkpoint.c | 3 ++-
> fs/f2fs/super.c | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> index 9f5317c..231d8c9 100644
> --- a/fs/f2fs/checkpoint.c
> +++ b/fs/f2fs/checkpoint.c
> @@ -1043,7 +1043,8 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
>
> mutex_lock(&sbi->cp_mutex);
>
> - if (!sbi->s_dirty && cpc->reason != CP_DISCARD)
> + if (!sbi->s_dirty &&
> + cpc->reason != CP_DISCARD && cpc->reason != CP_UMOUNT)
> goto out;
> if (unlikely(f2fs_cp_error(sbi)))
> goto out;
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 84f95cd..6ef1458 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -448,7 +448,8 @@ static void f2fs_put_super(struct super_block *sb)
> stop_gc_thread(sbi);
>
> /* We don't need to do checkpoint when it's clean */
Better to update the annotation above.
Thanks,
Yu
> - if (sbi->s_dirty) {
> + if (sbi->s_dirty ||
> + !is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG)) {
> struct cp_control cpc = {
> .reason = CP_UMOUNT,
> };
> --
> 2.1.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: do checkpoint when umount flag is not set
2015-01-23 10:39 ` [f2fs-dev] " Chao Yu
@ 2015-01-23 19:03 ` Jaegeuk Kim
0 siblings, 0 replies; 5+ messages in thread
From: Jaegeuk Kim @ 2015-01-23 19:03 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-kernel, linux-fsdevel, linux-f2fs-devel
On Fri, Jan 23, 2015 at 06:39:25PM +0800, Chao Yu wrote:
> > -----Original Message-----
> > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org]
> > Sent: Friday, January 23, 2015 8:09 AM
> > To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org;
> > linux-f2fs-devel@lists.sourceforge.net
> > Cc: Jaegeuk Kim
> > Subject: [f2fs-dev] [PATCH 2/2] f2fs: do checkpoint when umount flag is not set
> >
> > If the previous checkpoint was done without CP_UMOUNT flag, it needs to do
> > checkpoint with CP_UMOUNT for the next fast boot.
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>
> Reviewed-by: Chao Yu <chao2.yu@samsung.com>
>
> > ---
> > fs/f2fs/checkpoint.c | 3 ++-
> > fs/f2fs/super.c | 3 ++-
> > 2 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> > index 9f5317c..231d8c9 100644
> > --- a/fs/f2fs/checkpoint.c
> > +++ b/fs/f2fs/checkpoint.c
> > @@ -1043,7 +1043,8 @@ void write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
> >
> > mutex_lock(&sbi->cp_mutex);
> >
> > - if (!sbi->s_dirty && cpc->reason != CP_DISCARD)
> > + if (!sbi->s_dirty &&
> > + cpc->reason != CP_DISCARD && cpc->reason != CP_UMOUNT)
> > goto out;
> > if (unlikely(f2fs_cp_error(sbi)))
> > goto out;
> > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> > index 84f95cd..6ef1458 100644
> > --- a/fs/f2fs/super.c
> > +++ b/fs/f2fs/super.c
> > @@ -448,7 +448,8 @@ static void f2fs_put_super(struct super_block *sb)
> > stop_gc_thread(sbi);
> >
> > /* We don't need to do checkpoint when it's clean */
>
> Better to update the annotation above.
Added some comments. :)
Thanks,
>
> Thanks,
> Yu
>
> > - if (sbi->s_dirty) {
> > + if (sbi->s_dirty ||
> > + !is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG)) {
> > struct cp_control cpc = {
> > .reason = CP_UMOUNT,
> > };
> > --
> > 2.1.1
> >
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-23 19:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-23 0:08 [PATCH 1/2] f2fs: trigger correct checkpoint during umount Jaegeuk Kim
2015-01-23 0:08 ` [PATCH 2/2] f2fs: do checkpoint when umount flag is not set Jaegeuk Kim
2015-01-23 10:39 ` [f2fs-dev] " Chao Yu
2015-01-23 19:03 ` Jaegeuk Kim
2015-01-23 10:37 ` [f2fs-dev] [PATCH 1/2] f2fs: trigger correct checkpoint during umount Chao Yu
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).