On 05/30/2012 04:57 AM, Josef Bacik wrote: > So dpkg fsync()'s the file and the directory containing the file whenever it > writes to a file which is really slow in btrfs. This is partly because > fsync()'ing a directory _always_ committed the transaction instead of just > going to the tree log. This is because drop_objectid_items() would return 1 > since it does a btrfs_search_slot() which returns 1. In tree-log jargon > this means that we have to commit the transaction to be safe. So just check > if ret is greater than 0 and set it to 0 if it does. With this patch we now > use the tree-log instead of committing the entire transaction, which is > twice as fast on my box. Thanks, > Good catch. Reviewed-by: Liu Bo <liubo2009@xxxxxxxxxxxxxx> > Signed-off-by: Josef Bacik <josef@xxxxxxxxxx> > --- > fs/btrfs/tree-log.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c > index 425014b..2017d0f 100644 > --- a/fs/btrfs/tree-log.c > +++ b/fs/btrfs/tree-log.c > @@ -2667,6 +2667,8 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans, > btrfs_release_path(path); > } > btrfs_release_path(path); > + if (ret > 0) > + ret = 0; > return ret; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
