Did you mix left and right shifts here? Expression doesn't make sense to me.

Also I have a little concern about consistency in usingPAGE_CACHE_SHIFT and PAGE_SHIFT. hfsplus_read_wrapper() limits visibleblock size to PAGE_SIZE, not PAGE_CACHE_SIZE. And although now theyare equal comment in linux/pagemap.h clearly says that PAGE_CACHE_SIZEcan be bigger than PAGE_SIZE. Is it something that should be fixed inhfsplus_read_wrapper() ?