From patchwork Thu Jan 13 23:58:43 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sage Weil X-Patchwork-Id: 476971 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p0DNqNb0028546 for ; Thu, 13 Jan 2011 23:52:23 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752291Ab1AMXwW (ORCPT ); Thu, 13 Jan 2011 18:52:22 -0500 Received: from cobra.newdream.net ([66.33.216.30]:44492 "EHLO cobra.newdream.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752085Ab1AMXwW (ORCPT ); Thu, 13 Jan 2011 18:52:22 -0500 Received: from cobra.newdream.net (localhost [127.0.0.1]) by cobra.newdream.net (Postfix) with ESMTP id 54048BC6FE; Thu, 13 Jan 2011 15:58:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=hq.newdream.net; h=date :from:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type; s=drama; bh=FFDSVhY2KB1t4/ymeW27NDQZ PvU=; b=JVjAPKU12fE9jPLUs+51/1gBmsmM9JyoPJQmw9ChBpxmqqj1RSBKEOcU f7tRUkJA6CT0XTEpbXGFDg4rlcYQ9AaIPK6TCJHxD3gRA1CBY3Y3yuU7Cz9pxLeE i/soFKaxieN4ML4rYmV4z+ugo0hwYI2FlvvdmiTAbgJ/VlbWp/4= Received: by cobra.newdream.net (Postfix, from userid 1031) id 34615BC87A; Thu, 13 Jan 2011 15:58:44 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by cobra.newdream.net (Postfix) with ESMTP id 1D667BC6FE; Thu, 13 Jan 2011 15:58:44 -0800 (PST) Date: Thu, 13 Jan 2011 15:58:43 -0800 (PST) From: Sage Weil To: Sergiy Kibrik cc: ceph-devel@vger.kernel.org Subject: Re: [PATCH] ceph: fix xattr search while getxattr In-Reply-To: <201101140107.02627.sakib@meta.ua> Message-ID: References: <201101140107.02627.sakib@meta.ua> MIME-Version: 1.0 Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 13 Jan 2011 23:52:23 +0000 (UTC) diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index 6e12a6b..8c9eba6 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -219,6 +219,7 @@ static struct ceph_inode_xattr *__get_xattr(struct ceph_inode_info *ci, struct rb_node **p; struct rb_node *parent = NULL; struct ceph_inode_xattr *xattr = NULL; + int name_len = strlen(name); int c; p = &ci->i_xattrs.index.rb_node; @@ -226,6 +227,8 @@ static struct ceph_inode_xattr *__get_xattr(struct ceph_inode_info *ci, parent = *p; xattr = rb_entry(parent, struct ceph_inode_xattr, node); c = strncmp(name, xattr->name, xattr->name_len); + if (c == 0 && name_len > xattr->name_len) + c = 1; if (c < 0) p = &(*p)->rb_left; else if (c > 0)