FW: [ceph-commit] ceph-client.git branch master updated. v2.6.34-20640-ge99fe63

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Verified fix for #549.

- Jan
 

-----Original Message-----
From: ceph-commit-bounces@xxxxxxxxxxxxxxxxxxxxxxx [mailto:ceph-commit-bounces@xxxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Sage Weil
Sent: donderdag 18 november 2010 1:11
To: ceph-commit@xxxxxxxxxxxxxxxxxxxxxxx
Subject: [ceph-commit] ceph-client.git branch master updated. v2.6.34-20640-ge99fe63

The branch, master has been updated
       via  e99fe63ef2b59ff58d6ed556db911037cf7562c7 (commit)
      from  7b88dadc13e0004947de52df128dbd5b0754ed0a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

http://ceph.newdream.net/git/?p=ceph.git;a=commit;h=e99fe63ef2b59ff58d6ed556db911037cf7562c7

- Log -----------------------------------------------------------------
commit e99fe63ef2b59ff58d6ed556db911037cf7562c7
Author: Sage Weil <sage@xxxxxxxxxxxx>
Date:   Wed Nov 17 16:14:25 2010 -0800

    ceph: fix readdir EOVERFLOW on 32-bit archs
    
    One of the readdir filldir_t callers was passing the raw ceph 64-bit ino
    instead of the hashed 32-bit one, producing an EOVERFLOW in the filler
    callback.  Fix this by calling the ceph_vino_to_ino() helper to do the
    conversion.
    
    Reported-by: Jan Smets <jan.smets@xxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sage Weil <sage@xxxxxxxxxxxx>

---

 fs/ceph/dir.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 5f67728..7d447af 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -358,18 +358,22 @@ more:
 		u64 pos = ceph_make_fpos(frag, off);
 		struct ceph_mds_reply_inode *in =
 			rinfo->dir_in[off - fi->offset].in;
+		struct ceph_vino vino;
+		ino_t ino;
+
 		dout("readdir off %d (%d/%d) -> %lld '%.*s' %p\n",
 		     off, off - fi->offset, rinfo->dir_nr, pos,
 		     rinfo->dir_dname_len[off - fi->offset],
 		     rinfo->dir_dname[off - fi->offset], in);
 		BUG_ON(!in);
 		ftype = le32_to_cpu(in->mode) >> 12;
+		vino.ino = le64_to_cpu(in->ino);
+		vino.snap = le64_to_cpu(in->snapid);
+		ino = ceph_vino_to_ino(vino);
 		if (filldir(dirent,
 			    rinfo->dir_dname[off - fi->offset],
 			    rinfo->dir_dname_len[off - fi->offset],
-			    pos,
-			    le64_to_cpu(in->ino),
-			    ftype) < 0) {
+			    pos, ino, ftype) < 0) {
 			dout("filldir stopping us...\n");
 			return 0;
 		}
_______________________________________________
Ceph-commit mailing list
Ceph-commit@xxxxxxxxxxxxxxxxxxxxxxx
http://lists.ceph.newdream.net/listinfo.cgi/ceph-commit-ceph.newdream.net
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux