On Thu, Mar 22, 2012 at 07:24:35PM +0100, Kai Bankett wrote: > Due to the fact that the QNX EFS Filesystem is not using any fixed > blocks and just some fixed structures, I started fighting against the > buffer head blocksize. > I think I could pretty up the code a lot if there's any way to read N > Bytes from a device at position X. > Already started to look around, but could not really find something > giving me direct position access to a device. Sure; there's no need to use buffer_heads at all. You can call submit_bio() to do reads and writes. You do have to be 512-byte aligned, but that doesn't seem to be an issue for you. btrfs, ext4, gfs2, hfsplus, jfs, logfs, nfs, nilfs2, ocfs2 and xfs all use the submit_bio interface in case you need to see some examples. > At least I would be extremly thankful if someone could point me some > direction on how to better solve the chunkreading in qnxefs_file_read(). > It's currently buffer_head based with a blocksize of 512kb. The QNX EFS > - at least the files I got hold of - uses 16384 byte Blocks in 262144 > byte logical units. > So a file is split into chunks of up to 0x4000 size, but that chunks can > vary in size. (in case of the end of a logical unit, file end etc.) -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html