 <p>Looking at the code, the default seek for block devices is in <code>fs/block_dev.c</code>:</p> <pre><code>static loff_t block_llseek(struct file *file, loff_t offset, int origin) { struct inode *bd_inode = file-&gt;f_mapping-&gt;host; loff_t size; loff_t retval; mutex_lock(&amp;bd_inode-&gt;i_mutex); size = i_size_read(bd_inode); retval = -EINVAL; switch (origin) { case SEEK_END: offset += size; break; case SEEK_CUR: offset += file-&gt;f_pos; case SEEK_SET: break; default: goto out; } if (offset &gt;= 0 &amp;&amp; offset &lt;= size) { if (offset != file-&gt;f_pos) { file-&gt;f_pos = offset; } retval = offset; } out: mutex_unlock(&amp;bd_inode-&gt;i_mutex); return retval; } </code></pre> <p>No call to the specific block device. The only particular call is to <code>i_size_read</code>, that just does some SMP magic.</p>