From 1b1977513e8736786943117a147281ee8232a89d Mon Sep 17 00:00:00 2001 From: Tao Ma Date: Mon, 10 May 2010 18:09:47 +0800 Subject: [PATCH] --- yaml --- r: 195766 b: refs/heads/master c: d5a7df0649fa6a1e7800785d760e2c7d7a3204de h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ocfs2/xattr.c | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 7e6ab363caff..cf6458e2a765 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1 +refs/heads/master: d5a7df0649fa6a1e7800785d760e2c7d7a3204de diff --git a/trunk/fs/ocfs2/xattr.c b/trunk/fs/ocfs2/xattr.c index a1cf195935cf..e87130f44cb7 100644 --- a/trunk/fs/ocfs2/xattr.c +++ b/trunk/fs/ocfs2/xattr.c @@ -2135,15 +2135,18 @@ static int ocfs2_xa_prepare_entry(struct ocfs2_xa_loc *loc, orig_clusters = ocfs2_xa_value_clusters(loc); rc = ocfs2_xa_value_truncate(loc, xi->xi_value_len, ctxt); if (rc < 0) { - /* - * If we tried to grow an existing external value, - * ocfs2_xa_cleanuP-value_truncate() is going to - * let it stand. We have to restore its original - * value size. - */ - loc->xl_entry->xe_value_size = orig_value_size; ocfs2_xa_cleanup_value_truncate(loc, "growing", orig_clusters); + /* + * If we were growing an existing value, + * ocfs2_xa_cleanup_value_truncate() won't remove + * the entry. We need to restore the original value + * size. + */ + if (loc->xl_entry) { + BUG_ON(!orig_value_size); + loc->xl_entry->xe_value_size = orig_value_size; + } mlog_errno(rc); } }