mutex_lock() is not used anywhere in the ZFS code. You should replace this with the ZFS_ENTER(), ZFS_VERIFY() and ZFS_EXIT() macros as is done in other other zpl_* functions. In addition, this only needs to be done when zfs_holey() is called. You can get some idea of how this should look by looking at the Illumos gate code:

https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/fs/zfs/zfs_vnops.c#L241

Also, if you look at how Linux handles SEEK_SET, SEEK_CUR and SEEK_END, you would see that there is no use of mutex_lock() on those three cases.