[PATCH] XATTR support on JFFS2 (version. 5)

KaiGai Kohei kaigai at kaigai.gr.jp
Thu May 11 19:16:08 EDT 2006


Hi,

I'll push two patches into jffs2-xattr-2.6.git tree.
The one of them is obvious. It fixes a typo in comments.

I want any comments for another one before commiting into tree.

There is a possibility that jffs2_setup_xattr_datum() returns
-EEXIST, if a xattr_datum which has same xid and newer version
number is already registered.

The pre-patched implementation ignores this error code and
doesn't care. Theredore, total process of FS-mounting failed.
This patch fixes this problem, When we found such a obsolete
node, it will be dealt as a DIRTY_SPACE() and FS-mounting
will be continued.

It works correctly, and I belive this solution is right.

Thanks,

The broken-out patches are available at here:
http://www.kaigai.gr.jp/index.php?FrontPage#vd16984
01. jffs2-xattr-v5.2-01-fix-duplicate-xdatum.patch
02. jffs2-xattr-v5.2-02-fix_obvious_typo.patch

diff --git a/fs/jffs2/summary.c b/fs/jffs2/summary.c
index 5cde227..d7884e3 100644
--- a/fs/jffs2/summary.c
+++ b/fs/jffs2/summary.c
@@ -508,8 +508,14 @@ static int jffs2_sum_process_sum_data(st
                                 xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid),
                                                                 je32_to_cpu(spx->version));
                                 if (IS_ERR(xd)) {
-                                       JFFS2_NOTICE("allocation of xattr_datum failed\n");
                                         jffs2_free_raw_node_ref(raw);
+                                       if (PTR_ERR(xd) == -EEXIST) {
+                                               /* a newer version of xd exists */
+                                               DIRTY_SPACE(je32_to_cpu(spx->totlen));
+                                               sp += JFFS2_SUMMARY_XATTR_SIZE;
+                                               break;
+                                       }
+                                       JFFS2_NOTICE("allocation of xattr_datum failed\n");
                                         kfree(summary);
                                         return PTR_ERR(xd);
                                 }

KaiGai Kohei wrote:
> Hi,
> 
> Some fixes and updates on the todo list are already
> pushed to git://git.infradead.org/jffs2-xattr-2.6.git .
> 
> The broken-out patches are available at here:
> http://www.kaigai.gr.jp/index.php?FrontPage#vd169842
> 
> 01. jffs2-xattr-v5.1-01-remove_typedef_kernel.patch
> 02. jffs2-xattr-v5.1-02-remove_typedef_utils.patch
> 03. jffs2-xattr-v5.1-03-append_README.Locking.patch
> 04. jffs2-xattr-v5.1-04-remove_ilist_from_ic.patch
> 05. jffs2-xattr-v5.1-05-update_xattr_gc.patch
> 06. jffs2-xattr-v5.1-06-add_list.h.patch
> 07. jffs2-xattr-v5.1-07-unify_file_header.patch
> 08. jffs2-xattr-v5.1-08-remove_senseless_comment.patch
> 09. jffs2-xattr-v5.1-09-remove__KERNEL__.patch
> 10. jffs2-xattr-v5.1-10-remove_pointer_cast.patch
> 
> I hope to merge the second patch 
> (jffs2-xattr-v5.1-02-remove_typedef_utils.patch),
> because this patch is for mtd-utils.git, not jffs2-xattr-2.6.git.
> 
> P.S.
> Thanks David for your introduction about git on infradead.org.
> 
> David Woodhouse wrote:
> 
>> On Mon, 2006-05-08 at 11:03 +0900, KaiGai Kohei wrote:
>>
>>> [Current TODO list]
>>> * Fix the declaration of jffs2_acl_header and so on by using 'struct'
>>>   instead of 'typedef' in kernel space.
>>> - Fix the declaration of jffs2_acl_header and so on by using 'struct'
>>>   instead of 'typedef' in user space header.
>>> * Add documentation about xattr_sem into README.Locking.
>>> * Call jffs2_garbage_collect_xattr_datum/ref() from gc.c directly
>>>   instead of jffs2_garbage_collect_xattr()
>>> - Use unidirection list beween inode_chache and xattr_ref, instead of
>>>   list_head.
>>> - Add '#include <linux/list.h>' into xattr.h.
>>> - Unify each file header part with any jffs2 files.
>>> - Remove a senseless comment. ("/* forward refence */")
>>> - Remove unneccesary pointer casts.
>>> - Remove unneccesary '#ifdef __KERNEL__' on acl.h
>>>
>>> *: It has already prepared, but I've not publicated yet.
>>> -: It has not prepated yet. I should work from now. 
>>
>>
>>
>> That's an excellent summary; thanks. It does serve to show that we've
>> mostly picked on cosmetic details so far though :)
>>
>> If you have patches committed into a git tree, you should be able to
>> just 'git-push ssh://git.infradead.org/home/git/jffs2-xattr-2.6.git' to
>> make it available.
-- 
KaiGai Kohei <kaigai at kaigai.gr.jp>




More information about the linux-mtd mailing list