All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joel Becker <Joel.Becker@oracle.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [PATCH 04/15] Make extend allocation generic.
Date: Thu, 14 Aug 2008 23:26:34 -0700	[thread overview]
Message-ID: <20080815062634.GA28988@mail.oracle.com> (raw)
In-Reply-To: <48A541D5.2080102@oracle.com>

On Fri, Aug 15, 2008 at 04:44:05PM +0800, Tao Ma wrote:
> 
> 
> Joel Becker wrote:
> > On Fri, Aug 15, 2008 at 03:14:38PM +0800, Tao Ma wrote:
> >> Joel Becker wrote:
> >>> On Thu, Aug 07, 2008 at 06:31:26AM +0800, Tao Ma wrote:
> >>>> The old ocfs2_do_extend_allocation is restrictly to be used in file
> >>>> extension. Now a new function named ocfs2_do_cluster_allocation will
> >>>> handle the issue of generic extend allocation and it is created in
> >>>> suballoc.c.
> >>> <snip> 
> >>>
> >>>> +int ocfs2_add_clusters_in_btree(struct ocfs2_super *osb,
> >>>> +				struct inode *inode,
> >>>> +				u32 *logical_offset,
> >>>> +				u32 clusters_to_add,
> >>>> +				int mark_unwritten,
> >>>> +				struct buffer_head *root_bh,
> >>>> +				struct ocfs2_extent_list *root_el,
> >>>> +				handle_t *handle,
> >>>> +				struct ocfs2_alloc_context *data_ac,
> >>>> +				struct ocfs2_alloc_context *meta_ac,
> >>>> +				enum ocfs2_alloc_restarted *reason_ret,
> >>>> +				enum ocfs2_extent_tree_type type)
> >>> 	It seems to me that if you have root_bh and type, you can create
> >>> an ocfs2_extent_tree and calculate root_el from that.  So you don't need
> >>> root_el in this function's arguments, and callers don't need to know how
> >>> to compute it.
> >> No we can't. For a ocfs2_xattr_value_root. It can be stored in any place 
> >> of a buffer_head, so we have to give it to this function.
> > 
> > 	But don't you later turn a private pointer into that thing?
> I think I know your meaning now.
> I have gone through the function and it doesn't create 
> ocfs2_extent_tree. So I don't think it is worth for us to just erase a 
> "parameter" in kernel stack while doing kmalloc+kfree, right?

	Why are you kmalloc()ing at all?  Every place you use
ocfs2_extent_tree() does this:

	struct ocfs2_extent_tree *et = NULL;

	et = ocfs2_new_extent_tree(bh, type);
	do_some_alloc(et);
	if (et)
		ocfs2_free_extent_tree(et);

You never actually pass the extent tree up to the caller or store it on
a pointer somewhere.  You could just as easily do this:

	struct ocfs2_extent_tree et;

	ocfs2_fill_extent_tree(&et, bh, type);
	do_some_alloc(&et);
	ocfs2_drop_extent_tree(&et);

and never kmalloc at all.  The et just lives on the current function's
stack, safely passed to all sub functions.
	If you ever do need to allocate an extent tree, you can always
kzalloc it and then call fill_extent_tree.  But since allocating is the
very rare case, why do it by default?

Joel

-- 

"There is shadow under this red rock.
 (Come in under the shadow of this red rock)
 And I will show you something different from either
 Your shadow at morning striding behind you
 Or your shadow at evening rising to meet you.
 I will show you fear in a handful of dust."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127

  reply	other threads:[~2008-08-15  6:26 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-07  6:23 [Ocfs2-devel] [PATCH 0/15] ocfs2: Add extended attributes for ocfs2. V3 Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 01/15] Modify ocfs2_num_free_extents for future xattr usage Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 02/15] Use ocfs2_extent_list instead of ocfs2_dinode Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 03/15] Abstract ocfs2_extent_tree in b-tree operations Tao Ma
2008-08-14 19:55   ` Joel Becker
2008-08-15  7:17     ` Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 04/15] Make extend allocation generic Tao Ma
2008-08-14 20:01   ` Joel Becker
2008-08-15  7:14     ` Tao Ma
2008-08-14 23:47       ` Joel Becker
2008-08-15  8:44         ` Tao Ma
2008-08-15  6:26           ` Joel Becker [this message]
2008-08-15 15:43             ` Tao Ma
2008-08-15 17:59               ` Mark Fasheh
2008-08-15 19:18                 ` Joel Becker
2008-08-16  9:39                 ` Tao Ma
2008-08-15 19:23               ` Joel Becker
2008-08-16  9:49                 ` Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 05/15] Add xattr header in ocfs2. v3 Tao Ma
2008-08-11  0:03   ` Mark Fasheh
2008-08-10 16:49     ` [Ocfs2-devel] [PATCH 05/15] Add xattr header in ocfs2.v3 revised Tao Ma
2008-08-11  1:23       ` Mark Fasheh
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 06/15] Add helper function in uptodate for removing xattr clusters.V3 Tao Ma
2008-08-11  1:22   ` Mark Fasheh
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 07/15] Add extent tree operation for xattr value.v3 Tao Ma
2008-08-16  2:18   ` Joel Becker
2008-08-16  3:29     ` Joel Becker
2008-08-18 12:52       ` TaoMa
2008-08-16 10:40     ` TaoMa
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 10/15] Add xattr tree operations in ocfs2_extent_tree.v3 Tao Ma
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 11/15] Add xattr bucket iteration for large numbers of EAs.v11 Tao Ma
2008-08-12 21:22   ` Mark Fasheh
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 12/15] Add xattr find process for xattr index btree.v3 Tao Ma
2008-08-12 21:42   ` Mark Fasheh
2008-08-13 17:28     ` Tao Ma
2008-08-13 18:11       ` Mark Fasheh
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 13/15] Enable xattr set in index btree. v3 Tao Ma
2008-08-12  0:11   ` Mark Fasheh
2008-08-12  1:09     ` Tao Ma
2008-08-12 20:52       ` Mark Fasheh
2008-08-13 17:33         ` [Ocfs2-devel] [PATCH] Refactor ocfs2_insert_extent for not-merging Tao Ma
2008-08-13 20:32           ` Mark Fasheh
2008-08-14  1:13             ` Tao Ma
2008-08-14  2:04               ` Mark Fasheh
2008-08-14 16:22                 ` [Ocfs2-devel] [PATCH] Refactor ocfs2_insert_extent for not-merging. Revised Tao Ma
2008-08-15  3:09                   ` Mark Fasheh
2008-08-12 23:17   ` [Ocfs2-devel] [PATCH 13/15] Enable xattr set in index btree. v3 Mark Fasheh
2008-08-13  0:13     ` Tao Ma
2008-08-13  0:30       ` Mark Fasheh
2008-08-06 22:31 ` [Ocfs2-devel] [PATCH 14/15] Delete all xattr buckets in inode removal.v3 Tao Ma
2008-08-07  7:11 ` [Ocfs2-devel] [PATCH 08/15] ocfs2: reserve inline space for extended attribute Tiger Yang
2008-08-11  1:18   ` Mark Fasheh
2008-08-11  2:15     ` Tiger Yang
2008-08-07  7:11 ` [Ocfs2-devel] [PATCH 09/15] ocfs2: Add extended attribute support v3 Tiger Yang
2008-08-12  0:19   ` Mark Fasheh
2008-08-07  7:12 ` [Ocfs2-devel] [PATCH 15/15] ocfs2: Add incompatible flag for extended attribute v3 Tiger Yang

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=20080815062634.GA28988@mail.oracle.com \
    --to=joel.becker@oracle.com \
    --cc=ocfs2-devel@oss.oracle.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.