Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a77d9f7d authored by Sage Weil's avatar Sage Weil
Browse files

ceph: fix file offset wrapping at 4GB on 32-bit archs



Cast the value before shifting so that we don't run out of bits with a
32-bit unsigned long.  This fixes wrapping of high file offsets into the
low 4GB of a file on disk, and the subsequent data corruption for large
files.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent 3612abbd
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -766,7 +766,8 @@ static int ceph_writepages_start(struct address_space *mapping,
			/* ok */
			if (locked_pages == 0) {
				/* prepare async write request */
				offset = page->index << PAGE_CACHE_SHIFT;
				offset = (unsigned long long)page->index
					<< PAGE_CACHE_SHIFT;
				len = wsize;
				req = ceph_osdc_new_request(&client->osdc,
					    &ci->i_layout,