2008-08-14 19:54:47

by Theodore Ts'o

[permalink] [raw]
Subject: [PATCH, RFC] ext4-use-generic-discard-reservations-call


Does this patch make sense? I noticed that in the extents version of
the truncate, we call the mballoc-specific version of
ext4_discard_reservation(), instead of ext4_discard_reservation()
directly. As a result, if the filesystem is mounted -o nomballoc, we
won't throw away the reservation window when truncating or unlinking an
extents-based file. We are using ext4_discard_reservation() in
non-extent truncate code, which is what made me notice this.

- Ted

ext4: Use ext4_discard_reservations instead of mballoc-specific call

In ext4_ext_truncate(), we should use the more generic
ext4_discard_reservations() call so we do the right thing when the
filesystem is mounted with the nomballoc option.

Signed-off-by: "Theodore Ts'o" <[email protected]>
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 3c82ab1..30a59b8 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -2963,7 +2963,7 @@ void ext4_ext_truncate(struct inode *inode)
down_write(&EXT4_I(inode)->i_data_sem);
ext4_ext_invalidate_cache(inode);

- ext4_mb_discard_inode_preallocations(inode);
+ ext4_discard_reservation(inode);

/*
* TODO: optimization is possible here.


2008-08-14 23:09:44

by Mingming Cao

[permalink] [raw]
Subject: Re: [PATCH, RFC] ext4-use-generic-discard-reservations-call


在 2008-08-14四的 15:54 -0400,Theodore Ts'o写道:
> Does this patch make sense? I noticed that in the extents version of
> the truncate, we call the mballoc-specific version of
> ext4_discard_reservation(), instead of ext4_discard_reservation()
> directly. As a result, if the filesystem is mounted -o nomballoc, we
> won't throw away the reservation window when truncating or unlinking an
> extents-based file. We are using ext4_discard_reservation() in
> non-extent truncate code, which is what made me notice this.
>
> - Ted
>

Agreed.

Reviewed-by: Mingming Cao <[email protected]>

> ext4: Use ext4_discard_reservations instead of mballoc-specific call
>
> In ext4_ext_truncate(), we should use the more generic
> ext4_discard_reservations() call so we do the right thing when the
> filesystem is mounted with the nomballoc option.
>
> Signed-off-by: "Theodore Ts'o" <[email protected]>
> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
> index 3c82ab1..30a59b8 100644
> --- a/fs/ext4/extents.c
> +++ b/fs/ext4/extents.c
> @@ -2963,7 +2963,7 @@ void ext4_ext_truncate(struct inode *inode)
> down_write(&EXT4_I(inode)->i_data_sem);
> ext4_ext_invalidate_cache(inode);
>
> - ext4_mb_discard_inode_preallocations(inode);
> + ext4_discard_reservation(inode);
>
> /*
> * TODO: optimization is possible here.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html